FAQ
2.3.5
OTRS AG
http://otrs.org/
GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007
Build for FAQ 2.3.5.
Build for FAQ 2.3.4.
Build for FAQ 2.3.3.
Build for FAQ 2.3.2.
Build for FAQ 2.3.1.
Build for FAQ 2.3.0 rc1.
Build for FAQ 2.3.0 beta3.
Build for FAQ 2.3.0 beta2.
First version for OTRS 3.3.x.
The FAQ/knowledge base.
Die FAQ-/Wissensdatenbank.
3.3.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>NOTICE</strong>
<br/>
<br/>
In order to grant users access to the faq menu, you need to add them as member to the group 'faq'.
<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/>
Um Benutzern Zugriff auf das FAQ-Menü zu gewähren, müssen diese Mitglied der neuen Gruppe 'faq' sein.
<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/>
Para poder permitir el acceso a los usuarios al menú de faq, usted necesita agregarlos como miembros del grupo 'faq'.<br/>
<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>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/>
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/>
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/>
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>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/>
# define function name
my $FunctionName = 'CodeInstall';
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
# load the module
if ( $Self->{MainObject}->Require($CodeModule) ) {
# create new instance
my $CodeObject = $CodeModule->new( %{$Self} );
if ($CodeObject) {
# start method
if ( !$CodeObject->$FunctionName(%{$Self}) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method $FunctionName() on $CodeModule.pm."
);
}
}
# error handling
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method new() on $CodeModule.pm."
);
}
}
# define function name
my $FunctionName = 'CodeUpgrade';
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
# load the module
if ( $Self->{MainObject}->Require($CodeModule) ) {
# create new instance
my $CodeObject = $CodeModule->new( %{$Self} );
if ($CodeObject) {
# start method
if ( !$CodeObject->$FunctionName(%{$Self}) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method $FunctionName() on $CodeModule.pm."
);
}
}
# error handling
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method new() on $CodeModule.pm."
);
}
}
# define function name
my $FunctionName = 'CodeUpgradeSpecial';
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
# load the module
if ( $Self->{MainObject}->Require($CodeModule) ) {
# create new instance
my $CodeObject = $CodeModule->new( %{$Self} );
if ($CodeObject) {
# start method
if ( !$CodeObject->$FunctionName(%{$Self}) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method $FunctionName() on $CodeModule.pm."
);
}
}
# error handling
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method new() on $CodeModule.pm."
);
}
}
# define function name
my $FunctionName = 'CodeUninstall';
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
# load the module
if ( $Self->{MainObject}->Require($CodeModule) ) {
# create new instance
my $CodeObject = $CodeModule->new( %{$Self} );
if ($CodeObject) {
# start method
if ( !$CodeObject->$FunctionName(%{$Self}) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method $FunctionName() on $CodeModule.pm."
);
}
}
# error handling
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method new() on $CodeModule.pm."
);
}
}
# define function name
my $FunctionName = 'CodeReinstall';
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
# load the module
if ( $Self->{MainObject}->Require($CodeModule) ) {
# create new instance
my $CodeObject = $CodeModule->new( %{$Self} );
if ($CodeObject) {
# start method
if ( !$CodeObject->$FunctionName(%{$Self}) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method $FunctionName() on $CodeModule.pm."
);
}
}
# error handling
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Could not call method new() on $CodeModule.pm."
);
}
}
2016-06-28 05:48:59
opms.otrs.com
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBvdHJzLkZBUUltcG9ydC5wbCAtIEZBUSBpbXBvcnQgc2NyaXB0CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBRkZFUk8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgojIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQojIG9yIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy9LZXJuZWwvY3Bhbi1saWInOwoKdXNlIEdldG9wdDo6U3RkOwp1c2UgS2VybmVsOjpDb25maWc7CnVzZSBLZXJuZWw6OlN5c3RlbTo6REI7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RW5jb2RlOwp1c2UgS2VybmVsOjpTeXN0ZW06OkNTVjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpMb2c7CnVzZSBLZXJuZWw6OlN5c3RlbTo6TWFpbjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpUaW1lOwp1c2UgS2VybmVsOjpTeXN0ZW06Okdyb3VwOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnVzZSB2YXJzIHF3KCRSZWFsQmluKTsKCiMgY3JlYXRlIGNvbW1vbiBvYmplY3RzCm15ICVDb21tb25PYmplY3Q7CiRDb21tb25PYmplY3R7VXNlcklEfSAgICAgICA9IDE7CiRDb21tb25PYmplY3R7Q29uZmlnT2JqZWN0fSA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKJENvbW1vbk9iamVjdHtMb2dPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkxvZy0+bmV3KAogICAgTG9nUHJlZml4ID0+ICdPVFJTLUZBUUltcG9ydCcsCiAgICAlQ29tbW9uT2JqZWN0LAopOwokQ29tbW9uT2JqZWN0e0NTVk9iamVjdH0gICAgPSBLZXJuZWw6OlN5c3RlbTo6Q1NWLT5uZXcoJUNvbW1vbk9iamVjdCk7CiRDb21tb25PYmplY3R7RW5jb2RlT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpFbmNvZGUtPm5ldyglQ29tbW9uT2JqZWN0KTsKJENvbW1vbk9iamVjdHtNYWluT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06Ok1haW4tPm5ldyglQ29tbW9uT2JqZWN0KTsKJENvbW1vbk9iamVjdHtEQk9iamVjdH0gICAgID0gS2VybmVsOjpTeXN0ZW06OkRCLT5uZXcoJUNvbW1vbk9iamVjdCk7CiRDb21tb25PYmplY3R7VGltZU9iamVjdH0gICA9IEtlcm5lbDo6U3lzdGVtOjpUaW1lLT5uZXcoJUNvbW1vbk9iamVjdCk7CiRDb21tb25PYmplY3R7R3JvdXBPYmplY3R9ICA9IEtlcm5lbDo6U3lzdGVtOjpHcm91cC0+bmV3KCVDb21tb25PYmplY3QpOwokQ29tbW9uT2JqZWN0e0ZBUU9iamVjdH0gICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJUNvbW1vbk9iamVjdCk7CgojIGdldCBvcHRpb25zCm15ICVPcHRzOwpnZXRvcHQoICdoaXNxJywgXCVPcHRzICk7CgppZiAoIGV4aXN0cyAkT3B0c3tofSApIHsKICAgIHByaW50IFNURE9VVCAiXG4iOwogICAgcHJpbnQgU1RET1VUICJvdHJzLkZBUUltcG9ydC5wbCAtIGEgRkFRIGltcG9ydCB0b29sXG4iOwogICAgcHJpbnQgU1RET1VUICJDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vXG4iOwogICAgcHJpbnQgU1RET1VUICIgICB1c2FnZTogXG4iOwogICAgcHJpbnQgU1RET1VUICIgICAgICBvdHJzLkZBUUltcG9ydC5wbCAtaSA8SW1wb3J0RmlsZT4gWy1zIDxzZXBhcmF0b3I+XSBbLXEgPHF1b3RlPl1cbiI7CiAgICBwcmludCBTVERPVVQgIlxuIjsKICAgIHByaW50IFNURE9VVCAiICAgZXhhbXBsZXM6XG4iOwogICAgcHJpbnQgU1RET1VUICIgICAgICAgb3Rycy5GQVFJbXBvcnQucGwgLWkgZmFxLmNzdlxuIjsKICAgIHByaW50IFNURE9VVCAiICAgICAgIG90cnMuRkFRSW1wb3J0LnBsIC1pIGZhcS5jc3YgLXMgJ3wnIC1xICdcIicgXG4iOwogICAgcHJpbnQgU1RET1VUICJcbiI7CiAgICBwcmludCBTVERPVVQgIiAgIEZvcm1hdCBvZiB0aGUgQ1NWIGZpbGU6XG4iOwogICAgcHJpbnQgU1RET1VUICcgICAgICAgInRpdGxlIjsiY2F0ZWdvcnkiOyJsYW5ndWFnZSI7InN0YXRldHlwZSI7JzsKICAgIHByaW50IFNURE9VVCAnImZpZWxkMSI7ImZpZWxkMiI7ImZpZWxkMyI7ImZpZWxkNCI7ImZpZWxkNSI7ImZpZWxkNiI7ImtleXdvcmRzIicgLiAiXG4iOwogICAgcHJpbnQgU1RET1VUICJcbiI7CiAgICBleGl0IDE7Cn0KCiMgY2hlY2sgYWN0aW9uIG1vZGUKaWYgKCAhJE9wdHN7aX0gKSB7CiAgICBwcmludCBTVERFUlIgIkVSUk9SOiBOZWVkIC1pIDxJbXBvcnRGaWxlPlxuIjsKICAgIGV4aXQgMTsKfQoKcHJpbnQgU1RET1VUICJSZWFkIEZpbGUgJE9wdHN7aX0uXG4iOwoKIyByZWFkIHNvdXJjZSBmaWxlCm15ICRDU1ZTdHJpbmdSZWYgPSAkQ29tbW9uT2JqZWN0e01haW5PYmplY3R9LT5GaWxlUmVhZCgKICAgIExvY2F0aW9uID0+ICRPcHRze2l9LAogICAgUmVzdWx0ICAgPT4gJ1NDQUxBUicsCiAgICBNb2RlICAgICA9PiAnYmlubW9kZScsCik7CmRpZSAiQ2FuJ3QgcmVhZCBmaWxlICRPcHRze2l9LlxuSW1wb3J0IGFib3J0ZWQuXG4iIGlmICEkQ1NWU3RyaW5nUmVmOwoKcHJpbnQgU1RET1VUICJJbXBvcnQgaW4gcHJvY2Vzcy4uLlxuIjsKCiMgcmVhZCBjc3YgZGF0YQpteSAkRGF0YVJlZiA9ICRDb21tb25PYmplY3R7Q1NWT2JqZWN0fS0+Q1NWMkFycmF5KAogICAgU3RyaW5nICAgID0+ICQkQ1NWU3RyaW5nUmVmLAogICAgU2VwYXJhdG9yID0+ICRPcHRze3N9IHx8ICc7JywKICAgIFF1b3RlICAgICA9PiAkT3B0c3txfSB8fCAnIicsCik7CmRpZSAiXG5FcnJvciBvY2N1cnJlZC4gSW1wb3J0IGltcG9zc2libGUhIFNlZSBTeXNsb2cgZm9yIGRldGFpbHMuXG4iIGlmICFkZWZpbmVkICREYXRhUmVmOwoKIyBnZXQgYWxsIEZBUSBsYW5ndWFnZSBpZHMKbXkgJUxhbmd1YWdlSUQgPSByZXZlcnNlICRDb21tb25PYmplY3R7RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgVXNlcklEID0+IDEsCik7CgojIGdldCBhbGwgc3RhdGUgdHlwZSBpZHMKbXkgJVN0YXRlVHlwZUlEID0gcmV2ZXJzZSAleyAkQ29tbW9uT2JqZWN0e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoIFVzZXJJRCA9PiAxICkgfTsKCiMgZ2V0IGdyb3VwIGlkIGZvciBmYXEgZ3JvdXAKbXkgJEZBUUdyb3VwSUQgPSAkQ29tbW9uT2JqZWN0e0dyb3VwT2JqZWN0fS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCA9PiAnZmFxJywKKTsKCm15ICRMaW5lQ291bnRlcjsKUk9XOgpmb3IgbXkgJFJvd1JlZiAoIEB7JERhdGFSZWZ9ICkgewoKICAgICRMaW5lQ291bnRlcisrOwoKICAgIG15ICgKICAgICAgICAkVGl0bGUsICRDYXRlZ29yeVN0cmluZywgJExhbmd1YWdlLCAkU3RhdGVUeXBlLAogICAgICAgICRGaWVsZDEsICRGaWVsZDIsICRGaWVsZDMsICRGaWVsZDQsICRGaWVsZDUsICRGaWVsZDYsICRLZXl3b3JkcwogICAgKSA9IEB7JFJvd1JlZn07CgogICAgIyBjaGVjayBsYW5ndWFnZQogICAgaWYgKCAhJExhbmd1YWdlSUR7JExhbmd1YWdlfSApIHsKICAgICAgICBwcmludCBTVERPVVQKICAgICAgICAgICAgIkVycm9yOiBDb3VsZCBub3QgaW1wb3J0IGxpbmUgJExpbmVDb3VudGVyLiBMYW5ndWFnZSAnJExhbmd1YWdlJyBkb2VzIG5vdCBleGlzdC5cbiI7CiAgICAgICAgbmV4dCBST1c7CiAgICB9CgogICAgIyBjaGVjayBzdGF0ZSB0eXBlCiAgICBpZiAoICEkU3RhdGVUeXBlSUR7JFN0YXRlVHlwZX0gKSB7CiAgICAgICAgcHJpbnQgU1RET1VUCiAgICAgICAgICAgICJFcnJvcjogQ291bGQgbm90IGltcG9ydCBsaW5lICRMaW5lQ291bnRlci4gU3RhdGUgJyRTdGF0ZVR5cGUnIGRvZXMgbm90IGV4aXN0LlxuIjsKICAgICAgICBuZXh0IFJPVzsKICAgIH0KCiAgICAjIGdldCBzdWJjYXRlZ29yaWVzCiAgICBteSBAQ2F0ZWdvcnlBcnJheSA9IHNwbGl0IC86Oi8sICRDYXRlZ29yeVN0cmluZzsKCiAgICAjIGNoZWNrIGVhY2ggc3ViY2F0ZWdvcnkgaWYgaXQgZXhpc3RzCiAgICBteSAkQ2F0ZWdvcnlJRDsKICAgIG15ICRQYXJlbnRJRCA9IDA7CiAgICBmb3IgbXkgJENhdGVnb3J5IChAQ2F0ZWdvcnlBcnJheSkgewoKICAgICAgICAjIGdldCB0aGUgY2F0ZWdvcnkgaWQKICAgICAgICAkQ29tbW9uT2JqZWN0e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfY2F0ZWdvcnkgJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgdmFsaWRfaWQgPSAxIEFORCBuYW1lID0gPyBBTkQgcGFyZW50X2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRDYXRlZ29yeSwgXCRQYXJlbnRJRCBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICAgICAgbXkgQFJlc3VsdDsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkQ29tbW9uT2JqZWN0e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICBwdXNoKCBAUmVzdWx0LCAkUm93WzBdICk7CiAgICAgICAgfQogICAgICAgICRDYXRlZ29yeUlEID0gJFJlc3VsdFswXTsKCiAgICAgICAgIyBjcmVhdGUgY2F0ZWdvcnkgaWYgaXQgZG9lcyBub3QgZXhpc3QKICAgICAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICAgICAgJENhdGVnb3J5SUQgPSAkQ29tbW9uT2JqZWN0e0ZBUU9iamVjdH0tPkNhdGVnb3J5QWRkKAogICAgICAgICAgICAgICAgTmFtZSAgICAgPT4gJENhdGVnb3J5LAogICAgICAgICAgICAgICAgUGFyZW50SUQgPT4gJFBhcmVudElELAogICAgICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBuZXcgY2F0ZWdvcnkgdG8gZmFxIGdyb3VwCiAgICAgICAgICAgICRDb21tb25PYmplY3R7RkFRT2JqZWN0fS0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBHcm91cElEcyAgID0+IFskRkFRR3JvdXBJRF0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgcGFyZW50IGlkCiAgICAgICAgJFBhcmVudElEID0gJENhdGVnb3J5SUQ7CiAgICB9CgogICAgIyBjaGVjayBjYXRlZ29yeQogICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgcHJpbnQgU1RET1VUCiAgICAgICAgICAgICJFcnJvcjogQ291bGQgbm90IGltcG9ydCBsaW5lICRMaW5lQ291bnRlci4gQ2F0ZWdvcnkgJyRDYXRlZ29yeVN0cmluZycgY291bGQgbm90IGJlIGNyZWF0ZWQuXG4iOwogICAgICAgIG5leHQgUk9XOwogICAgfQoKICAgICMgY29udmVydCBTdGF0ZVR5cGUgdG8gU3RhdGUKICAgIG15ICVTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJENvbW1vbk9iamVjdHtGQVFPYmplY3R9LT5TdGF0ZUxpc3QoIFVzZXJJRCA9PiAxICk7CiAgICBteSAkU3RhdGVJRDsKCiAgICBTVEFURU5BTUU6CiAgICBmb3IgbXkgJFN0YXRlTmFtZSAoIHNvcnQga2V5cyAlU3RhdGVMb29rdXAgKSB7CiAgICAgICAgaWYgKCAkU3RhdGVOYW1lID1+IG17XEEgJFN0YXRlVHlwZSB9bXN4aSApIHsKICAgICAgICAgICAgJFN0YXRlSUQgPSAkU3RhdGVMb29rdXB7JFN0YXRlTmFtZX07CiAgICAgICAgICAgIGxhc3QgU1RBVEVOQU1FOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCBGQVEgYXJ0aWNsZQogICAgbXkgJEZBUUlEID0gJENvbW1vbk9iamVjdHtGQVFPYmplY3R9LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICA9PiAkVGl0bGUsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBTdGF0ZUlEICAgID0+ICRTdGF0ZUlELAogICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUR7JExhbmd1YWdlfSwKICAgICAgICBGaWVsZDEgICAgID0+ICRGaWVsZDEsCiAgICAgICAgRmllbGQyICAgICA9PiAkRmllbGQyLAogICAgICAgIEZpZWxkMyAgICAgPT4gJEZpZWxkMywKICAgICAgICBGaWVsZDQgICAgID0+ICRGaWVsZDQsCiAgICAgICAgRmllbGQ1ICAgICA9PiAkRmllbGQ1LAogICAgICAgIEZpZWxkNiAgICAgPT4gJEZpZWxkNiwKICAgICAgICBLZXl3b3JkcyAgID0+ICRLZXl3b3JkcyB8fCAnJywKICAgICAgICBBcHByb3ZlZCAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIHN1Y2Nlc3MKICAgIGlmICggISRGQVFJRCApIHsKICAgICAgICBwcmludCBTVERPVVQgIkVycm9yOiBDb3VsZCBub3QgaW1wb3J0IGxpbmUgJExpbmVDb3VudGVyLlxuIjsKICAgICAgICBuZXh0IFJPVzsKICAgIH0KfQoKcHJpbnQgU1RET1VUICJJbXBvcnQgY29tcGxldGUuXG4iOwoKZXhpdCAwOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBmYXEucGwgLSB0aGUgZ2xvYmFsIENHSSBoYW5kbGUgZmlsZSBmb3IgT1RSUwojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQUZGRVJPIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKIyBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKIyBvciBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIHVzZSAuLi8uLi8gYXMgbGliIGxvY2F0aW9uCnVzZSBGaW5kQmluIHF3KCRCaW4pOwp1c2UgbGliICIkQmluLy4uLy4uIjsKdXNlIGxpYiAiJEJpbi8uLi8uLi9LZXJuZWwvY3Bhbi1saWIiOwp1c2UgbGliICIkQmluLy4uLy4uL0N1c3RvbSI7CgojIDA9b2ZmOzE9b247Cm15ICREZWJ1ZyA9IDA7CgpwcmludCAibG9jYXRpb246IHB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXJcbiI7CnByaW50ICJcbiI7CnByaW50ICI8YSBocmVmPSdwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyJz5tb3ZlZDwvYT5cbiI7Cg==
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBmYXEucGwgLSB0aGUgZ2xvYmFsIENHSSBoYW5kbGUgZmlsZSBmb3IgT1RSUwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEyIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLm9yZy8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQUZGRVJPIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKIyBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKIyBvciBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIHVzZSAuLi8uLi8gYXMgbGliIGxvY2F0aW9uCnVzZSBGaW5kQmluIHF3KCRCaW4pOwp1c2UgbGliICIkQmluLy4uLy4uIjsKdXNlIGxpYiAiJEJpbi8uLi8uLi9LZXJuZWwvY3Bhbi1saWIiOwp1c2UgbGliICIkQmluLy4uLy4uL0N1c3RvbSI7Cgp1c2UgdmFycyBxdyhASU5DKTsKCiMgMD1vZmY7MT1vbjsKbXkgJERlYnVnID0gMDsKCiMgY2hlY2sgQElOQyBmb3IgbW9kX3BlcmwgKGFkZCBsaWIgcGF0aCBmb3IgInJlcXVpcmUgbW9kdWxlIiEpCnB1c2ggKEBJTkMsICIkQmluLy4uLy4uIiwgIiRCaW4vLi4vLi4vS2VybmVsL2NwYW4tbGliIik7CgpwcmludCAibG9jYXRpb246IHB1YmxpYy5mcGw/QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyXG4iOwpwcmludCAiXG4iOwpwcmludCAiPGEgaHJlZj0ncHVibGljLmZwbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXInPm1vdmVkPC9hPlxuIjsK
iVBORw0KGgoAAAANSUhEUgAABbsAAAObCAIAAAD14cvUAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAfQAAAH0AG5i+efAAAgAElEQVR4nOzdeVxTx/o/8AkkkITdBQVFBEWKVnDBDUVxBbFVQVzrUuveuuCVUFurUr60FFosYLXXulRksVIQvGARvSgKgmsBV3ABFJAtKohAgJD8/ji/e25ugBAwkICf9x99ncyZM/OclJHwZM4MQywWEwAAAAAAAAAAkKCm7AAAAAAAAAAAAFQOMiYAAAAAAAAAANKQMQEAAAAAAAAAkIaMCQAAAAAAAACANKbkC4FAcPv27ezs7PLy8rq6Ok1Nzd69e1taWtra2rLZbLqal5eXPE1T1aQqa2hoGBgYWFhY2NnZcbncpleJRKLbt2/fu3evrKysrq6OyWTq6ur26dNn4MCBI0eOZDKZTS+hPX/+PCMjo7S0tKKiQiAQMJlMfX19CwuLCRMmaGtryxNzRUVFcnLykydPampquFzu4MGDHRwc9PX15b/ftp4CSdQbtXPnTsmfNwAAAAAAAIDO998ERG5ubnR0dHV1tYaGhomJCZfLrampKSwsLCgoSE9PX7Bggbm5OVVzxIgRkk00NjbevXu3abmk4cOHq6urE0IEAsGzZ89SU1Pv3r27du1aHR0dyWp1dXVhYWEFBQVMJtPExERHR6e+vr68vPz+/fv379+3tLTU1dWVcTNPnjzJyMgwMDDo378/m82uq6srLCy8evVqRkbGypUr+/btK/u9KCkpCQkJqa2tNTQ0HDhwYHl5eWZmZk5OzurVqw0NDWVf2/ROAQAAAAAAAKDr+v8Zk/z8/PDwcJFINHnyZHt7exaLRZULhcLU1NTLly+Hh4evXLnS1NSUEDJ//nzJJgQCAZUxkSqXNGfOHHrWQF1d3cmTJ/Pz8y9evDhv3jzJasnJyQUFBaamposWLdLS0qLLX79+nZmZKXuCCSHE2tp67NixktNJhEJhfHx8Zmbm2bNn16xZI+NasVgcExNTW1s7derUKVOmUIVXrly5ePFiTEzM+vXrGQyG7N6b3ikAAAAAAAAAdFFqhJCGhoaYmJjGxsZZs2ZNmzaNTpcQQphMpoODg5OTU2Nj4+nTp4VC4bt3qampOWvWLEJITk6O1Kn79+8TQpydnSXTJYQQAwODqVOnNvsUj6RevXpJ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uXPnHj58uNueHgAAAAAAdJc+uyvnypUrQUFBCQkJixcvvnr16g8//CCE2L59+8GDB9PS0iZMmPD111+vXr1aoVC8/vrr0i2xsbHvvPOOk5OTs7OzHKe+vv706dNywcXImjVrvv/++7/97W///Oc/X3rpJaOrjz76aFpaWvc8HwAAAAAA6EZ9tmJy/fr15ubm3/72t8OHDx8+fLgQ4vbt2zt27Pj0008nTZokhHBxcUlMTHz55Zflism2bdsee+wxoziXLl1qbGx84IEHWk6h1WqPHDmSm5v78MMPCyFefvnlsLAwwwHDhw//9ttvu+PpAAAAAABAt+qzFZNx48Y9/vjjjz/++Pz583/729/6+vpWVFRotdr//M//lMfodLpbt241NjZKH6VKipGff/5ZCNHqmUDffvttU1OTfFfL2/v379/Q0NDQ0NCvX78ueSjT6urqWh6/BAAAAAAAOqF3V0wMX/EthJAOJZFYW1ufPHmysLAwPz8/KCjoyJEj0vuxP/nkE0dHR8O7bGz+70tQKpUtpxgwYIAQ4saNG4MGDTInB0NarValUt2Fcsn3338fGxur1+vffffd7p4LAAAAwL1Gq9X+/e9/f++99yydCPq4L774wsPDw9JZ/EvvrphI5Yxr165Ja0DOnTtneNXGxmbu3Llz586dNWvWM8888+677zo4OHz33XePPvqo+VM88MADSqXy0qVLLi4uRpdGjRplY2Pz2WefzZo1Swhx5swZowHff//9yJEjO/Fc5vv++++jo6MzMzP1ev358+e7dS4AAAAA96b+/ft/8MEHRi+7ALrcjz/+aGdnZ+ks/qV3V0wefPDBX/7ylzExMVu3br1w4YLh+ax///vfT506NXv2bKVSmZOT4+rqam9vHxUVFRISUl9fP3369Nu3b58+ffrrr7/esmWLiSlUKtXkyZNPnz49ZcoUo0v9+/dftGhRRERERkZGbW3t3r17jQb8z//8z9SpU7vqYY1ItZL3339fej+0t7e3SqX67rvvzLn3yy+/NHNkq27cuHH79u1O325BGo1GCHEnzw4AAADcm8LCwni7MLqb9HZhS2fxL727YmJtbf3HP/5x9erVY8eOffzxx6Ojo1944QXpUv/+/Y8ePRoVFdXQ0DBp0qQ///nPQoiNGzcOGTIkKSlpxYoVSqVywoQJq1atancWX1/f48ePv/LK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AI8y3mMCAAAAAACg9P8Ao4AV2Y1KBXcAAAAASUVORK5CYII=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkludGVyZmFjZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPmludGVybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+ZXh0ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+SW50ZXJmYWNlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+ZXh0ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5JbnRlcmZhY2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpEZWZhdWx0OjpSb290Q2F0ZWdvcnlOYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgY2F0ZWdvcnkgbmFtZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5GQVE8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkRlZmF1bHQ6OlJvb3RDYXRlZ29yeUNvbW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBjYXRlZ29yeSBuYW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPmRlZmF1bHQgY29tbWVudDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW06OlZvdGluZzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMDAiPjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ijc1Ij40PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI1MCI+MzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OlZvdGluZzo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6SXRlbTo6Vm90aW5nPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImludGVybmFsIj5pbnRlcm5hbCAoYWdlbnQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJleHRlcm5hbCI+ZXh0ZXJuYWwgKGN1c3RvbWVyKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlBhdGg6OlNob3ciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBGQVEgcGF0aCB5ZXMvbm8uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpJdGVtTGlzdDo6Vm90aW5nUmVzdWx0RGVjaW1hbFBsYWNlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+MjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHRDb2xvcnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+cmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI3MCI+b3JhbmdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMDAiPmdyZWVuPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2VwYXJhdG9yIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBwYXRoIHNlcGFyYXRvci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+wrs8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icHVibGljIj5wdWJsaWMgKHB1YmxpYyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q2hhbmdlOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImludGVybmFsIj5pbnRlcm5hbCAoYWdlbnQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJleHRlcm5hbCI+ZXh0ZXJuYWwgKGN1c3RvbWVyKTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icHVibGljIj5wdWJsaWMgKHB1YmxpYyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q2hhbmdlOjpTaG93U3ViQ2F0ZWdvcnlJdGVtcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q2hhbmdlOjpMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz4zPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpFeHBsb3Jlcjo6TGFzdENyZWF0ZTo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iaW50ZXJuYWwiPmludGVybmFsIChhZ2VudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImV4dGVybmFsIj5leHRlcm5hbCAoY3VzdG9tZXIpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwdWJsaWMiPnB1YmxpYyAocHVibGljKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okxhc3RDcmVhdGU6OlNob3dTdWJDYXRlZ29yeUl0ZW1zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okxhc3RDcmVhdGU6OkxpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjM8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpUb3AxMDo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iaW50ZXJuYWwiPmludGVybmFsIChhZ2VudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImV4dGVybmFsIj5leHRlcm5hbCAoY3VzdG9tZXIpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwdWJsaWMiPnB1YmxpYyAocHVibGljKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlRvcDEwOjpMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz4xMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlRvcDEwOjpTaG93U3ViQ2F0ZWdvcnlJdGVtcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZBUUhvb2siIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPkZBUSM8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkRlZmF1bHQ6OlN0YXRlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5pbnRlcm5hbCAoYWdlbnQpPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbFJlcXVpcmVkIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk5ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkFwcHJvdmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbEdyb3VwIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkFwcHJvdmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5mYXFfYXBwcm92YWw8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkFwcHJvdmFsUXVldWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6QXBwcm92YWw8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPkZBUV9BcHByb3ZhbDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KCiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkFwcHJvdmFsVGlja2V0U3ViamVjdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6QXBwcm92YWw8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPkZBUSBhcHByb3ZhbCByZXF1aXJlZCBmb3IgRkFRIyAmbHQ7T1RSU19GQVFfTlVNQkVSJmd0OzwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6QXBwcm92YWxUaWNrZXRCb2R5IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpBcHByb3ZhbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxUZXh0QXJlYT5IaSwKCmEgbmV3IEZBUSBhcnRpY2xlIG5lZWRzIHlvdXIgYXBwcm92YWwgYmVmb3JlIGl0IGNhbiBiZSBwdWJsaXNoZWQuCgogIEZBUSMgICA6ICZsdDtPVFJTX0ZBUV9OVU1CRVImZ3Q7CiAgVGl0bGUgIDogJmx0O09UUlNfRkFRX1RJVExFJmd0OwogIEF1dGhvciA6ICZsdDtPVFJTX0ZBUV9BVVRIT1ImZ3Q7CiAgU3RhdGUgIDogJmx0O09UUlNfRkFRX1NUQVRFJmd0OwoKSWYgeW91IHdhbnQgdG8gZG8gdGhpcywgY2xpY2sgb24gdGhpcyBsaW5rOgoKJmx0O09UUlNfQ09ORklHX0h0dHBUeXBlJmd0OzovLyZsdDtPVFJTX0NPTkZJR19GUUROJmd0Oy8mbHQ7T1RSU19DT05GSUdfU2NyaXB0QWxpYXMmZ3Q7aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9Jmx0O09UUlNfRkFRX0lURU1JRCZndDsKCllvdXIgT1RSUyBOb3RpZmljYXRpb24gTWFzdGVyCiAgICAgICAgICAgIDwvVGV4dEFyZWE+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbFRpY2tldFByaW9yaXR5IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpBcHByb3ZhbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+MyBub3JtYWw8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkFwcHJvdmFsVGlja2V0RGVmYXVsdFN0YXRlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpBcHByb3ZhbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+bmV3PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbFRpY2tldFR5cGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6QXBwcm92YWw8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPlVuY2xhc3NpZmllZDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW08L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+cHVibGljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIj5TeW1wdG9tPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkMiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPnB1YmxpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FwdGlvbiI+UHJvYmxlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MjAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpJdGVtOjpGaWVsZDMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6SXRlbTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93Ij5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhcHRpb24iPlNvbHV0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkNCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FwdGlvbiI+RmllbGQ0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj40MDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkNSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FwdGlvbiI+RmllbGQ1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj41MDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkNiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPmludGVybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIj5Db21tZW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj42MDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsjIyM4MzAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSAnRkFRJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyICdGQVEnIG9iamVjdHMgdXNpbmcgdGhlICdOb3JtYWwnIGxpbmsgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpMaW5rT2JqZWN0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MiI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5Ob3JtYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsjIyM4MzAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSAnRkFRJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyICdGQVEnIG9iamVjdHMgdXNpbmcgdGhlICdQYXJlbnRDaGlsZCcgbGluayB0eXBlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZyYW1ld29yazwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkxpbmtPYmplY3Q8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPlBhcmVudENoaWxkPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTGlua09iamVjdDo6UG9zc2libGVMaW5rIyMjODMwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgJ0ZBUScgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciAnVGlja2V0JyBvYmplY3RzIHVzaW5nIHRoZSAnTm9ybWFsJyBsaW5rIHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RnJhbWV3b3JrPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6TGlua09iamVjdDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDIiPlRpY2tldDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+Tm9ybWFsPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTGlua09iamVjdDo6UG9zc2libGVMaW5rIyMjODMwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgJ0ZBUScgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciAnVGlja2V0JyBvYmplY3RzIHVzaW5nIHRoZSAnUGFyZW50Q2hpbGQnIGxpbmsgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpMaW5rT2JqZWN0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MiI+VGlja2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5QYXJlbnRDaGlsZDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUV4cGxvcmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEtQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEtQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+TWVudTwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+SXRlbUFyZWE8L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYW1lPkZBUTwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+cTwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjM1MDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEV4cGxvcmVyPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZT5FeHBsb3JlcjwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PmU8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz45MTA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQWdlbnQuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFFeHBsb3JlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkN1c3RvbWVyIEZBUTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWU+RkFRPC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyPC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxUeXBlPk1lbnU8L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PjwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjcwMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+RkFRIEV4cGxvcmVyPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZT5GQVEgRXhwbG9yZXI8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+U3VibWVudTwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+PC9CbG9jaz4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+ZjwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjcxMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZXRhaWwuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5XaWRnZXQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTU19JRTc+RkFRLkN1c3RvbWVyLkRlZmF1bHQuSUU3LmNzczwvQ1NTX0lFNz4KICAgICAgICAgICAgICAgICAgICA8Q1NTX0lFNz5GQVEuV2lkZ2V0LklFNy5jc3M8L0NTU19JRTc+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSwzfSQiPjQwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld0V4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJGQVFJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPkNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+TGFuZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEb3duIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVcCI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpDb21tb25QYXJhbSMjI0FjdGlvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPlB1YmxpY0ZBUUV4cGxvcmVyPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUUV4cGxvcmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5QdWJsaWMgZmFxPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxUaXRsZT48L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+RkFRLUFyZWE8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxOYW1lPkZBUTwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249UHVibGljRkFRRXhwbG9yZXI8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+PC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5mPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+NDAwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLldpZGdldC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTX0lFNz5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5JRTcuY3NzPC9DU1NfSUU3PgogICAgICAgICAgICAgICAgICAgIDxDU1NfSUU3PkZBUS5XaWRnZXQuSUU3LmNzczwvQ1NTX0lFNz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUUV4cGxvcmVyIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDN9JCI+NDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFFeHBsb3JlciMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPlRpdGxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGQVFJRCI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhbmd1YWdlIj5MYW5ndWFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFFeHBsb3JlciMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVwIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUVJTUyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+UHVibGljIGZhcTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpJdGVtOjpIVE1MIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW08L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZSMjIzMtRkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZU1ldGFIZWFkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkhlYWRlck1ldGFGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpIZWFkZXJNZXRhTW9kdWxlIyMjMy1GQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVNZXRhSGVhZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpDdXN0b21lckhlYWRlck1ldGFGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+Q3VzdG9tZXJGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZSMjIzMtRkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVNZXRhSGVhZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpQdWJsaWNIZWFkZXJNZXRhRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPlB1YmxpY0ZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpPdXRwdXQ6OkZpbHRlckVsZW1lbnRQb3N0IyMjRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hlcmUgdGhlICdJbnNlcnQgRkFRJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6T3V0cHV0RmlsdGVyRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWJ1ZyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGVtcGxhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFBob25lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0RW1haWwiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRDb21wb3NlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Rm9yd2FyZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6T3V0cHV0OjpPdXRwdXRGaWx0ZXJUZXh0QXV0b0xpbmsjIyNGQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZyYW1ld29yazwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OldlYjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZWdFeHAiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+KEZBUSlbI1xzXSo/MShcZHs0fSk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVVJMMSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVUkwiPi9vdHJzL2luZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSZsdDtNQVRDSDImZ3Q7PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkltYWdlIj5oZWxwLXNtYWxsLnBuZzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPl9ibGFuazwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFBZGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUS1BcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxUaXRsZT5GQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OZXcgRkFRIEFydGljbGU8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxOYW1lPk5ldzwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFBZGQ8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5uPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+OTIwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkFnZW50LkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUVkaXQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUSBFZGl0PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZT5FZGl0PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQWdlbnQuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRTGFuZ3VhZ2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXFfYWRtaW48L0dyb3VwPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUS1BcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZT5GQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxX2FkbWluPC9Hcm91cD4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MYW5ndWFnZSBNYW5hZ2VtZW50PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPkxhbmd1YWdlIE1hbmFnZW1lbnQ8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT51PC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+OTQwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxKYXZhU2NyaXB0PkZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFDYXRlZ29yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcV9hZG1pbjwvR3JvdXA+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+RkFRLUFyZWE8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPFRpdGxlPkZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxHcm91cD5mYXFfYWRtaW48L0dyb3VwPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNhdGVnb3J5IE1hbmFnZW1lbnQ8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxOYW1lIFRyYW5zbGF0YWJsZT0iMSI+Q2F0ZWdvcnkgTWFuYWdlbWVudDwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFDYXRlZ29yeTwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PmM8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz45NTA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+RkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICA8VGl0bGU+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBGQVE8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxOYW1lIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoPC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1BZ2VudEZBUVNlYXJjaDwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8TGlua09wdGlvbj5vbmNsaWNrPSJDb3JlLkFnZW50LlNlYXJjaC5PcGVuU2VhcmNoRGlhbG9nKCdBZ2VudEZBUVNlYXJjaCcpOyBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9IGVsc2UgeyB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IjwvTGlua09wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PnM8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz45NjA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFTZWFyY2hTbWFsbCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICA8VGl0bGU+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6U2VhcmNoIyMjRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlNlYXJjaFJvdXRlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJeKD86QWdlbnR8QWRtaW4pRkFRIj5BY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPUFKQVg8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUU92ZXJ2aWV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU92ZXJ2aWV3U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPlNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lU2hvcnQiPlM8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI1Nob3dDb2x1bW5zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZBUUlEIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPkxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRG93biI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXAiPlVwPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0V4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJGQVFJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPkNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+TGFuZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEb3duIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVcCI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHJlZmVyZW5jZXNHcm91cHMjIyNGQVFPdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpQcmVmZXJlbmNlczwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlc0dlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbHVtbiI+T3RoZXIgU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiIFRyYW5zbGF0YWJsZT0iMSI+RkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyMCI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMwIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzNSI+MzU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyRkFRT3ZlcnZpZXdTbWFsbFBhZ2VTaG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+ODAwMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+RkFRLUFyZWE8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPFRpdGxlPkZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkFnZW50LkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5XaWRnZXQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+RkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5GQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5GQVEuQWdlbnQuRkFRWm9vbS5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRUmljaFRleHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQ8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPFRpdGxlPkZBUSBBSkFYIFJlc3BvbmRlcjwvVGl0bGU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAwMC1CYWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj4kRW52eyJMYXN0U2NyZWVuT3ZlcnZpZXcifTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5CYWNrPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAxMC1FZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkVkaXQgdGhpcyBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRGQVFFZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFFZGl0O0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9O1NjcmVlblR5cGU9UG9wdXA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDIwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkhpc3Rvcnkgb2YgdGhpcyBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRGQVFIaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFIaXN0b3J5O0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAzMC1QcmludCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlByaW50IHRoaXMgRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRUHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUVByaW50O0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rUGFyYW0iPnRhcmdldD0icHJpbnRfRkFRIjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwNDAtTGluayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+TGluazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+TGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50TGlua09iamVjdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9RkFRO1NvdXJjZUtleT0kUURhdGF7Ikl0ZW1JRCJ9PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzA1MC1EZWxldGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RGVsZXRlIHRoaXMgRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFEZWxldGU7SXRlbUlEPSRRRGF0YXsiSXRlbUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+Q29uZmlybWF0aW9uRGlhbG9nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFbGVtZW50U2VsZWN0b3IiPiMkUURhdGF7Ik1lbnVJRCJ9PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaWFsb2dDb250ZW50UXVlcnlTdHJpbmciPkFjdGlvbj1BZ2VudEZBUURlbGV0ZTtJdGVtSUQ9JFFEYXRheyJJdGVtSUQifTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlybWVkQWN0aW9uUXVlcnlTdHJpbmciPkFjdGlvbj1BZ2VudEZBUURlbGV0ZTtTdWJhY3Rpb249RGVsZXRlO0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaWFsb2dUaXRsZSI+JFRleHR7IkRlbGV0ZSJ9ICRDb25maWd7IkZBUTo6RkFRSG9vayJ9ICRRRGF0YXsiTnVtYmVyIn08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lckZBUVpvb20iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxUaXRsZT48L1RpdGxlPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkN1c3RvbWVyIEZBUS1ab29tPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQ3VzdG9tZXIuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuRkFRWm9vbS5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5GQVEuQ3VzdG9tZXIuRkFRWm9vbS5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVyRkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+Q3VzdG9tZXIgRkFRIHNlYXJjaDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+U2VhcmNoIEZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2g8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+U3VibWVudTwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8TGlua09wdGlvbj48L0xpbmtPcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT48L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz43ODA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSwzfSQiPjQwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFTZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZBUUlEIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPkxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRG93biI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXAiPlVwPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFQcmludCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+RkFRIFByaW50PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZT5QcmludDwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFQcmludCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPFRpdGxlPjwvVGl0bGU+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+Q3VzdG9tZXIgRkFRLVByaW50PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5QdWJsaWMgRkFRIHNlYXJjaDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+U2VhcmNoIEZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUS1BcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBGQVE8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+PC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8TGlua09wdGlvbj48L0xpbmtPcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT48L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz42MDA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OlZpZXdGQVFTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSwzfSQiPjQwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZBUUlEIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPkxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRG93biI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXAiPlVwPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5QdWJsaWMgRkFRLVpvb208L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5GQVFab29tLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxKYXZhU2NyaXB0PkZBUS5DdXN0b21lci5GQVFab29tLmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5QdWJsaWMgRkFRLVpvb208L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFQcmludCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5QdWJsaWMgRkFRLVByaW50PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFKb3VybmFsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgIDxUaXRsZT5GQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEpvdXJuYWw8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxOYW1lIFRyYW5zbGF0YWJsZT0iMSI+Sm91cm5hbDwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFKb3VybmFsPC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxUeXBlPjwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+PC9CbG9jaz4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+ajwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjkzMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRSm91cm5hbCMjI1Nob3dDb2x1bW5zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3Sm91cm5hbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFKb3VybmFsIyMjSm91cm5hbExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdKb3VybmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI0ZBUUpvdXJuYWxPdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlByZWZlcmVuY2VzPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzR2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29sdW1uIj5PdGhlciBTZXR0aW5nczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iS2V5IiBUcmFuc2xhdGFibGU9IjEiPkZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyMCI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMwIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzNSI+MzU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyRkFRSm91cm5hbE92ZXJ2aWV3U21hbGxQYWdlU2hvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkpvdXJuYWxPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUUpvdXJuYWxPdmVydmlldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWVTaG9ydCI+UzwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPFRpdGxlPkhpc3Rvcnk8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+RkFRIERlbGV0ZTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+RGVsZXRlPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNJbnNlcnRNZXRob2QiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZ1bGwiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdWxsIj5GdWxsIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCI+VGV4dCBPbmx5PC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNJbmNsdWRlSW50ZXJuYWwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93RmllbGROYW1lcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93SW5zZXJ0VGV4dEJ1dHRvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93SW5zZXJ0TGlua0J1dHRvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRDb21wb3NlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjU2hvd0luc2VydFRleHRBbmRMaW5rQnV0dG9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgIkluc2VydCBGQVEgVGV4dCAmYW1wOyBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJmFtcDsgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Ok11bHRpTGFuZ3VhZ2UiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkRlZmF1bHQ6Okxhbmd1YWdlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5lbjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkNTUyMjIzIwMC1GQVEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBDU1MgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpXZWI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTG9hZGVyOjpBZ2VudDo6Q29tbW9uSlMjIyMyMDAtRkFRIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgSlMgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpXZWI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5qczwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlZvdGluZyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkNhY2hlVFRMIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4xNzI4MDA8L1N0cmluZz4gPCEtLSBkZWZhdWx0IDE3Miw4MDAgKDYwICogNjAgKiAyNCAqIDIpIC0tPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkRhc2hib2FyZEJhY2tlbmQjIyMwMzk4LUZBUS1MYXN0Q2hhbmdlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkRhc2hib2FyZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmRGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5MYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPkxhc3RDaGFuZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db250ZW50U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj5mYXE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHQiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OS1GQVEtTGFzdENyZWF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpEYXNoYm9hcmQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+TGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5MYXN0Q3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29udGVudFNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+ZmFxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Ij4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgoKICAgIDxDb25maWdJdGVtIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjRkFROjpMYW5ndWFnZUxpc3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkdlbmVyaWNJbnRlcmZhY2U8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5MYW5ndWFnZUxpc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+R2VuZXJpY0ludGVyZmFjZTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPlB1YmxpY0NhdGVnb3J5TGlzdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0ZBUTo6UHVibGljRkFRR2V0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5HZW5lcmljSW50ZXJmYWNlPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+UHVibGljRkFRR2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjRkFROjpQdWJsaWNGQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkdlbmVyaWNJbnRlcmZhY2U8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5QdWJsaWNGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHREZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1pvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw0fSQiPjEwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1pvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw1fSQiPjI1MDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodERlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdab29tPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsNH0kIj4xMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodE1heCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1pvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw1fSQiPjI1MDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUFkZCMjI1JpY2hUZXh0V2lkdGgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgd2lkdGggZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdBZGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeXGQrJT8kIj42MjA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUFkZCMjI1JpY2hUZXh0SGVpZ2h0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0FkZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5cZCslPyQiPjMyMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRWRpdCMjI1JpY2hUZXh0V2lkdGgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgd2lkdGggZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdFZGl0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlxkKyU/JCI+NjIwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFZGl0IyMjUmljaFRleHRIZWlnaHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3RWRpdDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5cZCslPyQiPjMyMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpUb29sQmFyTW9kdWxlIyMjOTAtRkFROjpBZ2VudEZBUUFkZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Ub29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUb29sQmFyTW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRvb2xCYXJMaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5BZGQgRkFRIGFydGljbGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij5uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDc3NDbGFzcyI+RW1haWxUaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikljb24iPmljb24tcXVlc3Rpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4xMDIwMDkwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgo8L290cnNfY29uZmlnPgo=
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==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9kYV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpkYV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnU2lkc3Qgw6ZuZHJlZGUgYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTnllc3RlIGFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbmRlcmthdGVnb3JpIGFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnSW5nZW4gcmF0ZSB2YWxndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdTdGFydCBkYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICdTdGFydCBtw6VuZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ1N0YXJ0IMOlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnU2x1dCBkYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnU2x1dCBtw6VuZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdTbHV0IMOlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdUYWsgZm9yIGRpbiBzdGVtbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnRHUgaGFyIGFsbGVyZWRlIHN0ZW10ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnR29ka2VuZHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1ZpbCBibGl2ZSB2aXN0IHNvbSBrb21tZW50YXIgaSBFeHBsb3JlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIEZBUSB0YWJsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCI1MCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdTdGVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSByYW5nZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTnkgRkFRIEFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgbmVlZHMgbWluLiBvbmUgcGVybWlzc2lvbiBncm91cCEnfSA9ICdFbiBrYXRlZ29yaSBiZWjDuHZlciBtaW5kc3QgZW4gcmV0dGlnaGVkc2dydXBwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBjYXRlZ29yeS4nfSA9ICdBZ2VudGdydXBwZXIgc29tIGthbiB0aWxnw6UgZGVubmUga2F0ZWdvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdLYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ0RldGFsamVyZXQgc8O4Z25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5J30gPSAnRkFRIEthdGVnb3JpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE5ld3MgKFRvcCAxMCknfSA9ICdGQVEgTnloZWRlciAoVG9wIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTmV3cyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRIE55aGVkZXIgKG55b3ByZXR0ZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOZXdzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0ZBUSBOeWhlZGVyIChzaWRzdCDDpm5kcmVkZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcnkgYWNjZXNzaWJsZS4gVG8gY3JlYXRlIGFuIGFydGljbGUgeW91IG5lZWQgYWNjZXNzIHRvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeS4gUGxlYXNlIGNoZWNrIHlvdXIgZ3JvdXAvY2F0ZWdvcnkgcGVybWlzc2lvbiB1bmRlciAtY2F0ZWdvcnkgbWVudS0hJ30gPQogICAgICAgICdEZXIgZXIgaWtrZSB2YWxndCBrYXRlZ29yaS4gRm9yIGF0IG9wcmV0dGUgZW4gbnkgYXJ0aWtlbCBza2FsIGR1IGhhdmUgYWRnYW5nIHRpbCBtaW5kc3QgZW4ga2F0ZWdvcmkuIFRqZWsgZGluZSBHcnVwcGUvS2F0ZWdvcmkgcmV0dGlnaGVkZXIgdW5kZXIgLUthdGVnb3JpIG1lbnVlbi0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnU8O4Z25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcmllcyd9ID0gJ1VuZGVya2F0ZWdvcmllcic7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9kZV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpkZV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnw7ZmZmVudGxpY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUS1OdW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnWnVsZXR6dCBnZcOkbmRlcnRlIEZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1p1bGV0enQgZXJzdGVsbHRlIEZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbnRlcmthdGVnb3JpZSB2b24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdLZWluZSBCZXdlcnR1bmcgYXVzZ2V3w6RobHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnQW5zaWNodCBuYWNoIEthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnw7ZmZmVudGxpY2ggKEFsbGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm4gKEt1bmRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuIChBZ2VudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnU3RhcnQgVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnU3RhcnQgTW9uYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ1N0YXJ0IEphaHInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ0VuZCBUYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnRW5kIE1vbmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnRW5kIEphaHInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVmllbGVuIERhbmsgZsO8ciBJaHJlIEJld2VydHVuZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdTaWUgaGFiZW4gYmVyZWl0cyBhYmdlc3RpbW10ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ZBUS1BcnRpa2VsLUF1c2RydWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0ZBUS1BcnRpa2VsIChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRLUFydGlrZWwgKG5ldSBlcnN0ZWxsdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdGQVEtQXJ0aWtlbCAoYWt0dWFsaXNpZXJ0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnRkFRLUthdGVnb3JpZSBha3R1YWxpc2llcnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdGQVEtS2F0ZWdvcmllIGhpbnp1Z2Vmw7xndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnRWluZSBLYXRlZ29yaWUgYmVuw7Z0aWd0IGVpbmVuIE5hbWVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRGllc2UgS2F0ZWdvcmllIGV4aXN0aWVydCBiZXJlaXRzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFRLVNwcmFjaGUgaGluenVnZWbDvGd0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdGQVEtU3ByYWNoZSBha3R1YWxpc2llcnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0RlciBOYW1lIGlzdCBlcmZvcmRlcmxpY2ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGllc2UgU3ByYWNoZSBleGlzdGllcnQgYmVyZWl0cyEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnRkFRLUFydGlrZWwgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdFaW5lIEthdGVnb3JpZSBpc3QgZXJmb3JkZXJsaWNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0ZyZWlnYWJlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0ZBUS1LYXRlZ29yaWVuLVZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnS2F0ZWdvcmllIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBsw7ZzY2hlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnS2F0ZWdvcmllIGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1dpcmQgaW0gRXhwbG9yZXIgYWxzIEtvbW1lbnRhciBhbmdlemVpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnV8OkaGxlbiBTaWUgbWluZGVzdGVucyBlaW5lIEJlcmVjaHRpZ3VuZ3NncnVwcGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdBZ2VudGVuLUdydXBwZW4sIGRpZSBiZXJlY2h0aWd0IHNpbmQsIGF1ZiBGQVEtQXJ0aWtlbCBpbiBkaWVzZXIgS2F0ZWdvcmllIHp1enVncmVpZmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBLYXRlZ29yaWUgd2lya2xpY2ggbMO2c2NoZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnU2llIGvDtm5uZW4gZGllc2UgS2F0ZWdvcmllIG5pY2h0IGzDtnNjaGVuLiBTaWUgd2lyZCBpbiBtaW5kZXN0ZW5zIGVpbmVtIEZBUS1BcnRpa2VsIHZlcndlbmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdEaWVzZSBLYXRlZ29yaWUgd2lyZCBpbiBkZW4gZm9sZ2VuZGVuIEZBUS1BcnRpa2VsbiB2ZXJ3ZW5kZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRGllc2UgS2F0ZWdvcmllIGlzdCBlaW5lIEVsdGVybi1LYXRlZ29yaWUgZsO8ciBmb2xnZW5kZSBLYXRlZ29yaWVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1dvbGxlbiBTaWUgZGllc2VuIEZBUS1BcnRpa2VsIHdpcmtsaWNoIGzDtnNjaGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUS1FeHBsb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdTY2huZWxsc3VjaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdFcndlaXRlcnRlIFN1Y2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdVbnRlcmthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdLZWluZSBVbnRlcmthdGVnb3JpZW4gZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ0tlaW5lIEZBUS1Kb3VybmFsZGF0ZW4gZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUS1TcHJhY2hlbi1WZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0KICAgICAgICAnVmVyd2VuZGVuIFNpZSBkaWVzZXMgRmVhdHVyZSB3ZW5uIFNpZSBtaXQgdmVyc2NoaWVkZW5lbiBTcHJhY2hlbiBhcmJlaXRlbiB3b2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ1NwcmFjaGUgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnU3ByYWNoZSBMw7ZzY2hlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdTcHJhY2hlIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdTcHJhY2hlIEJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1dvbGxlbiBTaWUgZGllc2UgU3ByYWNoZSB3aXJrbGljaCBsw7ZzY2hlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnU2llIGvDtm5uZW4gZGllc2UgU3ByYWNoZSBuaWNodCBsw7ZzY2hlbi4gU2llIHdpcmQgaW4gbWluZGVzdGVucyBlaW5lbSBGQVEtQXJ0aWtlbCB2ZXJ3ZW5kZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRGllc2UgU3ByYWNoZSB3aXJkIGluIGRlbiBmb2xnZW5kZW4gRkFRLUFydGlrZWxuIHZlcndlbmRldCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0tvbnRleHQtRWluc3RlbGx1bmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdGQVEtQXJ0aWtlbCBwcm8gU2VpdGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnS2VpbmUgRkFRLURhdGVuIGdlZnVuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0ZBUSBJbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnQmV3ZXJ0dW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEtVm9sbHRleHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFRIFN1Y2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUS1JbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdCZXdlcnR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdCZXdlcnR1bmcgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3ZvbiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0tlaW5lIEJld2VydHVuZ2VuIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnS2VpbmUgQmV3ZXJ0dW5nZW4gZ2VmdW5kZW4hIFNlaWVuIFNpZSBkZXIgZXJzdGUgZGVyIGRpZXNlbiBGQVEtQXJ0aWtlbCBiZXdlcnRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0F0dGFjaG1lbnQgSGVydW50ZXJsYWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ1dpZSBoaWxmcmVpY2ggd2FyIGRpZXNlciBBcnRpa2VsPyBCaXR0ZSBnZWJlbiBTaWUgSWhyZSBCZXdlcnR1bmcgYWIgdW5kIGhlbGZlbiBTaWUgbWl0IGRpZSBRdWFsaXTDpHQgZGVyIEZBUS1EYXRlbmJhbmsgenUgdmVyYmVzc2Vybi4gVmllbGVuIERhbmshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbmljaHQgaGlsZnJlaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3NlaHIgaGlsZnJlaWNoJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnRkFRLVRleHQgZWluZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ1ZvbGxzdMOkbmRpZ2UgRkFRIGVpbmbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdGQVEtTGluayBlaW5mw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0ZBUS1UZXh0ICYgTGluayBlaW5mw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ1ZvbGxzdMOkbmRpZ2UgRkFRICYgTGluayBlaW5mw7xnZW4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdLZWluZSBGQVEtQXJ0aWtlbCBnZWZ1bmRlbi4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdWb2xsdGV4dC1TdWNoZSBpbiBGQVEtQXJ0aWtlbG4gKHouIEIuICJKb2huKm4iIG9yICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnU3VjaGUgbmFjaCBBcnRpa2VsbiBtaXQgU2NobMO8c3NlbHfDtnJ0ZXJuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICfDlmZmZW50bGljaCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdFaW4gRmlsdGVyIHp1ciBhdXRvbWF0aXNjaGVuIEdlbmVyaWVydW5nIHZvbiBGQVEtTGlua3MsIHdlbm4gZWluIEhpbndlaXMgYXVmIGVpbmVuIEZBUS1BcnRpa2VsIGlkZW50aWZpemllcnQgd2lyZC4gRGFzIEVsZW1lbnQgSW1hZ2UgZXJsYXVidCB6d2VpIEVpbmdhYmVmb3JtZW46IEVyc3RlbnMgZGVyIE5hbWUgZWluZXMgSWNvbnMgKHouIEIuIGZhcS5wbmcpLiBJbiBkaWVzZW0gRmFsbCB3aXJkIGF1ZiBkYXMgR3JhZmlrLVZlcnplaWNobmlzIGRlcyBPVFJTIHp1Z2VncmlmZmVuLiBBbHMgendlaXRlIE3DtmdsaWNoa2VpdCBrYW5uIG1hbiBhYmVyIGF1Y2ggZGVuIGRpcmVrdGVuIExpbmsgenVyIEdyYWZpayBhbmdlYmVuICh6LiBCLiBodHRwOi8vb3Rycy5vcmcvZmFxLnBuZykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTLUZhcmJlIGbDvHIgZGFzIEJld2VydHVuZ3MtRXJnZWJuaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3JpZW4tVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdEZXppbWFsc3RlbGxlbiBkZXMgRXJnZWJuaXNzZXMgZGVyIEFydGlrZWxiZXdlcnR1bmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdSb290LUthdGVnb3JpZS1OYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnU3RhbmRhcmQtU3ByYWNoZSBmw7xyIEZBUS1BcnRpa2VsIGltIEVpbnplbC1TcHJhY2gtTW9kdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1N0YW5kYXJkLVByaW9yaXTDpHQgdm9uIFRpY2tldHMgZsO8ciBkaWUgRnJlaWdhYmUgdm9uIEZBUS1BcnRpa2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ1N0YW5kYXJkIFN0YXR1cyBlaW5lcyBGQVEtRWludHJhZ3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGFuZGFyZC1TdGF0dXMgdm9uIFRpY2tldHMgZsO8ciBkaWUgRnJlaWdhYmUgdm9uIEZBUS1BcnRpa2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdTdGFuZGFyZHdlcnQgZGVzIEFjdGlvbi1QYXJhbWV0ZXJzIGbDvHIgZGVuIMO2ZmZlbnRsaWNoZW4gRkFRLUJlcmVpY2guIERlciBBY3Rpb24tUGFyYW1ldGVyIHdpcmQgdm9uIGRlbiBTa3JpcHRlbiBkZXMgU3lzdGVtcyBiZW51dHp0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdEZWZpbmllcnQgZWluIMOcYmVyc2ljaHRzLU1vZHVsIHVtIGRpZSBTbWFsbC1BbnNpY2h0IGltIEZBUS1Kb3VybmFsIGFuenV6ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBlaW4gw5xiZXJzaWNodHMtTW9kdWwgdW0gZGllIFNtYWxsLUFuc2ljaHQgZWluZXIgRkFRLUxpc3RlIGFuenV6ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlciBGQVEtU3VjaGUgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtU3VjaGUgaW0gS3VuZGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVyIEZBUS1TdWNoZSBpbSBBZ2VudGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXIgRkFRLVN1Y2hlIGltIEt1bmRlbi1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlciBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmVydCBkaWUgYW5nZXplaWd0ZW4gU3BhbHRlbiBpbSBGQVEtRXhwbG9yZXIuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGltIEZBUS1Kb3VybmFsLiBEaWVzZSBPcHRpb24gaGF0IGtlaW5lIEF1c3dpcmt1bmcgYXVmIGRpZSBQb3NpdGlvbiBkZXIgU3BhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGluIGRlciBGQVEtU3VjaGUuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCB3byBkZXIgXCdGQVEgRWluZsO8Z2VuXCcgbGluayBhbmdlemVpZ3Qgd2lyZC4gSGlud2VpczogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gYmVpbmhhbHRldCBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSB1bmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pdGlvbiBkZXIgZnJlaWVuIFRleHRmZWxkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0RpZXNlIEZBUSBsw7ZzY2hlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0ZBUSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdNdWx0aXBsZSBTcHJhY2hlbiBpbSBGQVEtTW9kdWwgYWt0aXZpZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdCZXdlcnR1bmdzLU1lY2hhbmlzbXVzIGltIEZBUS1Nb2R1bCBha3RpdmllcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSBKb3VybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEtSm91cm5hbCBBbnphaWdlLUxpbWl0IGbDvHIgZGllIFNtYWxsLUFuc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEtw5xiZXJzaWNodCBBbnplaWdlLUxpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0ZBUSBsaW1pdCBwcm8gU2VpdGUgZsO8ciBkYXMgRkFRLUpvdXJuYWwgaW4gZGVyIFNtYWxsLUFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdGQVEgbGltaXQgcHJvIFNlaXRlIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdUcmVubnplaWNoZW4gaW0gRkFRIFBmYWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdTdWNoLUJhY2tlbmQtUm91dGVyIGbDvHIgZGllIEZBUS1TdWNoZSBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICdGQVEtQmVyZWljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGFzIFB1YmxpYy1JbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cHBlIGbDvHIgZGllIEZyZWlnYWJlIHZvbiBGQVEtQXJ0aWtlbG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdGQVEtSGlzdG9yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0ludGVybmUgRkFRLUZlbGRlciBpbiBlaW5lbSBGQVEtYmFzaWVydGVuVGlja2V0IHZlcndlbmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdEZW4gTmFtZW4gamVkZXMgRkFRLUZlbGRlcyBlaW5lbSBGQVEtYmFzaWVydGVuIFRpY2tldCB2ZXJ3ZW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIGluIGRlbmVuIGRhcyBRdWlja1NlYXJjaCBGZWF0dXJlIGFuZ2V6ZWlndCB3aXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnU3ByYWNoZW4tVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdEaWVzZSBGQVEgbWl0IGVpbmVtIGFuZGVyZW4gT2JqZWt0IHZlcmtuw7xwZmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtSm91cm5hbCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbiBkZXIgRkFRLVN1Y2hlIGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gS3VuZGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICdNb2R1bCB6dW0gR2VuZXJpZXJlbiBkZXMgSFRNTCAiT3BlblNlYXJjaCIgUHJvZmlscyB6dXIgRkFRLVN1Y2hlIMO8YmVyIGRhcyBCcm93c2VyLVN1Y2hmZWxkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOZXVlciBGQVEtQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdOZXVlIEZBUS1BcnRpa2VsIGJlbsO2dGlnZW4gZWluZSBGcmVpZ2FiZSB2b3IgZGVyIFZlcsO2ZmZlbnRsaWNodW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0FuemFobCBkZXIgenUgYW56ZWlnZW5kZW4gQXJ0aWtlbCBpbiBsZXR6dGVuIMOEbmRlcnVuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ0FuemFobCBkZXIgYW56dXplaWdlbmRlbiBBcnRpa2VsIGluIHp1bGV0enQgZXJzdGVsbHRlIEFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQW56YWhsIGRlciBhbnp1emVpZ2VuZGVuIEFydGlrZWwgaW0gVG9wIDEwIEZlYXR1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4gKGluIGRlbmVuIEZBUS1BcnRpa2VsIGFuZ2V6ZWlndCB3ZXJkZW4pIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQgZGVzIEZBUS1Kb3VybmFscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4gKGluIGRlbmVuIEZBUS1BcnRpa2VsIGFuZ2V6ZWlndCB3ZXJkZW4pIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQgZGVzIEZBUS1PdmVyaWV3cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdGQVEgZHJ1Y2tlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdRdWV1ZSBmw7xyIGRpZSBGcmVpZ2FiZSB2b24gRkFRLUFydGlrZWxuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ0dld2ljaHR1bmcgZsO8ciBkaWUgQmV3ZXJ0dW5nLiBEZXIgS2V5IG11c3MgaW4gUHJvemVudCBhbmdlZ2ViZW4gd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnRkFRIGR1cmNoc3VjaGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnSFRNTCBEYXJzdGVsbHVuZyBkZXIgRkFRLUFydGlrZWwgZWluc2NoYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ0ZBUSBQZmFkIGFuemVpZ2VuIGphL25laW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdBcnRpa2VsIGF1cyBTdWJrYXRlZ29yaWVuIGFuemVpZ2VuIGphL25laW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0ludGVyZmFjZXMgaW4gZGVuZW4gZGFzIExhc3RDaGFuZ2UgRmVhdHVyZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdJbnRlcmZhY2VzIGluIGRlbmVuIGRhcyBMYXN0Q3JlYXRlIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgVG9wIDEwIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgVm90aW5nIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW4gZGVyIE1lbnUtTGVpc3RlIGluIGRlciBab29tLUFuc2ljaHQgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4sIGRlciBlcyBlcm3DtmdsaWNodCBlaW5lbiBGQVEtQXJ0aWtlbCBtaXQgYW5kZXJlbiBPYmpla3RlbiB6dSB2ZXJrbsO8cGZlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgbMO2c2NoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgdW0gZGllIEhpc3RvcmllIGVpbmVzIEZBUS1BcnRpa2VscyBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgZGVyIGVzIGVybcO2Z2xpY2h0IGVpbmVuIEZBUS1BcnRpa2VsIHp1IGJlYXJiZWl0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgenVyIHZvcmhlcmlnZW4gU2VpdGUgenVyw7xjayB6dSBnZWhlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgZHJ1Y2tlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRGVyIElkZW50aWZpa2F0b3IgZsO8ciBlaW5lbiBGQVEtQXJ0aWtlbCwgei4gQi4gRkFRIywgS0IjLCBNeUZBUSMuIERlciBTdGFuZGFyZHdlcnQgaXN0IEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ05vcm1hbFwnIG1pdCBhbmRlcmVuIFwnRkFRXCctT2JqZWt0ZW4gdmVybGlua3Qgd2VyZGVuIGthbm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0LCBkYXNzIGVpbiBcJ0ZBUVwnLU9iamVrdGUgbWl0IGRlbSBMaW5rdHlwIFwnUGFyZW50Q2hpbGRcJyBtaXQgYW5kZXJlbiBcJ0ZBUVwnLU9iamVrdGVuIHZlcmxpbmt0IHdlcmRlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdEZWZpbmllcnQsIGRhc3MgZWluIFwnRkFRXCctT2JqZWt0ZSBtaXQgZGVtIExpbmt0eXAgXCdOb3JtYWxcJyBtaXQgYW5kZXJlbiBcJ1RpY2tldFwnLU9iamVrdGVuIHZlcmxpbmt0IHdlcmRlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ1BhcmVudENoaWxkXCcgbWl0IGFuZGVyZW4gXCdUaWNrZXRcJy1PYmpla3RlbiB2ZXJsaW5rdCB3ZXJkZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JvZHkgZGVzIFRpY2tldHMgenVyIEZyZWlnYWJlIGVpbmVzIEZBUS1BcnRpa2Vscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JldHJlZmYgZGVzIFRpY2tldHMgenVyIEZyZWlnYWJlIGVpbmVzIEZBUS1BcnRpa2Vscy4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gS3VuZGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXJzIGltIFB1YmxpYy1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBLdW5kZW4tSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBQdWJsaWMtSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBFeHBsb3JlciByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gQWdlbnRlbi1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJ0zDtnNjaGVuOiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdMYW5ndWFnZUtleSBmw7xyIGRpZSBGcmFnZSBiZWkgZGVyIEFydGlrZWxiZXdlcnR1bmcuIFdpcmQgaW4gZGVuIFNwcmFjaGZpbGVzIGRlZmluaWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gS3VuZGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gUHVibGljLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBLdW5kZW4tSW50ZXJmYWNlIHBybyBTZWl0ZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZSBwcm8gU2VpdGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGltIEt1bmRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdaZWlnZSAiTGluayBFaW5mw7xnZW4iLUJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdaZWlnZSAiVGV4dCAmIExpbmsgRWluZsO8Z2VuIi1CdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZsO8ciDDtmZmZW50bGljaGUgRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnWmVpZ2UgIlRleHQgRWluZsO8Z2VuIi1CdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZsO8ciDDtmZmZW50bGljaGUgRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0FuemVpZ2UgZWluZXMgV1lTSVdZRyBFZGl0b3JzIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9lc19GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjplc19GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnVWx0aW1vcyBhcnTDrWN1bG9zIG1vZGlmaWNhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1VsdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZGUgYXJ0w61jdWxvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3LDrWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfCoU5vIHNlIGhhIHNlbGVjY2lvbmFkbyBuaW5ndW5hIHB1bnR1YWNpw7NuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdww7pibGljbyAodG9kb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5vIChjbGllbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAoYWdlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdEw61hIGRlIGluaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ01lcyBkZSBpbmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ0HDsW8gZGUgaW5pY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdEw61hIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnTWVzIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdBw7FvIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnwqFHcmFjaWFzIHBvciBzdSB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ8KhVXN0ZWQgeWEgaGEgdm90YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWlyIGVsIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0w61jdWxvcyBGQVEgKFRvcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnTDrWN1bG9zIEZBUSAobnVldm9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0w61jdWxvcyBGQVEgKG1vZGlmaWNhZG9zIHJlY2llbnRlbWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0FjdHVhbGl6YWRhIGNhdGVnb3LDrWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdBw7FhZGlkYSBjYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfCoUxhcyBjYXRlZ29yw61hcyBkZWJlIHRlbmVyIG5vbWJyZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSB5YSBleGlzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0HDsWFkaWRvIGlkaW9tYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnQWN0dWFsaXphZG8gaWRpb21hIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRWwgbm9tYnJlIGVzIGltcHJlc2NpbmRpYmxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0VzdGUgaWRpb21hIHlhIGV4aXN0ZS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnQcOxYWRpciBhcnTDrWN1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ1NlIHJlcXVpZXJlIHVuYSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0Fwcm9iYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGNhdGVnb3LDrWFzIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBw7FhZGlyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQm9ycmFyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdBY2VwdGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0HDsWFkaXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdGFyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlIG1vc3RyYXLDoSBjb21vIGNvbWVudGFyaW8gZW4gZWwgZXhwbG9yYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdQb3IgZmF2b3IsIHNlbGVjY2lvbmUgYWwgbWVub3MgdW4gZ3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhZ2VudGVzIHF1ZSBwdWVkZW4gYWNjZWRlciBhIGxvcyBhcnTDrWN1bG9zIGRlIGVzdGEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnwr9TZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RhIGNhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTm8gcHVlZGUgYm9ycmFyIGVzdGEgY2F0ZWdvcsOtYS4gRXN0w6Egc2llbmRvIHVzYWRhIHBvciBhbCBtZW5vcyB1biBhcnTDrWN1bG8gRkFRIHkvbyBlcyBwYWRyZSBkZSBhbCBtZW5vcyBvdHJhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXN0w6Egc2llbmRvIHVzYWRhIHBvciBsb3Mgc2lndWllbnRlcyBhcnTDrWN1bG9zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXMgcGFkcmUgZGUgbGFzIHNpZ3VpZW50ZXMgc3ViY2F0ZWdvcsOtYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnwr9TZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RlIGFydMOtY3VsbyBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXhwbG9yYWRvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIFLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgQXZhbnphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1YmNhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gc3ViY2F0ZWdvcsOtYXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGVuIGxhIEJpdMOhY29yYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdVdGlsaWNlIGVzdGEgZnVuY2lvbmFsaWRhZCBzaSBkZXNlYSB0cmFiYWphciBjb24gbcO6bHRpcGxlcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBw7FhZGlyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICdCb3JyYXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0HDsWFkaXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfCv1NlZ3VybyBxdWUgZGVzZWEgYm9ycmFyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdObyBwdWVkZSBib3JyYXIgZXN0ZSBpZGlvbWEuIEVzdMOhIHNpZW5kbyB1c2FkbyBwb3IgYWwgbWVub3MgdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIGVzdGEgc2llbmRvIHVzYWRvIHBvciBsb3Mgc2lndWllbnRlcyBBcnTDrWN1bG9zIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0FqdXN0ZXMgZGUgQ29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0w61jdWxvcyBGQVEgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gZGF0b3MgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0luZm9ybWFjacOzbi1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1RleHRvIGNvbXBsZXRvIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnUHVudHVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdQdW50dWFjacOzbiAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnZGUgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfCoU5vIHNlIGVuY29udHLDsyBuaW5nw7puIHZvdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdObyBzZSBlbmNvbnRyw7MgbmluZ8O6biB2b3RvLiBTZWEgZWwgcHJpbWVybyBlbiB2YWxvcmFyIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRGVzY2FyZ2FyIEFkanVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfCv0PDs21vIGRlIMO6dGlsIGZ1ZSBlc3RlIGFydMOtY3Vsbz8gUG9yIGZhdm9yLCBkw6lub3Mgc3UgcHVudHVhY2nDs24geSBheXVkZSBhIG1lam9yYXIgbGEgYmFzZSBkZSBkYXRvcyBkZSBGQVEuIEdyYWNpYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAncG9jbyDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdtdXkgw7p0aWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdJbnNlcnRhciBUZXh0byBkZSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc2VydGFyIEVubGFjZSBhIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnSW5zZXJ0YXIgdGV4dG8geSBFbmxhY2UgYSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGFydMOtY3Vsb3MgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnQsO6c3F1ZWRhIGRlIHRleHRvIGNvbXBsZXRvIGVuIGFydMOtY3Vsb3MgRkFRIChlajogIkpvaG4qbiIgbyAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ0J1c2NhciBhcnTDrWN1bG9zIGNvbiBsYSBwYWxhYnJhIGNsYXZlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQw7pibGljbyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdGaWx0cm8gcGFyYSBlbCBIVE1MIHJlc3VsdGFudGUgcGFyYSBhw7FhZGlyIGVubGFjZXMgYSB1bmEgY2FkZW5hIGRldGVybWluYWRhLiBFbCBlbGVtZW50byBJbWFnZW4gY29udGVtcGxhIGRvcyB0aXBvcyBkZSByZWdpc3Ryb3MuIEVsIHByaW1lcm8gZXMgZWwgbm9tYnJlIGRlIHVuYSBpbWFnZW4gKHBvciBlamVtcGxvIGZhcS5wbmcpLiBFbiBlc3RlIGNhc28gc2UgdXRpbGl6YXLDoSBsYSBydXRhIGRlIGltw6FnZW5lcyBkZSBPVFJTLiBMYSBzZWd1bmRhIHBvc2liaWxpZGFkIGVzIGluc2VydGFyIGVsIGVubGFjZSBhIGxhIGltYWdlbi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ29sb3IgQ1NTIHBhcmEgZWwgcmVzdWx0YWRvIGRlIGxhIHZvdGFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ1RpZW1wbyBkZSB2aWRhIGRlIGxhIGNhY2jDqSBwYXJhIGxvcyBlbGVtZW50b3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgbGFzIENhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ07Dum1lcm8gZGUgZGVjaW1hbGVzIHBhcmEgZWwgcmVzdWx0YWRvIGRlIGxhIHZvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnTm9tYnJlIHByZWRldGVybWluYWRvIGRlIGxhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0lkaW9tYSBwb3Igb21pc2nDs24gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gbW9kbyBpZGlvbWEgw7puaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1ByaW9yaWRhZCBwb3Igb21pc2nDs24gZGUgbG9zIHRpY2tldHMgcGFyYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFc3RhZG8gcG9yIG9taXNpw7NuIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRXN0YWRvIHBvciBvbWlzacOzbiBkZSBsb3MgdGlja2V0cyBwYXJhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdWYWxvciBwb3Igb21pc2nDs24gcGFyYSBlbCBwYXLDoW1ldHJvICJBY3Rpb24iIHBhcmEgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEVsIHBhcsOhbWV0cm8gIkFjdGlvbiIgc2UgdXNhIGVuIGxvcyAic2NyaXB0cyIgZGVsIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIGdlbmVyYWwgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgdmlzdGEgcHJldmlhIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSB1biBsaXN0YWRvIGRlIEZBUXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdERWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgRkFRIHF1ZSBzZSB1c2Fyw6EgcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IExvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gbG9zIHJlc3VsdGFkb3MgZGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIG3DoXMgcmVjaWVudGVzIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3MgbcOhcyByZWNpZW50ZXMgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIEV4cGxvcmFkb3IgZGUgRkFRLiBFc3RhIG9wY2nDs24gbm8gdGllbmUgZWZlY3RvcyBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYml0w6Fjb3JhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYsO6c3F1ZWRhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICdEZWZpbmUgZMOzbmRlIHNlIG1vc3RyYXLDoSBlbCBlbmxhY2UgwqtJbnNlcnRhciBGQVHCuy4gTm90YTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHV5ZSBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSB5IEFnZW50VGlja2V0UmVzcG9uc2libGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaWNpw7NuIGRlbCBjYW1wbyDCq3RleHRvIGxpYnJlwrsgcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0JvcnJhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0hhYmlsaXRhciBtw7psdGlwbGVzIGlkaW9tYXMgZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdIYWJpbGl0YXIgZWwgbWVjYW5pc21vIGRlIHZvdGFjacOzbiBlbiBlbCBtw7NkdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0JpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgcGFyYSBsYSB2aXN0YSBnZW5lcmFsIMKrcGVxdWXDsWHCuyBkZSBsYSBCaXTDoWNvcmEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMw61taXRlIGRlIEZBUSBwb3IgcMOhZ2luYSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIGxhIEJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0zDrW1pdGUgZGUgRkFRIHBvciBww6FnaW5hIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCDCq3BlcXVlw7FhwrsgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdTZXBhcmFkb3IgZGUgbGEgcnV0YSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdFbmNhbWluYWRvciBwYXJhIGxhIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICfDgXJlYS1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnUmVnaXN0cm8gZGUgbcOzZHVsbyAiRnJvbnRlbmQiIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwbyBwYXJhIGxhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlhIGRlIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBjYW1wb3MgaW50ZXJub3MgZW4gbG9zIHRpY2tldHMgYmFzYWRvcyBlbiB1biBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBlbCBub21icmUgZGUgY2FkYSBjYW1wbyBlbiBsb3MgdGlja2V0cyBiYXNhZG9zIGVuIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjZXMgZW4gbGFzIHF1ZSBzZSBkZWJlIG1vc3RyYXIgbGEgYnVzcXVlZGEgcsOhcGlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0JpdMOhY29yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdFbmxhemFyIG90cm8gb2JqZWN0byBhIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gbGEgYml0w6Fjb3JhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZWwgcGVyZmlsIGh0bWwgIk9wZW5TZWFyY2giIHBhcmEgYsO6c3F1ZWRhcyBjb3J0YXMgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOdWV2byBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0xvcyBudWV2b3MgYXJ0w61jdWxvcyBGQVEgcmVxdWllcmVuIGFwcm9iYWNpw7NuIGFudGVzIGRlIHB1YmxpY2Fyc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGNhZGEgcMOhZ2luYSBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gY2FkYSBww6FnaW5hIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIMO6bHRpbW9zIGNhbWJpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIMO6bHRpbW9zIGNyZWFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIGVsIFRvcCAxMC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGUgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgRkFRKSBkZSBsYSB2aXN0YSBnZW5lcmFsIHBlcXVlw7FhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZSBsYXMgcMOhZ2luYXMgKGVuIGxhcyBxdWUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBGQVEpIGRlIGxhIHZpc3RhIGdlbmVyYWwgZGUgRkFRIHBlcXVlw7FhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWlyIGVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZpbGEgcGFyYSBsYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnUG9uZGVyYWNpw7NuIHBhcmEgbGEgdm90YWNpw7NuLiBMYSBjbGF2ZSBkZWJlIGV4cHJlc2Fyc2UgZW4gcG9yY2VudGFqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0LDunNxdWVkYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgcHJlZGV0ZXJtaW5hZGEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBBZ2VudEZBUVpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBwcmVkZXRlcm1pbmFkYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEN1c3RvbWVyRkFRWm9vbSAoeSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgbcOheGltYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEFnZW50RkFRWm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIG3DoXhpbWEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBDdXN0b21lckZBUVpvb20gKHkgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciBlbmxhY2UgYSBGQVHCuyBlbiBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ8K/TW9zdHJhciBjb250ZW5pZG8gSFRNTCBlbiBsb3MgYXJ0w61jdWxvcyBGQVE/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfCv01vc3RyYXIgbGEgcnV0YSBkZSBsYSBGQVE/IHPDrS9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ8K/TW9zdHJhciBsb3MgZWxlbWVudG9zIGRlIGxhcyBzdWJjYXRlZ29yw61hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBhY3R1YWxpemFkb3MgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbG9zIGFydMOtY3Vsb3MgVG9wIDEwIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbGEgdm90YWNpw7NuIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSBlbmxhemFyIGEgdW4gYXJ0w61jdWxvIEZBUSBjb24gb3RybyBvYmpldG8gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgZXNhIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIGJvcnJhciB1biBhcnTDrWN1bG8gRkFRIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIGVzYSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWRpdGFyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgcmV0cm9jZWRlciBlbiBsYSB2aXN0YSBhbXBsaWFkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBwYXJhIHVuYSBGQVEsIHBvciBlamVtcGxvIEZBUSMsIEtCIywgTWlGQVEjLiBGQVEjIGVzIGxhIG9wY2nDs24gcG9yIG9taXNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDdWVycG8gZGVsIHRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQXN1bnRvIGRlbCB0aWNrZXQgcGFyYSBhcHJvYmFjacOzbiBkZSBhcnTDrWN1bG9zIEZBUS4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBuZWVkcyBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cCEnfSA9ICdVbmEgY2F0ZWdvcsOtYSBkZWJlIHRlbmVyIGFsIG1lbm9zIHVuIGdydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBjb21tZW50ISd9ID0gJ1VuYSBjYXRlZ29yw61hIGRlYmUgdGVuZXIgdW4gY29tZW50YXJpbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBjYXRlZ29yeS4nfSA9ICdMb3MgZ3J1cG9zIGFnZW50ZXMgcHVlZGVuIGFjY2VkZXIgYSBlc3RhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZXMnfSA9ICdBcnTDrWN1bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdDYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzZW50aWRvIGRlbCBvcmRlbiBwb3Igb21pc2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgRXhwbG9yZXIgcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0RlZmluZSBkw7NuZGUgZXMgcXVlIGxhIGxpZ2EgXCdJbnNlcnRhciBGQVFcJyBzZXLDoSBkZXNwbGVnYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJ0JvcnJhcjogJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ0J1c3F1ZWRhIGRldGFsbGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgQ2F0ZWdvcnk/J30gPSAnwr9Fc3TDoSBzZWd1cm8gZGUgcXVlcmVyIGJvcnJhciBlc3RhIENhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBMYW5ndWFnZT8nfSA9ICfCv0VzdMOhIHNlZ3VybyBkZSBxdWVyZXIgYm9ycmFyIGVzdGUgSWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ0NsYXZlIGRlIGlkaW9tYSBkZWZpbmlkYSBlbiBlbCBmaWNoZXJvIGRlIGlkaW9tYSAqX0ZBUS5wbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgZGVudHJvIGRlbCBleHBsb3JhZG9yIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGNvbW8gcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcnkgYWNjZXNzaWJsZS4gVG8gY3JlYXRlIGFuIGFydGljbGUgeW91IG5lZWQgYWNjZXNzIHRvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeS4gUGxlYXNlIGNoZWNrIHlvdXIgZ3JvdXAvY2F0ZWdvcnkgcGVybWlzc2lvbiB1bmRlciAtY2F0ZWdvcnkgbWVudS0hJ30gPQogICAgICAgICdObyBzZSBwdWVkZSBhY2NlZGVyIGEgbmluZ3VuYSBjYXRlZ29yw61hLiBQYXJhIGNyZWFyIHVuIGFydGljdWxvIHVzdGVkIGRlYmUgdGVuZXIgYWNjZXNvIGEgbcOtbmltbyB1bmEgY2F0ZWdvcsOtYS4gUG9yIGZhdm9yIHJldmlzZSBzdXMgcGVybWlzb3MgZGUgZ3J1cG8vY2F0ZWdvcsOtYSBlbiBlbCAtbWVuw7ogY2F0ZWdvcsOtYS0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIHBvciBjYWRhIHDDoWdpbmEgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBwb3IgY2FkYSBww6FnaW5hIGNvbW8gcmVzdWx0YWRvIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnQnVzcXVlZGEgcsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMOzbiDCq0luc2VydGFyIHRleHRvIHkgZW5sYWNlIGRlIGxhIEZBUcK7IGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciB0ZXh0byBkZSBsYSBGQVHCuyBlbiBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYXIgZWwgQm90w7NuICJJbnNlcnRhciBWw61uY3VsbyIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGVsIEJvdMOzbiAiSW5zZXJ0YXIgVGV4dG8gJiBWw61uY3VsbyIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdNb3N0cmFyIGVsIEJvdMOzbiAiSW5zZXJ0YXIgVGV4dG8iIGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgYXJ0w61jdWxvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ01vc3RyYXIgZWwgZWRpdG9yIFdZU0lXWUcgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UnfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gbGlnYSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZXMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB0aXRsZSBpcyByZXF1aXJlZC4nfSA9ICdFbCB0w610dWxvIGVzIHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBDYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBTdWJDYXRlZ29yaWVzJ30gPSAnRXN0YSBDYXRlZ29yw61hIGVzIHBhZHJlIGRlIGxhcyBzaWd1aWVudGVzIFN1YkNhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2UocyknfSA9ICdFc3RhIENhdGVnb3LDrWEgZXN0YSBzaWVuZG8gdXNhZGEgcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgTGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBJZGlvbWEgZXN0YSBzaWVuZG8gdXNhZG8gcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGVkJ30gPSAnQWN0dWFsaXphZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgQ2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBBcnRpY2xlISBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IGFub3RoZXIgQ2F0ZWdvcnknfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RhIENhdGVnb3LDrWEuIEVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgYWwgbWVub3MgdW4gQXJ0w61jdWxvIEZBUSB5L28gZXMgcGFkcmUgZGUgYWwgbWVub3Mgb3RyYSBDYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIExhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEnfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RlIElkaW9tYS4gRXN0w6Egc2llbmRvIHVzYWRvIHBvciBhbCBtZW5vcyB1biBBcnTDrWN1bG8gRkFRJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9lc19NWF9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjplc19NWF9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnVWx0aW1vcyBhcnTDrWN1bG9zIG1vZGlmaWNhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1VsdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZGUgYXJ0w61jdWxvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3LDrWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfCoU5vIHNlIGhhIHNlbGVjY2lvbmFkbyBuaW5ndW5hIHB1bnR1YWNpw7NuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdww7pibGljbyAodG9kb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5vIChjbGllbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAoYWdlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdEw61hIGRlIGluaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ01lcyBkZSBpbmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ0HDsW8gZGUgaW5pY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdEw61hIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnTWVzIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdBw7FvIGRlIGZpbmFsaXphY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnwqFHcmFjaWFzIHBvciBzdSB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ8KhVXN0ZWQgeWEgaGEgdm90YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWlyIGVsIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0w61jdWxvcyBGQVEgKFRvcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnTDrWN1bG9zIEZBUSAobnVldm9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0w61jdWxvcyBGQVEgKG1vZGlmaWNhZG9zIHJlY2llbnRlbWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0FjdHVhbGl6YWRhIGNhdGVnb3LDrWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdBw7FhZGlkYSBjYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfCoUxhcyBjYXRlZ29yw61hcyBkZWJlIHRlbmVyIG5vbWJyZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSB5YSBleGlzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0HDsWFkaWRvIGlkaW9tYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnQWN0dWFsaXphZG8gaWRpb21hIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRWwgbm9tYnJlIGVzIGltcHJlc2NpbmRpYmxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0VzdGUgaWRpb21hIHlhIGV4aXN0ZS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnQcOxYWRpciBhcnTDrWN1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ1NlIHJlcXVpZXJlIHVuYSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0Fwcm9iYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGNhdGVnb3LDrWFzIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBw7FhZGlyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQm9ycmFyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdBY2VwdGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0HDsWFkaXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdGFyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlIG1vc3RyYXLDoSBjb21vIGNvbWVudGFyaW8gZW4gZWwgZXhwbG9yYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdQb3IgZmF2b3IsIHNlbGVjY2lvbmUgYWwgbWVub3MgdW4gZ3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhZ2VudGVzIHF1ZSBwdWVkZW4gYWNjZWRlciBhIGxvcyBhcnTDrWN1bG9zIGRlIGVzdGEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnwr9TZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RhIGNhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTm8gcHVlZGUgYm9ycmFyIGVzdGEgY2F0ZWdvcsOtYS4gRXN0w6Egc2llbmRvIHVzYWRhIHBvciBhbCBtZW5vcyB1biBhcnTDrWN1bG8gRkFRIHkvbyBlcyBwYWRyZSBkZSBhbCBtZW5vcyBvdHJhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXN0w6Egc2llbmRvIHVzYWRhIHBvciBsb3Mgc2lndWllbnRlcyBhcnTDrWN1bG9zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXMgcGFkcmUgZGUgbGFzIHNpZ3VpZW50ZXMgc3ViY2F0ZWdvcsOtYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnwr9TZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RlIGFydMOtY3VsbyBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXhwbG9yYWRvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIFLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgQXZhbnphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1YmNhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gc3ViY2F0ZWdvcsOtYXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGVuIGxhIEJpdMOhY29yYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdVdGlsaWNlIGVzdGEgZnVuY2lvbmFsaWRhZCBzaSBkZXNlYSB0cmFiYWphciBjb24gbcO6bHRpcGxlcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBw7FhZGlyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICdCb3JyYXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0HDsWFkaXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfCv1NlZ3VybyBxdWUgZGVzZWEgYm9ycmFyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdObyBwdWVkZSBib3JyYXIgZXN0ZSBpZGlvbWEuIEVzdMOhIHNpZW5kbyB1c2FkbyBwb3IgYWwgbWVub3MgdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIGVzdGEgc2llbmRvIHVzYWRvIHBvciBsb3Mgc2lndWllbnRlcyBBcnTDrWN1bG9zIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0FqdXN0ZXMgZGUgQ29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0w61jdWxvcyBGQVEgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gZGF0b3MgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0luZm9ybWFjacOzbi1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1RleHRvIGNvbXBsZXRvIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnUHVudHVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdQdW50dWFjacOzbiAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnZGUgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfCoU5vIHNlIGVuY29udHLDsyBuaW5nw7puIHZvdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdObyBzZSBlbmNvbnRyw7MgbmluZ8O6biB2b3RvLiBTZWEgZWwgcHJpbWVybyBlbiB2YWxvcmFyIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRGVzY2FyZ2FyIEFkanVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfCv0PDs21vIGRlIMO6dGlsIGZ1ZSBlc3RlIGFydMOtY3Vsbz8gUG9yIGZhdm9yLCBkw6lub3Mgc3UgcHVudHVhY2nDs24geSBheXVkZSBhIG1lam9yYXIgbGEgYmFzZSBkZSBkYXRvcyBkZSBGQVEuIEdyYWNpYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAncG9jbyDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdtdXkgw7p0aWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdJbnNlcnRhciBUZXh0byBkZSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc2VydGFyIEVubGFjZSBhIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnSW5zZXJ0YXIgdGV4dG8geSBFbmxhY2UgYSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGFydMOtY3Vsb3MgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnQsO6c3F1ZWRhIGRlIHRleHRvIGNvbXBsZXRvIGVuIGFydMOtY3Vsb3MgRkFRIChlajogIkpvaG4qbiIgbyAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ0J1c2NhciBhcnTDrWN1bG9zIGNvbiBsYSBwYWxhYnJhIGNsYXZlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQw7pibGljbyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdGaWx0cm8gcGFyYSBlbCBIVE1MIHJlc3VsdGFudGUgcGFyYSBhw7FhZGlyIGVubGFjZXMgYSB1bmEgY2FkZW5hIGRldGVybWluYWRhLiBFbCBlbGVtZW50byBJbWFnZW4gY29udGVtcGxhIGRvcyB0aXBvcyBkZSByZWdpc3Ryb3MuIEVsIHByaW1lcm8gZXMgZWwgbm9tYnJlIGRlIHVuYSBpbWFnZW4gKHBvciBlamVtcGxvIGZhcS5wbmcpLiBFbiBlc3RlIGNhc28gc2UgdXRpbGl6YXLDoSBsYSBydXRhIGRlIGltw6FnZW5lcyBkZSBPVFJTLiBMYSBzZWd1bmRhIHBvc2liaWxpZGFkIGVzIGluc2VydGFyIGVsIGVubGFjZSBhIGxhIGltYWdlbi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ29sb3IgQ1NTIHBhcmEgZWwgcmVzdWx0YWRvIGRlIGxhIHZvdGFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ1RpZW1wbyBkZSB2aWRhIGRlIGxhIGNhY2jDqSBwYXJhIGxvcyBlbGVtZW50b3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgbGFzIENhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ07Dum1lcm8gZGUgZGVjaW1hbGVzIHBhcmEgZWwgcmVzdWx0YWRvIGRlIGxhIHZvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnTm9tYnJlIHByZWRldGVybWluYWRvIGRlIGxhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0lkaW9tYSBwb3Igb21pc2nDs24gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gbW9kbyBpZGlvbWEgw7puaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1ByaW9yaWRhZCBwb3Igb21pc2nDs24gZGUgbG9zIHRpY2tldHMgcGFyYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFc3RhZG8gcG9yIG9taXNpw7NuIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRXN0YWRvIHBvciBvbWlzacOzbiBkZSBsb3MgdGlja2V0cyBwYXJhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdWYWxvciBwb3Igb21pc2nDs24gcGFyYSBlbCBwYXLDoW1ldHJvICJBY3Rpb24iIHBhcmEgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEVsIHBhcsOhbWV0cm8gIkFjdGlvbiIgc2UgdXNhIGVuIGxvcyAic2NyaXB0cyIgZGVsIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIGdlbmVyYWwgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgdmlzdGEgcHJldmlhIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSB1biBsaXN0YWRvIGRlIEZBUXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdERWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgRkFRIHF1ZSBzZSB1c2Fyw6EgcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IExvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gbG9zIHJlc3VsdGFkb3MgZGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIG3DoXMgcmVjaWVudGVzIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3MgbcOhcyByZWNpZW50ZXMgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIEV4cGxvcmFkb3IgZGUgRkFRLiBFc3RhIG9wY2nDs24gbm8gdGllbmUgZWZlY3RvcyBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYml0w6Fjb3JhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYsO6c3F1ZWRhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICdEZWZpbmUgZMOzbmRlIHNlIG1vc3RyYXLDoSBlbCBlbmxhY2UgwqtJbnNlcnRhciBGQVHCuy4gTm90YTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHV5ZSBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSB5IEFnZW50VGlja2V0UmVzcG9uc2libGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaWNpw7NuIGRlbCBjYW1wbyDCq3RleHRvIGxpYnJlwrsgcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0JvcnJhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0hhYmlsaXRhciBtw7psdGlwbGVzIGlkaW9tYXMgZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdIYWJpbGl0YXIgZWwgbWVjYW5pc21vIGRlIHZvdGFjacOzbiBlbiBlbCBtw7NkdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0JpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgcGFyYSBsYSB2aXN0YSBnZW5lcmFsIMKrcGVxdWXDsWHCuyBkZSBsYSBCaXTDoWNvcmEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMw61taXRlIGRlIEZBUSBwb3IgcMOhZ2luYSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIGxhIEJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0zDrW1pdGUgZGUgRkFRIHBvciBww6FnaW5hIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCDCq3BlcXVlw7FhwrsgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdTZXBhcmFkb3IgZGUgbGEgcnV0YSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdFbmNhbWluYWRvciBwYXJhIGxhIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICfDgXJlYS1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnUmVnaXN0cm8gZGUgbcOzZHVsbyAiRnJvbnRlbmQiIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwbyBwYXJhIGxhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlhIGRlIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBjYW1wb3MgaW50ZXJub3MgZW4gbG9zIHRpY2tldHMgYmFzYWRvcyBlbiB1biBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBlbCBub21icmUgZGUgY2FkYSBjYW1wbyBlbiBsb3MgdGlja2V0cyBiYXNhZG9zIGVuIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjZXMgZW4gbGFzIHF1ZSBzZSBkZWJlIG1vc3RyYXIgbGEgYnVzcXVlZGEgcsOhcGlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0JpdMOhY29yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdFbmxhemFyIG90cm8gb2JqZWN0byBhIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gbGEgYml0w6Fjb3JhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZWwgcGVyZmlsIGh0bWwgIk9wZW5TZWFyY2giIHBhcmEgYsO6c3F1ZWRhcyBjb3J0YXMgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOdWV2byBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0xvcyBudWV2b3MgYXJ0w61jdWxvcyBGQVEgcmVxdWllcmVuIGFwcm9iYWNpw7NuIGFudGVzIGRlIHB1YmxpY2Fyc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGNhZGEgcMOhZ2luYSBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gY2FkYSBww6FnaW5hIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIMO6bHRpbW9zIGNhbWJpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIMO6bHRpbW9zIGNyZWFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTsO6bWVybyBkZSBlbGVtZW50b3MgYSBtb3N0cmFyIGVuIGVsIFRvcCAxMC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGUgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgRkFRKSBkZSBsYSB2aXN0YSBnZW5lcmFsIHBlcXVlw7FhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZSBsYXMgcMOhZ2luYXMgKGVuIGxhcyBxdWUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBGQVEpIGRlIGxhIHZpc3RhIGdlbmVyYWwgZGUgRkFRIHBlcXVlw7FhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWlyIGVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZpbGEgcGFyYSBsYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnUG9uZGVyYWNpw7NuIHBhcmEgbGEgdm90YWNpw7NuLiBMYSBjbGF2ZSBkZWJlIGV4cHJlc2Fyc2UgZW4gcG9yY2VudGFqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0LDunNxdWVkYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgcHJlZGV0ZXJtaW5hZGEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBBZ2VudEZBUVpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBwcmVkZXRlcm1pbmFkYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEN1c3RvbWVyRkFRWm9vbSAoeSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgbcOheGltYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEFnZW50RkFRWm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIG3DoXhpbWEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBDdXN0b21lckZBUVpvb20gKHkgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciBlbmxhY2UgYSBGQVHCuyBlbiBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ8K/TW9zdHJhciBjb250ZW5pZG8gSFRNTCBlbiBsb3MgYXJ0w61jdWxvcyBGQVE/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfCv01vc3RyYXIgbGEgcnV0YSBkZSBsYSBGQVE/IHPDrS9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ8K/TW9zdHJhciBsb3MgZWxlbWVudG9zIGRlIGxhcyBzdWJjYXRlZ29yw61hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBhY3R1YWxpemFkb3MgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbG9zIGFydMOtY3Vsb3MgVG9wIDEwIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbGEgdm90YWNpw7NuIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSBlbmxhemFyIGEgdW4gYXJ0w61jdWxvIEZBUSBjb24gb3RybyBvYmpldG8gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgZXNhIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIGJvcnJhciB1biBhcnTDrWN1bG8gRkFRIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIGVzYSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWRpdGFyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgcmV0cm9jZWRlciBlbiBsYSB2aXN0YSBhbXBsaWFkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBwYXJhIHVuYSBGQVEsIHBvciBlamVtcGxvIEZBUSMsIEtCIywgTWlGQVEjLiBGQVEjIGVzIGxhIG9wY2nDs24gcG9yIG9taXNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDdWVycG8gZGVsIHRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQXN1bnRvIGRlbCB0aWNrZXQgcGFyYSBhcHJvYmFjacOzbiBkZSBhcnTDrWN1bG9zIEZBUS4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBuZWVkcyBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cCEnfSA9ICdVbmEgY2F0ZWdvcsOtYSBkZWJlIHRlbmVyIGFsIG1lbm9zIHVuIGdydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBjb21tZW50ISd9ID0gJ1VuYSBjYXRlZ29yw61hIGRlYmUgdGVuZXIgdW4gY29tZW50YXJpbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBjYXRlZ29yeS4nfSA9ICdMb3MgZ3J1cG9zIGFnZW50ZXMgcHVlZGVuIGFjY2VkZXIgYSBlc3RhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZXMnfSA9ICdBcnTDrWN1bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdDYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzZW50aWRvIGRlbCBvcmRlbiBwb3Igb21pc2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgRXhwbG9yZXIgcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0RlZmluZSBkw7NuZGUgZXMgcXVlIGxhIGxpZ2EgXCdJbnNlcnRhciBGQVFcJyBzZXLDoSBkZXNwbGVnYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJ0JvcnJhcjogJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ0J1c3F1ZWRhIGRldGFsbGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgQ2F0ZWdvcnk/J30gPSAnwr9Fc3TDoSBzZWd1cm8gZGUgcXVlcmVyIGJvcnJhciBlc3RhIENhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBMYW5ndWFnZT8nfSA9ICfCv0VzdMOhIHNlZ3VybyBkZSBxdWVyZXIgYm9ycmFyIGVzdGUgSWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ0NsYXZlIGRlIGlkaW9tYSBkZWZpbmlkYSBlbiBlbCBmaWNoZXJvIGRlIGlkaW9tYSAqX0ZBUS5wbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgZGVudHJvIGRlbCBleHBsb3JhZG9yIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGNvbW8gcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcnkgYWNjZXNzaWJsZS4gVG8gY3JlYXRlIGFuIGFydGljbGUgeW91IG5lZWQgYWNjZXNzIHRvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeS4gUGxlYXNlIGNoZWNrIHlvdXIgZ3JvdXAvY2F0ZWdvcnkgcGVybWlzc2lvbiB1bmRlciAtY2F0ZWdvcnkgbWVudS0hJ30gPQogICAgICAgICdObyBzZSBwdWVkZSBhY2NlZGVyIGEgbmluZ3VuYSBjYXRlZ29yw61hLiBQYXJhIGNyZWFyIHVuIGFydGljdWxvIHVzdGVkIGRlYmUgdGVuZXIgYWNjZXNvIGEgbcOtbmltbyB1bmEgY2F0ZWdvcsOtYS4gUG9yIGZhdm9yIHJldmlzZSBzdXMgcGVybWlzb3MgZGUgZ3J1cG8vY2F0ZWdvcsOtYSBlbiBlbCAtbWVuw7ogY2F0ZWdvcsOtYS0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIHBvciBjYWRhIHDDoWdpbmEgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBwb3IgY2FkYSBww6FnaW5hIGNvbW8gcmVzdWx0YWRvIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnQnVzcXVlZGEgcsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMOzbiDCq0luc2VydGFyIHRleHRvIHkgZW5sYWNlIGRlIGxhIEZBUcK7IGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciB0ZXh0byBkZSBsYSBGQVHCuyBlbiBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYXIgZWwgQm90w7NuICJJbnNlcnRhciBWw61uY3VsbyIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGVsIEJvdMOzbiAiSW5zZXJ0YXIgVGV4dG8gJiBWw61uY3VsbyIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdNb3N0cmFyIGVsIEJvdMOzbiAiSW5zZXJ0YXIgVGV4dG8iIGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgYXJ0w61jdWxvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ01vc3RyYXIgZWwgZWRpdG9yIFdZU0lXWUcgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UnfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gbGlnYSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZXMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB0aXRsZSBpcyByZXF1aXJlZC4nfSA9ICdFbCB0w610dWxvIGVzIHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBDYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBTdWJDYXRlZ29yaWVzJ30gPSAnRXN0YSBDYXRlZ29yw61hIGVzIHBhZHJlIGRlIGxhcyBzaWd1aWVudGVzIFN1YkNhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2UocyknfSA9ICdFc3RhIENhdGVnb3LDrWEgZXN0YSBzaWVuZG8gdXNhZGEgcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgTGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBJZGlvbWEgZXN0YSBzaWVuZG8gdXNhZG8gcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGVkJ30gPSAnQWN0dWFsaXphZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgQ2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBBcnRpY2xlISBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IGFub3RoZXIgQ2F0ZWdvcnknfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RhIENhdGVnb3LDrWEuIEVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgYWwgbWVub3MgdW4gQXJ0w61jdWxvIEZBUSB5L28gZXMgcGFkcmUgZGUgYWwgbWVub3Mgb3RyYSBDYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIExhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEnfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RlIElkaW9tYS4gRXN0w6Egc2llbmRvIHVzYWRvIHBvciBhbCBtZW5vcyB1biBBcnTDrWN1bG8gRkFRJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9mYV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpmYV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn2KLYrtix24zZhiDYp9mC2YTYp9mFINiq2LnYsduM2YEg2LTYr9mHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ9ii2K7YsduM2YYg2KfZgtmE2KfZhSDYp9uM2KzYp9ivINi02K/Zhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAn2KjYp9mE2KfYqtix24zZhiDbsduwINmC2YTZhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9iy24zYsSDZhdis2YXZiNi52YfigIzbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9in2YXYqtuM2KfYsiDYsdinINin2YbYqtiu2KfYqCDZhtqp2LHYr9mH4oCM2KfbjNivISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ9ix2YjYsiDYoti62KfYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ9mF2KfZhyDYoti62KfYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAn2LPYp9mEINii2LrYp9iyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICfYsdmI2LIg2b7Yp9uM2KfZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICfZhdin2Ycg2b7Yp9uM2KfZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgeWVhcid9ID0gJ9iz2KfZhCDZvtin24zYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ9in2LIg2LHYp9uMINi02YXYpyDYs9m+2KfYs9qv2LLYp9ix24zZhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfYtNmF2Kcg2YLYqNmE2Kcg2LHYp9uMINiv2KfYr9mH4oCM2KfbjNivISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfYp9iu2KjYp9ixIEZBUSAo27HbsCDYqtin24wg2KjYsdiq2LEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn2KfYrtio2KfYsSBGQVEgKNis2K/bjNiv2Kcg2KfbjNis2KfYryDYtNiv2YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfYp9iu2KjYp9ixIEZBUSAo2KzYr9uM2K/YpyDYqti624zbjNixINuM2KfZgdiq2YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfYqtin24zbjNivJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfYr9ixIEV4cGxvcmVyINio2Ycg2LXZiNix2Kog24zaqSDZhdiq2YYg2KrZiNi224zYrduMINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2K7ZiNin2YfZhtivINi02K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9ii2LHYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgcmFuZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjE4J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjI1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ9mG2YjYtNiq2Ycg2KzYr9uM2K8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ9qv2LHZiNmH4oCM2YfYp9uMINqp2KfYsdi02YbYp9iz24wg2qnZhyDYqNmHINin24zZhiDYr9iz2KrZh+KAjNio2YbYr9uMINiv2LPYqtix2LPbjCDYr9in2LHZhtivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yaWVzJ30gPSAn2K/Ys9iq2YfigIzYqNmG2K/bjOKAjNmH2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlsU2VhcmNoJ30gPSAn2KzYs9iq2KzZiNuMINio2Kcg2KzYstuM24zYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSd9ID0gJ9iv2LPYqtmHIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDYqNmHINmH24zahiDaqdiv2KfZhSDYp9iyINiv2LPYqtmH4oCM2KjZhtiv24zigIzZh9inINmF2YLYr9mI2LEg2YbbjNiz2KouINio2LHYp9uMINin24zYrNin2K8g24zaqSDZhtmI2LTYqtmHINis2K/bjNivINin2YLZhNinINio2Ycg24zaqSDYr9iz2KrZh+KAjNio2YbYr9uMINio2KfbjNivINiv2LPYqtix2LPbjCDYr9in2LTYqtmHINio2KfYtNuM2K8uINmE2LfZgdinINin2LIg2LfYsduM2YIg2YXZhtmI24wgY2F0ZWdvcnkg2K/Ys9iq2LHYs9uM4oCM2YfYp9uMINqv2LHZiNmHL9iv2LPYqtmHINix2Kcg2KjYsdix2LPbjCDZgdix2YXYp9uM24zYryEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2tTZWFyY2gnfSA9ICfYrNiz2KrYrNmI24wg2LPYsduM2LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcmllcyd9ID0gJ9iy24zYsSDYr9iz2KrZh+KAjNmH2KcnOwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9maV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpmaV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdzaXPDpGluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnanVsa2luZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICd1bGtvaW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRLW51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdWaWltZWtzaSBww6Rpdml0ZXR5dCBhcnRpa2tlbGl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1ZpaW1la3NpIGp1bGthaXN0dXQgYXJ0aWtrZWxpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGFydGlra2VsaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdBbGFrYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdFaSB2YWxpdHR1YSBhcnZpb3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ2p1bGtpbmVuIChrYWlra2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICd1bGtvaW5lbiAoYXNpYWtrYWF0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnc2lzw6RpbmVuIChhZ2VudGl0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdBbG9pdHVzcMOkaXbDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ0Fsb2l0dXMga3V1a2F1c2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ0Fsb2l0dXN2dW9zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnTG9wcHVww6RpdsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ0xvcHB1a3V1a2F1c2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdMb3BwdXZ1b3NpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ0tpaXRvcyBhcnZvc3RlbHVzdGFzaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdPbGV0IGpvIGFydm9zdGVsbHV0IHTDpG3DpG4gYXJ0aWtrZWxpbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdUdWxvc3RhIGFydGlra2VsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnRpa2tlbGl0IChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWtrZWxpICh1dWRldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlra2VsaSAocMOkaXZpdGV0dHkgw6Rza2V0dMOkaW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpYSBww6Rpdml0ZXR0eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0thdGVnb3JpYSBsaXPDpHR0eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmlhbGxhIHR1bGVlIG9sbGEgbmltaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ1TDpG3DpCBrYXRlZ29yaWEgb24gam8gb2xlbWFzc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0tpZWxpIGxpc8OkdHR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0tpZWxpIHDDpGl2aXRldHR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdOaW1pIG9uIHBha29sbGluZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnVMOkbcOkIGtpZWxpIG9uIGpvIG9sZW1hc3NhISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdMaXPDpMOkIEZBUSBhcnRpa2tlbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaWEgb24gcGFrb2xsaW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdIeXbDpGtzeW50w6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFROm4gS2F0ZWdvcmlvaWRlbiBoYWxsaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdMaXPDpMOkIGthdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdQb2lzdGEga2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnTGlzw6TDpCBrYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ011b2trYWEga2F0ZWdvcmlhYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnTsOkeXRldMOkw6RuIGtvbW1lbnR0aW5hIFNlbGFpbWVzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnVmFsaXRzZSBhaW5ha2luIHlrc2kgb2lrZXVzcnlobcOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnR0aXJ5aG3DpHQsIGpvaWxsYSBvbiBww6TDpHN5IGFydGlra2VsZWloaW4gdMOkc3PDpCBrYXRlZ29yaWFzc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0hhbHVhdGtvIHZhcm1hc3RpIHBvaXN0YWEgdMOkbcOkbiBrYXRlZ29yaWFuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ0V0IHZvaSBwb2lzdGFhIHTDpHTDpCBrYXRlZ29yaWFhISBTZSBzaXPDpGx0w6TDpCBqb2tvIGFydGlra2VsZWl0YSB0YWkgc2Ugb24gdG9pc2VuIGthdGVnb3JpYW4gaXPDpG50w6RrYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnU2V1cmFhdmF0IGFydGlra2VsaXQga3V1bHV2YXQgdMOkaMOkbiBrYXRlZ29yaWFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdOw6Rtw6Qga2F0ZWdvcmlhdCBvdmF0IHTDpG3DpG4ga2F0ZWdvcmlhbiBhbGFrYXRlZ29yaW9pdGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnSGFsdWF0a28gdmFybWFzdGkgcG9pc3RhYSB0w6Rtw6RuIGFydGlra2VsaW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnU2VsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1Bpa2FoYWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnTW9uaXB1b2xpbmVuIGhha3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ0FsYWthdGVnb3JpYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0aWtrZWxpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ0VpIGFsYWthdGVnb3Jpb2l0YS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUTpuIGtpZWx0ZW4gaGFsbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdLw6R5dMOkIHTDpHTDpCBvbWluYWlzdXV0dGEsIGpvcyBoYWx1YXQga8OkeXR0w6TDpCB1c2VhbXBhYSBraWVsdMOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdMaXPDpMOkIGtpZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ1BvaXN0YSBraWVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdMaXPDpMOkIGtpZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdNdW9ra2FhIGtpZWx0w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0hhbHVhdGtvIHZhcm1hc3RpIHBvaXN0YWEgdMOkbcOkbiBraWVsZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ0V0IHZvaSBwb2lzdGFhIHTDpHTDpCBraWVsdMOkLiBBaW5ha2luIHlrc2kgYXJ0aWtrZWxpIGvDpHl0dMOkw6QgdMOkdMOkIGtpZWx0w6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnU2V1cmFhdmF0IGFydGlra2VsaXQga8OkeXR0w6R2w6R0IHTDpHTDpCBraWVsdMOkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlra2VsZWl0YSBwZXIgc2l2dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdZaHTDpMOkbiBhcnRpa2tlbGlhIGVpIGzDtnl0eW55dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0ZBUSB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICfDhMOkbmVzdHlrc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBoYWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUS1pbmZvcm1hYXRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdBcnZvc3RlbHV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnQXJ2b3N0ZWx1ICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICcvIDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnRWkgw6TDpG5pw6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdFaSBhbm5ldHR1amEgw6TDpG5pw6QhIMOEw6RuZXN0w6QgdMOkdMOkIGFydGlra2VsaWEgZW5zaW1tw6Rpc2Vuw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdMYXRhYSBsaWl0ZXRpZWRvc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnS3VpbmthIGh5w7ZkeWxsaW5lbiB0w6Rtw6QgYXJ0aWtrZWxpIG9saT8gQXJ2b3N0ZWxlIGFydGlra2VsaSwgam90dGEgdm9pbW1lIGtlaGl0dMOkw6QgRkFRLXRpZXRva2FudGFhbW1lLiBLaWl0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnaHnDtmR5dMO2bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdoecO2ZHlsbGluZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdMaXPDpMOkIEZBUS10ZWtzdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0xpc8Okw6QgRkFRLWxpbmtraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnTGlzw6TDpCBGQVEtdGVrc3RpIGphIC1saW5ra2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ1lodMOkw6RuIGFydGlra2VsaWEgZWkgbMO2eXR5bnl0Lic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0hhZSBhcnRpa2tlbGVpc3RhIChlc2ltLiAiTWF0dGkqIiB0YWkgIk1laWsqbmVuIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ0p1bGtpbmVuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdLYXRlZ29yaWFoYWxsaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnS2llbHRlbiBoYWxsaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9mcl9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpmcl9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnRGVybmnDqHJlcyBxdWVzdGlvbnMgbW9kaWZpw6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdEZXJuacOocmVzIHF1ZXN0aW9ucyBjcsOpw6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGRlcyBxdWVzdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTb3VzIGNhdMOpZ29yaWUgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdQYXMgZGUgc8OpbGVjdGlvbiAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3B1YmxpYyAodG91cyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybmUgKGNsaWVudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybmUgKG9ww6lyYXRldXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ0pvdXIgZGUgZMOpcGFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ01vaXMgZGUgZMOpcGFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAnQW5uw6llIGRlIETDqXBhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ0pvdXIgZGUgRmluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ01vaXMgZGUgRmluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnQW5uw6llIGRlIEZpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdNZXJjaSBwb3VyIHZvdHJlIHZvdGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ1ZvdXMgYXZleiBkw6lqw6Agdm90w6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWVyIEFydGljbGUgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGljbGVzIGRlIEZBUSAoVG9wIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGljbGVzIGRlIEZBUSAobm91dmVsbGVzIHF1ZXN0aW9ucyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGljbGVzIGRlIEZBUSAoZGVybmllcnMgY2hhbmdlbWVudHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0NhdMOpZ29yaWUgZGUgRkFRIG1pc2Ugw6Agam91ciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0NhdMOpZ29yaWUgZGUgRkFRIGFqb3V0w6llISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdVbmUgY2F0w6lnb3JpZSBkZXZyYWl0IGF2b2lyIHVuIG5vbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0NldHRlIGNhdMOpZ29yaWUgZXhpc3RlIGTDqWrDoCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0xhbmd1ZSBkZSBGQVEgYWpvdXTDqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnTGFuZ3VlIGRlIEZBUSBtaXNlIMOgIGpvdXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0xlIG5vbSBlc3QgcmVxdWlzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0NldHRlIGxhbmd1ZSBleGlzdGUgZMOpasOgISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBam91dGVyIEFydGljbGUgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnVW5lIGNhdMOpZ29yaWUgZXN0IHJlcXVpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBdXRvcmlzYXRpb24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBDYXTDqWdvcmllcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWpvdXQgQ2F0w6lnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdFZmZhY2VyIENhdMOpZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBam91dCBDYXTDqWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZGl0ZXIgQ2F0w6lnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnU2VyYSBhZmZpY2jDqSBjb21tZSB1biBjb21tZW50YWlyZSBkYW5zIGxcJ0V4cGxvcmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ01lcmNpIGRlIFPDqWxlY3Rpb25uZXIgYXUgbW9pbnMgdW4gZ3JvdXBlIGRlIHBlcm1pc3Npb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcm91cGVzIGRcJ2FnZW50cyBwb3V2YW50IGFjY8OpZGVyIGF1eCBhcnRpY2xlcyBkZSBjZXR0ZSBjYXTDqWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgZWZmYWNlciBjZXR0ZSBjYXTDqWdvcmllPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ0ltcG9zc2libGUgZFwnZWZmYWNlciBjZXR0ZSBjYXTDqWdvcmllLiBFbGxlIGVzdCB1dGlsaXPDqWUgZGFucyBhdSBtb2lucyB1biBhcnRpY2xlIGRlIEZBUSBldC9vdSBlc3QgcGFyZW50ZSBkXCdhdSBtb2lucyB1bmUgYXV0cmUgY2F0w6lnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdDZXR0ZSBjYXTDqWdvcmllIGVzdCB1dGlsaXPDqWUgZGFucyBsZXMgYXJ0aWNsZXMgZGUgRkFRIHN1aXZhbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0NldHRlIGNhdMOpZ29yaWUgZXN0IHBhcmVudGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgZWZmYWNlciBjZXQgYXJ0aWNsZSBkZSBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnTmF2aWdhdGV1ciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnUmVjaGVyY2hlIHJhcGlkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBBdmFuY8OpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU291cy1jYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpY2xlcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdQYXMgZGUgc291cy1jYXTDqWdvcmllIHRyb3V2w6llLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdQYXMgZGUgam91cm5hbCBkZSBkb25uw6llcyBGQVEgdHJvdXbDqSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIExhbmd1ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdVdGlsaXNlciBjZXR0ZSBmb25jdGlvbiBhZmluIGRlIHRyYXZhaWxsZXIgYXZlYyBkZSBtdWx0aXBsZXMgbGFuZ3Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBam91dGVyIHVuZSBsYW5ndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnRWZmYWNlciB1bmUgbGFuZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0Fqb3V0ZXIgdW5lIGxhbmd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdGVyIGxhIGxhbmd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgZWZmYWNlciBjZXR0ZSBsYW5ndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnSW1wb3NzaWJsZSBkXCdlZmZhY2VyIGNldHRlIGxhbmd1ZS4gRWxsZSBlc3QgdXRpbGlzw6llIGRhbnMgYXUgbW9pbnMgdW4gYXJ0aWNsZSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdDZXR0ZSBsYW5ndWUgZXN0IHV0aWxpc8OpZSBkYW5zIGxlcyBhcnRpY2xlcyBGQVEgc3VpdmFudHMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdSw6lnbGFnZXMgZGUgQ29udGV4dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0aWNsZXMgRkFRIHBhciBwYWdlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ3BhcyBkZSBkb25uw6llcyBGQVEgdHJvdXbDqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBGQVEgdGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiNTAnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnRkFRLUluZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1RleHRlIEludMOpZ3JhbCBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9uIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdDb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnJSBkZSBDb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnc3VyIDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnQXVjdW4gdm90ZSB0cm91dsOpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnU295ZXogbGUgcHJlbWllciDDoCBub3RlciBjZXRlIGFydGljbGUgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdUw6lsw6ljaGFyZ2VyIEZpY2hpZXIgSm9pbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdDZXQgQXJ0aWNsZSDDqXRhaXQtaWwgdXRpbGU/IE1lcmNpIGRlIGRvbm5lciB1bmUgbm90ZSBldCBkZSBwYXJ0aWNpcGVyIMOgIGxcJ2Ftw6lsaW9yYXRpb24gZGUgbGEgYmFzZSBkZSBkb25uw6llcy4gTWVyY2khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAncGV1IHV0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3Ryw6hzIHV0aWxlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zw6lyZXIgVGV4dGUgZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc8OpcmVyIExpZW4gZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc8OpcmVyIFRleHRlICYgTGllbiBkYW5zIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnUGFzIGRcJ2FydGljbGUgZGUgRkFRIHRyb3V2w6kuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnUmVjaGVyY2hlIHRleHRlIGludMOpZ3JhbGUgZGFucyBsZXMgYXJ0aWNsZXMgRkFRIChleC4gIkVtaWxpZSoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1JlY2hlcmNoZSBkZXMgQXJ0aWNsZXMgYXZlYyBtb3QgY2zDqSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUHVibGljJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIGRlcyBjYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbSBkZSBjYXTDqWdvcmllIHBhciBkw6lmYXV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1N1cHByaW1lciBjZXR0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ01vZGlmaWVyIGNldHRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlxdWUgZGUgY2V0dGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIGRlcyBsYW5ndWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWVyIGNldHRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1JlY2hlcmNoZSBkYW5zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ0FmZmljaGVyIGxlcyDDqWzDqW1lbnRzIGRlcyBzb3VzLWNhdMOpZ29yaWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB3aGljaCBjYW4gYWNjZXNzIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3JvdXBlcyBkXCdBZ2VudHMgcG91dmFudCBhY2PDqWRlciDDoCBjZXR0ZSBjYXTDqWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdDYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxTZWFyY2gnfSA9ICdEw6l0YWlscyBkZSBsYSByZWNoZXJjaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcnkgYWNjZXNzaWJsZS4gVG8gY3JlYXRlIGFuIGFydGljbGUgeW91IG5lZWQgYWNjZXNzIHRvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeS4gUGxlYXNlIGNoZWNrIHlvdXIgZ3JvdXAvY2F0ZWdvcnkgcGVybWlzc2lvbiB1bmRlciAtY2F0ZWdvcnkgbWVudS0hJ30gPQogICAgICAgICdBdWN1biBjYXTDqWdvcmllIGFjY2Vzc2libGUuIFBvdXIgY3LDqWVyIHVuZSBxdWVzdGlvbiwgdm91cyBkZXZleiBhdm9pciBhY2PDqHMgw6AgYXUgbW9pbnMgdW5lIGNhdMOpZ29yaWUuIFNWUCB2w6lyaWZpZXogbGVzIHBlcm1pc3Npb25zIGRlIHZvdHJlIGdyb3VwZS9jYXTDqWdvcmllIHZpYSBsZSBtZW51IC1jYXTDqWdvcmllLSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnUmVjaGVyY2hlIHJhcGlkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJDYXRlZ29yaWVzJ30gPSAnU291cy1jYXTDqWdvcmllcyc7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9odV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpodV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdiZWxzxZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncHVibGlrdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdrw7xsc8WRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVEtc29yc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTGVndXTDs2JiIHbDoWx0b3pvdHQgZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0xlZ3V0w7NiYiBsw6l0cmVob3pvdHQgZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnQWxrYXRlZ8OzcmnDoWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnTmluY3Mgw6lydMOpa2Vsw6lzIGtpdsOhbGFzenR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnbnlpbHbDoW5vcyAow7Zzc3plcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2vDvGxzxZEgKMO8Z3lmw6lsKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnYmVsc8WRICjDvGd5aW50w6l6xZEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ0tlemTFkSBuYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICdLZXpkxZEgaMOzbmFwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICdLZXpkxZEgw6l2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdaw6Fyw7MgbmFwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ1rDoXLDsyBow7NuYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdaw6Fyw7Mgw6l2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1N6YXZhemF0w6F0IGvDtnN6w7ZuasO8ayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdNw6FyIHN6YXZhem90dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVEgY2lrayBueW9tdGF0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0ZBUSBjaWtrIChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRIGNpa2sgKMO6aiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0ZBUSBjaWtrICh2w6FsdG96b3R0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdGQVEga2F0ZWfDs3JpYSBtw7Nkb3N1bHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdGQVEga2F0ZWfDs3JpYSBob3p6w6FhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdTesO8a3PDqWdlcywgaG9neSBhIGthdGVnw7NyacOhdCBlbG5ldmV6emUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdBIGthdGVnw7NyaWEgbcOhciBsw6l0ZXppayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0ZBUSBueWVsdiBob3p6w6FhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdGQVEgbnllbHYgbcOzZG9zdWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdBIG7DqXYgc3rDvGtzw6lnZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnQSBueWVsdiBtw6FyIGzDqXRlemlrISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdGQVEgY2lrayBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdBIGthdGVnw7NyaWEgc3rDvGtzw6lnZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnSsOzdsOhaGFnecOhcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEga2F0ZWfDs3JpYSBrZXplbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIHTDtnJsw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0thdGVnw7NyaWEgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIHN6ZXJrZXN6dMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0EgYsO2bmfDqXN6xZFiZW4gbWVnamVneXrDqXNrw6ludCBmb2cgbWVnamVsZW5uaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdLw6lyZW0sIHbDoWxhc3N6b24gbGVnYWzDoWJiIGVneSBqb2dvc3VsdHPDoWcgY3NvcG9ydG90Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnw5xneWludMOpesWRIGNzb3BvcnQsIGFtZWx5aWsgaG96esOhZsOpciBhIGNpa2tla2hleiBlYmJlbiBhIGthdGVnw7NyacOhYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIGFrYXJqYSBhIGthdGVnw7NyacOhdD8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdBIGthdGVnw7NyaWEgbmVtIHTDtnLDtmxoZXTFkS4gRkFRIGNpa2sgaGFzem7DoWxqYSB2YWd5IG3DoXMga2F0ZWfDs3JpYSBzesO8bMWRamUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnQSBrYXRlZ8OzcmlhIGEga8O2dmV0a2V6xZEgRkFRIGNpa2tla27DqWwgaGFzem7DoWx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0Ega2F0ZWfDs3JpYSBhIGvDtnZldGtlesWRIGthdGVnw7NyacOhayBzesO8bMWRamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIGFrYXJqYSBlenQgYSBGQVEgY2lra2V0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUS1Cw7ZuZ8Opc3rFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdHeW9yc2tlcmVzw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnw5Zzc3pldGV0dCBrZXJlc8Opcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnQWxrYXRlZ8OzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUSBjaWtrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTmluY3MgYWxrYXRlZ8OzcmlhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdOaW5jcyBGQVEtSm91cm5hbCBhZGF0Lic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdGQVEgbnllbHYga2V6ZWzDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdIYXN6bsOhbGphIGV6dCBhIHN6b2xnw6FsdGF0w6FzdCwgaGEgdMO2YmIgbnllbHZ2ZWwgc3plcmV0bmUgZG9sZ296bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ055ZWx2IGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICdOeWVsdiB0w7ZybMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnTnllbHYgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdOeWVsdiBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdWYWzDs2JhbiB0w7Zyw7Zsbmkgc3plcmV0bsOpIGV6dCBhIG55ZWx2ZXQ/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ0EgbnllbHYgbmVtIHTDtnLDtmxoZXTFkSwgbGVnYWzDoWJiIGVneSBGQVEgY2lrayBoYXN6bsOhbGphISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0V6IGEgbnllbHYgaGFzem7DoWxhdGJhbiB2YW4gYSBrw7Z2ZXRrZXrFkSBGQVEgY2lra27DqWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdUYXJ0YWxvbSBiZcOhbGzDrXTDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdGQVEgY2lra2VrIG9sZGFsYW5rw6ludCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOaW5jcyBGQVEgYWRhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIEZBUSB0YWJsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCI1MCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICdGQVEtaW5mw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdTemF2YXphdG9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRIHRlbGplcyBzesO2dmVnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBrZXJlc8Opcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSByYW5nZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdGQVEgaW5mb3Jtw6FjacOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjE4J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjI1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ8OJcnTDqWtlbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ8OJcnTDqWtlbMOpcyAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnNS1ixZFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ05pbmNzIHN6YXZhemF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTmluY3Mgc3phdmF6YXQhIExlZ3llbiBheiBlbHPFkSwgYWtpIMOpcnTDqWtlbGkgYSBGQVEgY2lra2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnTWVsbMOpa2xldCBsZXTDtmx0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ25lbSBzZWfDrXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnbmFneW9uIHNlZ8OtdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0ZBUSBzesO2dmVnIGJlw61yw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnRkFRIGxpbmsgYmXDrXLDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdGQVEgc3rDtnZlZyDDqXMgbGluayBiZcOtcsOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05lbSB0YWzDoWxoYXTDsyBGQVEgY2lray4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdUZWxqZXMgc3rDtnZlZ2VzIGtlcmVzw6lzIGEgRkFRIGNpa2tla2JlbiAocGwuICJKKm5vcyIgb3IgIktvdioiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ0Npa2tlayBrZXJlc8Opc2Uga3VsY3NzemF2YWtrYWwnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ055aWx2w6Fub3MnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnRWd5IHN6xbFyxZEgYSBIVE1MIGtpbWVuZXRoZXosIGhvZ3kgaG96esOhYWRqb24gbGlua2VrZXQgYSBkZWZpbmnDoWx0IHN6w7Z2ZWdla2hlei4gQXogSW1hZ2UgZWxlbSBrw6l0ZsOpbGUgYmVtZW5ldGV0IGVuZ2VkLiBBIGvDqXAgbmV2ZSBheiBlbHPFkSAocGwuIGZhcS5wbmcpLiBFYmJlbiBheiBlc2V0YmVuIGF6IE9UUlMga8OpcGVrIMO6dHZvbmFsYSBrZXLDvGwgZmVsaGFzem7DoWzDoXNyYS4gQSBtw6Fzb2RpayBsZWhldMWRc8OpZyBhIGvDqXByZSBtdXRhdMOzIGxpbmsgYmVsaWxsZXN6dMOpc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTIHN6aW5layBhIHN6YXZhesOhcyBlcmVkbcOpbnnDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnS2F0ZWfDs3JpYWtlemVsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0Egc3phdmF6w6FzaSBlcmVkbcOpbnkgdGl6ZWRlc2plZ3llaW5layBzesOhbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdBbGFww6lydGVsbWV6ZXR0IGthdGVnw7NyaWEgbmV2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0VneW55ZWx2xbEgbcOzZCBlc2V0w6luIGEgRkFRIGNpa2tlayBhbGFww6lydGVsbWV6ZXR0IG55ZWx2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnRkFRIGNpa2tlayBqw7N2w6FoYWd5w6Fzw6Fob3ogYSBqZWd5ZWsgYWxhcMOpcnRlbG1lemV0dCBwcmlvcml0w6FzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0EgRkFRIGNpa2sgYWxhcMOpcnRlbG1lemV0dCDDoWxsYXBvdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGQVEgY2lra2VrIGrDs3bDoWhhZ3nDoXPDoWhveiBhIGplZ3llayBhbGFww6lydGVsbWV6ZXR0IMOhbGxhcG90YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdBIHB1YmxpYyBmcm9udGVuZCBBY3Rpb24gcGFyYW1ldGVyw6luZWsgYWxhcMOpcnRlbG1lemV0dCDDqXJ0w6lrZS4gQXogQWN0aW9uIHBhcmFtZXRlciBhIHJlbmRzemVyIHNjaXBydC1qZWliZW4ga2Vyw7xsIGZlbGhhc3puw6Fsw6FzcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0VneSDDoXR0ZWtpbnTFkSBtb2R1bHQgZGVmaW5pw6FsIGEgRkFRIGpvdXJuYWwga2ljc2kgbsOpemV0w6luZWsgbWVnbXV0YXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRWd5IMOhdHRla2ludMWRIG1vZHVsdCBkZWZpbmnDoWwgYSBGQVEgbGlzdGEga2ljc2kgbsOpemV0w6luZWsgbWVnbXV0YXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIGF0dHJpYsO6dHVtb2thdCBkZWZpbmnDoWxqYSBhIEZBUSByZW5kZXrDqXNoZXogYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luIGEgRkFRIGtlcmVzw6lzbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIGF0dHJpYsO6dHVtb2thdCBkZWZpbmnDoWxqYSBhIEZBUSByZW5kZXrDqXNoZXogYXogw7xneWbDqWwgZmVsw7xsZXTDqW4gYSBGQVEga2VyZXPDqXNuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIGF0dHJpYsO6dHVtb2thdCBkZWZpbmnDoWxqYSBhIEZBUSByZW5kZXrDqXNoZXogYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4gYSBGQVEga2VyZXPDqXNuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIGF0dHJpYsO6dHVtb2thdCBkZWZpbmnDoWxqYSBhIEZBUSByZW5kZXrDqXNoZXogYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luIGEgRkFRIGLDtm5nw6lzesWRbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiBhbGFww6lydGVsbWV6ZXR0IEZBUSBhdHRyaWLDunR1bW9rYXQgZGVmaW5pw6FsamEgYSBGQVEgcmVuZGV6w6lzaGV6IGF6IMO8Z3lmw6lsIGZlbMO8bGV0w6luIGEgRkFRIGLDtm5nw6lzesWRbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgYXR0cmliw7p0dW1va2F0IGRlZmluacOhbGphIGEgRkFRIHJlbmRlesOpc2hleiBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbiBhIEZBUSBiw7ZuZ8Opc3rFkW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgc29ycmVuZGV0IGRlZmluacOhbGphIGEgRkFRIGLDtm5nw6lzesWRYmVuIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4gVXA6IHLDqWdlYmJpZWsgZmVsw7xsLCBEb3duOiBsZWdmcmlzc2ViYiBmZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgc29ycmVuZGV0IGRlZmluacOhbGphIGEgRkFRIGLDtm5nw6lzesWRYmVuIGF6IMO8Z3lmw6lsIGZlbMO8bGV0w6luLiBVcDogcsOpZ2ViYmllayBmZWzDvGwsIERvd246IGxlZ2ZyaXNzZWJiIGZlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgc29ycmVuZGV0IGRlZmluacOhbGphIGEgRkFRIGLDtm5nw6lzesWRYmVuIGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLiBVcDogcsOpZ2ViYmllayBmZWzDvGwsIERvd246IGxlZ2ZyaXNzZWJiIGZlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgc29ycmVuZGV0IGRlZmluacOhbGphIGEga2VyZXPDqXNuw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4gVXA6IHLDqWdlYmJpZWsgZmVsw7xsLCBEb3duOiBsZWdmcmlzc2ViYiBmZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIHNvcnJlbmRldCBkZWZpbmnDoWxqYSBhIGtlcmVzw6lzbsOpbCBheiDDvGd5ZsOpbCBmZWzDvGxldMOpbi4gVXA6IHLDqWdlYmJpZWsgZmVsw7xsLCBEb3duOiBsZWdmcmlzc2ViYiBmZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdBeiBhbGFww6lydGVsbWV6ZXR0IEZBUSBzb3JyZW5kZXQgZGVmaW5pw6FsamEgYSBrZXJlc8Opc27DqWwgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uIFVwOiByw6lnZWJiaWVrIGZlbMO8bCwgRG93bjogbGVnZnJpc2VzYmIgZmVsw7xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnQSBGQVEgYsO2bmfDqXN6xZFiZW4gbMOhdGhhdMOzIG9zemxvcG9rYXQgZGVmaW5pw6FsamEuIEEgcGFyYW3DqXRlciBuaW5jcyBoYXTDoXNzYWwgYXogb3N6bG9wIHBvesOtY2nDs2rDoXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0EgRkFRIGpvdXJuYWwtYmFuIGzDoXRoYXTDsyBvc3psb3Bva2F0IGRlZmluacOhbGphLiBBIHBhcmFtw6l0ZXIgbmluY3MgaGF0w6Fzc2FsIGF6IG9zemxvcCBwb3rDrWNpw7Nqw6FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0EgRkFRIGtlcmVzw6lzbsOpbCBsw6F0aGF0w7Mgb3N6bG9wb2thdCBkZWZpbmnDoWxqYS4gQSBwYXJhbcOpdGVyIG5pbmNzIGhhdMOhc3NhbCBheiBvc3psb3AgcG96w61jacOzasOhcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0KICAgICAgICAnRGVmaW5pw6FsamEsIGhvZ3kgYSBcJ0luc2VydCBGQVFcJyBsaW5rIGhvbCBsw6F0aGF0w7MuIE1lZ2plZ3l6w6lzOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiB0YXJ0YWxtYXp6YSBheiBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSDDqXMgIEFnZW50VGlja2V0UmVzcG9uc2libGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0EgRkFRIGNpa2sgc3phYmFkLXN6w7Z2ZWdlcyBtZXrFkWrDqXQgZGVmaW5pw6FsamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1TDtnLDtmxkIGV6dCBhIEZBUS10JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdTemVya2VzemQgZXp0IGEgRkFRLXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ1TDtmJiIG55ZWx2IGhhc3puw6FsYXTDoXQgZW5nZWTDqWx5ZXppIGEgRkFRIG1vZHVsYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ0Egc3phdmF6w6FzIGVuZ2Vkw6lseWV6w6lzZSBhIEZBUSBtb2R1bGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEgSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFRIEpvdXJuYWwgw6F0dGVraW50xZEgImtpY3NpIG7DqXpldCIgbGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEgw6F0dGVraW50xZEgIktpY3NpIG7DqXpldCIgbGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnRkFRIGxpbWl0IG9sZGFsYW5rw6ludCBhIEZBUSBKb3VybmFsIMOhdHRla2ludMWRICJraWNzaSBuw6l6ZXTDqWhleiInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0ZBUSBsaW1pdCBvbGRhbGFua8OpbnQgYSBGQVEgIMOhdHRla2ludMWRICJraWNzaSBuw6l6ZXTDqWhleiInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ0ZBUSDDunR2b25hbCBlbHbDoWxhc3p0w7MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnRkFRLXRlcsO8bGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0EgbnlpbHbDoW5vcyBpbnRlcmZhY2UgZnJvbnRlbmQgbW9kdWxlIHJlZ2lzenRyw6FjacOzamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0Nzb3BvcnQgYSBGQVEgY2lrayBqw7N2w6FoYWd5w6FzaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnRkFRIHTDtnJ0w6luZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdCZWxzxZEgbWV6xZFrZXQgdGFydGFsbWF6IGEgRkFRIGFsYXDDuiBqZWd5ZWtoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnTWluZGVuIG1lesWRIG5ldsOpdCB0YXJ0YWxtYXp6YSBhIEZBUSBhbGFww7ogamVneWVrYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnRmVsw7xsZXQsIGFob2wgYSBneW9yc2tlcmVzw6lzIGzDoXRoYXTDsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ055ZWx2ZWsga2V6ZWzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0EgRkFRIGVsZW1iZW4gbcOhcyBvYmpla3R1bXJhIHZhbMOzIGhpdmF0a296w6FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgbWF4aW3DoWxpcyBzesOhbWEgYSBGQVEgYsO2bmfDqXN6xZEgw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBtYXhpbcOhbGlzIHN6w6FtYSBhIEZBUSBiw7ZuZ8Opc3rFkSDDvGd5ZsOpbCBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgbWVnamVsZW7FkSBGQVEgY2lra2VrIG1heGltw6FsaXMgc3rDoW1hIGEgRkFRIGLDtm5nw6lzesWRIG55aWx2w6Fub3MgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBtYXhpbcOhbGlzIHN6w6FtYSBhIEZBUSBqb3VybmFsIMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBtYXhpbcOhbGlzIHN6w6FtYSBhIGtlcmVzw6lzbsOpbCBheiDDvGd5aW50w6l6xZEgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgbWF4aW3DoWxpcyBzesOhbWEgYSBrZXJlc8Opc27DqWwgYXogw7xneWbDqWwgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgbWVnamVsZW7FkSBGQVEgY2lra2VrIG1heGltw6FsaXMgc3rDoW1hIGEga2VyZXPDqXNuw6lsIGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnTW9kdWwgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgbMOpdHJlaG96w6Fzw6Fob3ogcsO2dmlkIEZBUSBrZXJlc8Opc27DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ8OaaiBGQVEgY2lrayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdBeiDDumogRkFRIGNpa2sgasOzdsOhaGFnecOhc2Egc3rDvGtzw6lnZXMgYSBwdWJsaWvDoWzDoXMgZWzFkXR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBzesOhbWEgYSBGQVEgYsO2bmfDqXN6xZEgw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgc3rDoW1hIGEgRkFRIGLDtm5nw6lzesWRIG55aWx2w6Fub3MgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgbWVnamVsZW7FkSBGQVEgY2lra2VrIHN6w6FtYSBtaW5kZW4gbGFwb24gYSBrZXJlc8Opc27DqWwgYXogw7xneWbDqWwgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBzesOhbWEgbWluZGVuIGxhcG9uIGEga2VyZXPDqXNuw6lsIGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0EgbWVnamVsZW7FkSBlbGVtZWsgc3rDoW1hIGF6IHV0b2xzw7MgIG3Ds2Rvc3VsdGFrbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdBIG1lZ2plbGVuxZEgZWxlbWVrIHN6w6FtYSBheiB1dG9sc8OzIGzDqXRyZWhvem90dGFrbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdBIG1lZ2plbGVuxZEgZWxlbWVrIHN6w6FtYSBhIFRPUDEwLW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBhIGxhcG9raG96IChhbWVseWVrZW4gYSBGQVEgZWxlbWVrIG1lZ2plbGVubmVrKSBhIGtpY3NpIEZBUSBqb3VybmFsIMOhdHRla2ludMOpc8OpbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBhIGxhcG9raG96IChhbWVseWVrZW4gYSBGQVEgZWxlbWVrIG1lZ2plbGVubmVrKSBhIGtpY3NpIEZBUSDDoXR0ZWtpbnTDqXPDqW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnTnlvbXRhc2QgZXp0IGEgRkFRLXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnVsOhcsOzbGlzdGEgYSBGQVEgY2lra2VrIGrDs3bDoWhhZ3nDoXPDoWhveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ8OJcnTDqWtlayBhIHN6YXZhesOhc2hvei4gQSBrdWxjcyBzesOhemFsw6lrIGtlbGwgbGVneWVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnRkFRIGtlcmVzw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNZWdtdXRhdGphIGEgIkZBUSBsaW5rIGJlc3rDunLDoXMiIGdvbWJvdCBheiBBZ2VudEZBUVpvb21TbWFsbCBhIG55aWx2w6Fub3MgRkFRIGNpa2tla2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnRkFRIGNpa2sgbWVnamVsZW7DrXTDqXNlIEhUTUwtYmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ0ZBUSDDunR2b25hbCBtZWdqZWxlbsOtdMOpc2UgaWdlbi9uZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdBeiBhbGthdGVnw7NyaWEgZWxlbWVpbmVrIG1lZ2plbGVuw610w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdBeiB1dG9sc8OzIG3Ds2Rvc8OtdG90dCBlbGVtZWsgbWVnamVsZW7DrXTDqXNlIGEgZGVmaW5pw6FsdCBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnQXogdXRvbHPDsyBsw6l0cmVob3pvdHQgZWxlbWVrIG1lZ2plbGVuw610w6lzZSBhIGRlZmluacOhbHQgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0EgVE9QIDEwIGVsZW1layBtZWdqZWxlbsOtdMOpc2UgYSBkZWZpbmnDoWx0IGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdTemF2YXrDoXMgbWVnamVsZW7DrXTDqXNlIGEgZGVmaW5pw6FsdCBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVuZ2VkaSBhIEZBUSBsaW5rZWzDqXPDqXQgbcOhcyBvYmpla3R1bW9ra2FsIGEgRkFRIHLDqXN6bGV0ZWluw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaW5rIG1lZ2plbGVuw610w6lzZSBhIG1lbsO8YmVuIGFtaSBlbmdlZGkgYSBGQVEgdMO2cmzDqXPDqXQgYSBGQVEgcsOpc3psZXRlaW7DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVsw6lyaSBhIEZBUSB0w7ZydMOpbmV0w6l0IGEgRkFRIHLDqXN6bGV0ZWluw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVuZ2VkaSBhIEZBUSBzemVya2VzenTDqXPDqXQgYSBGQVEgcsOpc3psZXRlaW7DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGluayBtZWdqZWxlbsOtdMOpc2UgYSBtZW7DvGJlbiBhbWkgZW5nZWRpIGEgdmlzc3phbMOpcMOpc3QgYSBGQVEgcsOpc3psZXRlaW7DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVuZ2VkaSBhIEZBUSBueW9tdGF0w6Fzw6F0IGEgRkFRIHLDqXN6bGV0ZWluw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnQSBGQVEgYXpvbm9zw610w7NqYSwgcGwuIEZBUSMsIEtCIywgTXlGQVEjLiBBeiBhbGFww6lydGVsbWV6ZXR0OiBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBkZWZpbmnDoWxqYSwgaG9neSBhIFwnRkFRXCcgb2JqZWt0dW0gw7Zzc3pla2FwY3NvbGhhdMOzIG3DoXMgXCdGQVFcJyBvYmpla3R1bW1hbCBcJ05vcm1hbFwnIGxpbmsgdMOtcHVzIGhhc3puw6FsYXTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBkZWZpbmnDoWxqYSwgaG9neSBhIFwnRkFRXCcgb2JqZWt0dW0gw7Zzc3pla2FwY3NvbGhhdMOzIG3DoXMgXCdGQVFcJyBvYmpla3R1bW1hbCBcJ1BhcmVudENoaWxkXCcgbGluayB0w61wdXMgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBkZWZpbmnDoWxqYSwgaG9neSBhIFwnRkFRXCcgb2JqZWt0dW0gw7Zzc3pla2FwY3NvbGhhdMOzIG3DoXMgXCdKZWd5XCcgb2JqZWt0dW1tYWwgXCdOb3JtYWxcJyBsaW5rIHTDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXogYSBiZcOhbGzDrXTDoXMgZGVmaW5pw6FsamEsIGhvZ3kgYSBcJ0ZBUVwnIG9iamVrdHVtIMO2c3N6ZWthcGNzb2xoYXTDsyBtw6FzIFwnSmVneVwnIG9iamVrdHVtbWFsIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHTDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdKZWd5IHTDtnJ6c2UgYSBGQVEgY2lrayBqw7N2w6FoYWd5w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdKZWd5IHTDoXJneWEgYSBGQVEgY2lrayBqw7N2w6FoYWd5w6Fzw6Fob3ouJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXJzIGltIEt1bmRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBQdWJsaWMtSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gS3VuZGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gUHVibGljLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgRXhwbG9yZXIgcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXJzIGltIEFnZW50ZW4tSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlOiAnfSA9ICdMw7ZzY2hlbjogJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAnQSAqX0ZBUS5wbSBmw6FqbGJhbiBkZWZpbmnDoWx0IG55ZWx2IGt1bGNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gS3VuZGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gUHVibGljLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBLdW5kZW4tSW50ZXJmYWNlIHBybyBTZWl0ZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZSBwcm8gU2VpdGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGltIEt1bmRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01lZ211dGF0amEgYSAiRkFRIGxpbmsgw6lzIHN6w7Z2ZWcgYmVzesO6csOhcyIgZ29tYm90IGF6IEFnZW50RkFRWm9vbVNtYWxsIGEgbnlpbHbDoW5vcyBGQVEgY2lra2VraGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdNZWdtdXRhdGphIGEgIkZBUSBzesO2dmVnIGJlc3rDunLDoXMiIGdvbWJvdCBheiBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1plaWdlICJMaW5rIEVpbmbDvGdlbiItQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGbDvHIgw7ZmZmVudGxpY2hlIEZBUS1BcnRpa2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1plaWdlICJUZXh0ICYgTGluayBFaW5mw7xnZW4iLUJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdaZWlnZSAiVGV4dCBFaW5mw7xnZW4iLUJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnV1lTSVdZRyBlZGl0b3IgbWVnamVsZW7DrXTDqXNlIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9qYV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpqYV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICflhoXpg6jlkJEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAn5YWs6ZaLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn5aSW6YOo5ZCRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVHjg4rjg7Pjg5Djg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn6KmV5L6h44GM6YG45oqe44GV44KM44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAn5LiA6KanJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ+WFrOmWiyAo5YWo5ZOhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAn5aSW6YOoICjpoaflrqIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICflhoXpg6ggKOaLheW9k+iAhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn6KmV5L6h44KS44GE44Gf44Gg44GN44GC44KK44GM44Go44GG44GU44GW44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn44GC44Gq44Gf44Gv44GZ44Gn44Gr6KmV5L6h5riI44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAn6KiY5LqL5Y2w5Yi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ+S4iuS9jTEw5Lu244Gu6KiY5LqLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn5paw552A6KiY5LqLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfmnIDov5Hmm7TmlrDjgZXjgozjgZ/oqJjkuosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAn44Kr44OG44K044Oq44GM5pu05paw44GV44KM44G+44GX44Gf44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICfmlrDjgZfjgYTjgqvjg4bjgrTjg6rjgYzov73liqDjgZXjgozjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn44CM5ZCN5YmN44CN44Gv5b+F6aCI6aCF55uu44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjga/jgZnjgafjgavlrZjlnKjjgZfjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ+iogOiqnuOBjOi/veWKoOOBleOCjOOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfoqIDoqp7jgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAn44CM5ZCN5YmN44CN44Gv5b+F6aCI6aCF55uu44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAn44GT44Gu6KiA6Kqe44Gv6Kit5a6a5riI44Gn44GZ44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0ZBUeOBruaWsOimj+i/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ+OCq+ODhuOCtOODquOBr+W/hemgiOmgheebruOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ+aJv+iqjSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEg44Kr44OG44K044Oq566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ+OCq+ODhuOCtOODquOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICfjgqvjg4bjgrTjg6rjgpLliYrpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICfjga/jgYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAn44Kr44OG44K044Oq44KS6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfjgqvjg4bjgrTjg6rjgpLnt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ+S4gOimp+OBp+OCs+ODoeODs+ODiOOBqOOBl+OBpuihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ+OBsuOBqOOBpOS7peS4iuOBruaoqemZkOOBruOCsOODq+ODvOODl+OCkumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAn44GT44Gu44Kr44OG44K044Oq44Gn6aCF55uu44Gr44Ki44Kv44K744K544Gn44GN44KL44Ko44O844K444Kn44Oz44OI44Kw44Or44O844OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjgpLliYrpmaTjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICfjgZPjga7jgqvjg4bjgrTjg6rjgpLliYrpmaTjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgILkuIDjgaTku6XkuIrjga5GQVHoqJjkuovjgafkvb/nlKjjgZXjgozjgabjgYTjgovjgYvjgIHjgb7jgZ/jga/ku5bjga7jgqvjg4bjgrTjg6rjga7opqrjgqvjg4bjgrTjg6rjgavjgarjgaPjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjga/ku6XkuIvjga7oqJjkuovjgafkvb/nlKjjgZXjgozjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAn44GT44Gu44Kr44OG44K044Oq44Gv5Lul5LiL44Gu44Kr44OG44K044Oq44Gu6Kaq44Kr44OG44K044Oq44Gn44GZ44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ+OBk+OBruiomOS6i+OCkuWJiumZpOOBl+OBpuOCiOOCjeOBl+OBhOOBp+OBmeOBi++8nyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUeS4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICfmpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfpq5jmqZ/og73mpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ+OCteODluOCq+ODhuOCtOODqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdGQVHpoIXnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICflrZDjgqvjg4bjgrTjg6rjga/jgYLjgorjgb7jgZvjgpPjgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn44K444Oj44O844OK44Or44Gu5oOF5aCx44GM44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUSDoqIDoqp7nrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICflpJroqIDoqp7jgafkvZzmpa3jgpLjgZfjgZ/jgYTloLTlkIjjgIHjgZPjga7poIXnm67jgpLoqK3lrprjgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn6KiA6Kqe44KS6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ+iogOiqnuOCkuWJiumZpCc7CiAgICAkU2VsZi0+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+OCs+ODs+ODhuOCreOCueODiOOBruioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfjg5rjg7zjgrjmr47jga7oqJjkuovmlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnRkFR44OH44O844K/44Gv44GC44KK44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBGQVEgdGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiNTAnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnRkFR5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVHlhajmlocnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUeaDheWgsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfjg6zjg7zjg4bjgqPjg7PjgrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICfjg6zjg7zjg4bjgqPjg7PjgrDvvIjvvIXvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICc144Gk5pif44Gu44GG44GhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ+aKleelqOOBr+OBguOCiuOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAn5oqV56Wo44Gv44GC44KK44G+44Gb44KT44CC44GT44Gu6KiY5LqL44Gr5aeL44KB44Gm6KmV5L6h44KS5oqV56Wo44GX44G+44GX44KH44GG44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICfmt7vku5jjg5XjgqHjgqTjg6vjgpLjg4Djgqbjg7Pjg63jg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICfjgYLjgb7jgorlvbnjgavnq4vjgZ/jgarjgYvjgaPjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn44Go44Gm44KC5b2544Gr56uL44Gj44GfJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn6KiY5LqL44KS5oy/5YWl44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICfjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ+iomOS6i+OBqOODquODs+OCr+OCkuaMv+WFpeOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAn6Kmy5b2T44GZ44KL6KiY5LqL44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnRkFR5YWo5paH5qSc57Si77yI5L6L77yaIkpvaG4qbiLjgIEiV2lsbCoi77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAn6KiY5LqL44Gu44Kt44O844Ov44O844OJ5qSc57SiJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICflhazplosnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn6KmV5L6h44Gu57WQ5p6c6KGo56S644KI44GG44Gu44Kr44Op44O877yI44K544K/44Kk44Or44K344O844OI77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+OCq+ODhuOCtOODquODvOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfmipXnpajjga7ntZDmnpzjga7lsI/mlbDngrnku6XkuIvjga7moYHmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ+aXouWumuOBruOCq+ODhuOCtOODqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAn6KaP5a6a44Gu6KiA6Kqe77yI5Y2Y5LiA6KiA6Kqe44Oi44O844OJ44Gn6YGL55So5pmC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0ZBUeOBuOOBruWPluOCiui+vOOBv+OCkuihjOOBhuODgeOCseODg+ODiOOBruWEquWFiOmghuS9jeOBruaXouWumuWApCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAn6KiY5LqL44Ko44Oz44OI44Oq44O85pmC44Gu6KaP5a6a44Gu44K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGQVHjgbjjga7lj5bjgorovrzjgb/jgpLooYzjgYbjg4HjgrHjg4Pjg4jjga7lhKrlhYjpoIbkvY3jga7ml6LlrprlgKQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICflhazplovnlLvpnaLnlKjjg5Hjg6njg6Hjg7zjgr/jga7jg4fjg5Xjgqnjg6vjg4jlgKTjgILjg5Hjg6njg6Hjg7zjgr/vvIhBY3Rpb249WFhYWFhY77yJ44Gv44CB44K544Kv44Oq44OX44OI44Gn5L2/55So44GV44KM44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ+ewoeaYk+eJiEZBUeOCuOODo+ODvOODiuODq+ihqOekuueUqOODouOCuOODpeODvOODq+OBruamguimgeOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICfnsKHmmJPniYhGQVHkuIDopqfooajnpLrnlKjjg6Ljgrjjg6Xjg7zjg6vjga7mpoLopoHjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOeUqOeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI55So55S76Z2i77yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i77yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdou+8iEZBUeS4gOimp++8ieOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOeUqOeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBruihqOekuumghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglwnVXBcJ+KGkuWPpOOBhOmghiAvIFwnRG93blwn4oaS5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gu6KGo56S66aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gu6KGo56S66aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI55So55S76Z2i77yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglwnVXBcJ+KGkuWPpOOBhOmghiAvIFwnRG93blwn4oaS5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jnlKjnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHkuIDopqfjgafjga7ooajnpLrpoIXnm67jga7oqK3lrprjgILjgZPjga7oqK3lrprjgavjgojjgaPjgabpoIXnm67jga7kuKbjgbPpoIbjgpLliLblvqHjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfpoaflrqLnlKjnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHkuIDopqfjgafjga7ooajnpLrpoIXnm67jga7oqK3lrprjgILjgZPjga7oqK3lrprjgavjgojjgaPjgabpoIXnm67jga7kuKbjgbPpoIbjgpLliLblvqHjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBp+OBruihqOekuumgheebruOBruioreWumuOAguOBk+OBruioreWumuOBq+OCiOOBo+OBpumgheebruOBruS4puOBs+mghuOCkuWItuW+oeOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJ+Wumue+qea4iOOBruimgee0oOOBq+ODquODs+OCr+OCkuS7mOWKoOOBmeOCi+ODouOCuOODpeODvOODq+OBp+OBmeOAgueUu+WDj+imgee0oOOBq+OBpOOBhOOBpuOBrzLpgJrjgorjga7lhaXlipvmlrnms5XjgYzjgYLjgorjgb7jgZnjgILjgbLjgajjgaTjga/jgIxmYXEucG5n44CN44Gu44KI44GG44Gr55S75YOP44Gu44OV44Kh44Kk44Or5ZCN44KS5oyH5a6a44GZ44KL5pa55rOV44CC44GT44Gu44Kx44O844K544Gn44GvT1RSU+OBruOCpOODoeODvOOCuOODkeOCueOBjOS9v+eUqOOBleOCjOOBvuOBmeOAguOCguOBhuOBsuOBqOOBpOOBr1VSTOOCkuaMh+WumuOBmeOCi+aWueazleOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdGQVHjga7jg5Xjg6rjg7zjg4bjgq3jgrnjg4jjg5XjgqPjg7zjg6vjg4njga7lrprnvqnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn44GT44Gu6KiY5LqL44KS5YmK6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfjgZPjga7oqJjkuovjgpLnt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ+WkmuiogOiqnuOCkuacieWKueOBq+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ+ipleS+oeOBruapn+iDveOCkuacieWKueOBq+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSDjgrjjg6Pjg7zjg4rjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0ZBUeOCuOODo+ODvOODiuODq+S4gOimpyhTKeOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0ZBUeS4gOimpyhTKeOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdGQVHjgrjjg6Pjg7zjg4rjg6vkuIDopqcoUynjga4x44Oa44O844K45q+O44Gu6KGo56S65pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdGQVHkuIDopqcoUynjga4x44Oa44O844K45q+O44Gu6KGo56S65pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICfjg5HjgrnjgqTjg7Pjg5XjgqnjgpLkvb/nlKjjgZnjgovpmpvjga7jgrvjg5Hjg6zjg7zjgr/mloflrZfvvIjkvovvvJpcJy9cJ++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAn44Ko44O844K444Kn44Oz44OI55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si44Gu44OQ44OD44Kv44Ko44Oz44OJ44Or44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ+WFrOmWi+eUu+mdouOBruODleODreODs+ODiOOCqOODs+ODieODouOCuOODpeODvOODq+OBruWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGQVHjga7oqJjkuovjga7mib/oqo3jga7jgZ/jgoHjga7jgrDjg6vjg7zjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ+OBk+OBruiomOS6i+OBruWxpeattCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnRkFR55Sx5p2l44Gu44OB44Kx44OD44OI44Gr5ZCr44G+44KM44KL5YaF6YOo6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnRkFR55Sx5p2l44Gu44OB44Kx44OD44OI44Gr5ZCr44G+44KM44KL5YaF6YOo6aCF55uu44GZ44G544Gm44Gu5ZCN56ewJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICfmpJzntKLnqpPjgpLooajnpLrjgZnjgovnlLvpnaLjgpLoqK3lrponOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ+OCuOODo+ODvOODiuODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn6KiA6Kqe566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ+OBk+OBruiomOS6i+OBi+OCieS7luOBruiomOS6i+OBuOOBruODquODs+OCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI55S76Z2i44GuRkFR5LiA6Kan44Gn6KGo56S644GZ44KL6KiY5LqL44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuoueUqOeUu+mdouOBrkZBUeS4gOimp+OBp+ihqOekuuOBmeOCi+iomOS6i+OBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44GuRkFR5LiA6Kan44Gn6KGo56S644GZ44KL6KiY5LqL44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jnlLvpnaLjga5GQVHjgrjjg6Pjg7zjg4rjg6vjgafooajnpLrjgZnjgovoqJjkuovjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ+OAjOacgOi/keOBruWkieabtOOAjeOBq+S9leS7tuOBvuOBp+ihqOekuuOBmeOCi+OBiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ+OAjOacgOaWsOOBruaWsOimj+S9nOaIkOOAjeOBq+S9leS7tuOBvuOBp+ihqOekuuOBmeOCi+OBiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ+OAjOODiOODg+ODlzEw6KiY5LqL44CN44Gr5L2V5Lu244G+44Gn6KGo56S644GZ44KL44GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ+ewoeaYk+eJiEZBUeOCuOODo+ODvOODiuODq+S4gOimp+OBruODmuODvOOCuOaMh+WumueUqOOBruODkeODqeODoeODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn57Ch5piT54mIRkFR5qaC6KaB44Gu44Oa44O844K45oyH5a6a55So44Gu44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn44GT44Gu6KiY5LqL44KS5Y2w5Yi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+iomOS6i+aJv+iqjeOCreODpeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ+ipleS+oeeOh+OAguOCreODvOOBr+OAgeODkeODvOOCu+ODs+ODiOOBp+aMh+WumuOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnRkFR44KS5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdcJ0FnZW50RkFRWm9vbVNtYWxsXCfjga7oqK3lrprjgILlhazplovnlLvpnaLjgavjgYrjgYTjgabjgIzjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgovjgI3jg5zjgr/jg7PjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ+iomOS6i+OBp0hUTUzjgr/jgrDjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ+iomOS6i+OBruODkeOCueOCkuihqOekuuOBmeOCiy/ooajnpLrjgZfjgarjgYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ+OCteODluOCq+ODhuOCtOODquODvOOBruODiOODlOODg+OCr+OCkuihqOekuuOBmeOCiy/ooajnpLrjgZfjgarjgYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn5pyA5paw44Gu5aSJ5pu044KS6KGo56S644GZ44KL55S76Z2i77yI44Ko44O844K444Kn44Oz44OI55SoL+mhp+WuoueUqC/lhazplovvvInjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+acgOaWsOOBruaWsOimj+S9nOaIkOOCkuihqOekuuOBmeOCi+eUu+mdou+8iOOCqOODvOOCuOOCp+ODs+ODiOeUqC/poaflrqLnlKgv5YWs6ZaL77yJ44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfjg4jjg4Pjg5cxMOOCkuihqOekuuOBmeOCi+eUu+mdou+8iOOCqOODvOOCuOOCp+ODs+ODiOeUqC/poaflrqLnlKgv5YWs6ZaL77yJ44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfoqZXkvqHjgpLooajnpLrjgZnjgovnlLvpnaLvvIjjgqjjg7zjgrjjgqfjg7Pjg4jnlKgv6aGn5a6i55SoL+WFrOmWi++8ieOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+KAmE5vcm1hbOKAmeODquODs+OCr+ODu+OCv+OCpOODl+OCkuS9v+eUqOOBl+OBpuOAgeKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBjOS7luOBruKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBqOODquODs+OCr+OBleOCjOOCi+OCiOOBhuOBq+OAgeWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+KAmFBhcmVudENoaWxk4oCZ44Oq44Oz44Kv44O744K/44Kk44OX44KS5L2/55So44GX44Gm44CB4oCYRkFR4oCZ44Kq44OW44K444Kn44Kv44OI44GM5LuW44Gu4oCYRkFR4oCZ44Kq44OW44K444Kn44Kv44OI44Go44Oq44Oz44Kv44GV44KM44KL44KI44GG44Gr44CB5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+KAmE5vcm1hbOKAmeODquODs+OCr+ODu+OCv+OCpOODl+OCkuS9v+eUqOOBl+OBpuOAgeKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBjOS7luOBruKAmFRpY2tldOKAmeOCquODluOCuOOCp+OCr+ODiOOBqOODquODs+OCr+OBleOCjOOCi+OCiOOBhuOBq+OAgeWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+KAmFBhcmVudENoaWxk4oCZ44Oq44Oz44Kv44O744K/44Kk44OX44KS5L2/55So44GX44Gm44CB4oCYRkFR4oCZ44Kq44OW44K444Kn44Kv44OI44GM5LuW44Gu4oCYVGlja2V04oCZ44Kq44OW44K444Kn44Kv44OI44Go44Oq44Oz44Kv44GV44KM44KL44KI44GG44Gr44CB5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBq+OCouOCr+OCu+OCueWPr+iDveOBquOCqOODvOOCuOOCp+ODs+ODiOOCsOODq+ODvOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yaWVzJ30gPSAn44Kr44OG44K044OqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ+ips+e0sOaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmREYXknfSA9ICfntYLkuobml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kTW9udGgnfSA9ICfntYLkuobmnIgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kWWVhcid9ID0gJ+e1guS6huW5tCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ+iogOiqnuODleOCoeOCpOODq++8iCpfRkFRLnBt77yJ44Gn5a6a576p44GV44KM44Gm44GE44KLTGFuZ3VhZ2VrZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0Q2hhbmdlZEl0ZW1zJ30gPSAn5pyA6L+R5aSJ5pu044GV44KM44Gf44Ki44Kk44OG44OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdENyZWF0ZWRJdGVtcyd9ID0gJ+acgOi/keS9nOaIkOOBleOCjOOBn+OCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9CiAgICAgICAgJ+OCq+ODhuOCtOODquOBq+OCouOCr+OCu+OCueOBp+OBjeOBvuOBm+OCk+OAguiomOS6i+OCkuS9nOaIkOOBmeOCi+OBq+OBr+OAgTHjgaTku6XkuIrjga7jgqvjg4bjgrTjg6rjgavjgqLjgq/jgrvjgrnjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILjgqvjg4bjgrTjg6rjga7jg6Hjg4vjg6Xjg7zjgavjgYrjgYTjgabjgIHjgYLjgarjgZ/jga7jgrDjg6vjg7zjg5cv44Kr44OG44K044Oq44Gr5qip6ZmQ44KS5LiO44GI44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2JsZW0nfSA9ICfllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2tTZWFyY2gnfSA9ICfmpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnXCdBZ2VudEZBUVpvb21TbWFsbFwn44Gu6Kit5a6a44CC5YWs6ZaL55S76Z2i44Gr44GK44GE44Gm44CM44OG44Kt44K544OI44Go44Oq44Oz44Kv44KS5oy/5YWl44GZ44KL44CN44Oc44K/44Oz44KS6KGo56S644GZ44KLL+ihqOekuuOBl+OBquOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdcJ0FnZW50RkFRWm9vbVNtYWxsXCfjga7oqK3lrprjgILjgIzjg4bjgq3jgrnjg4jjgpLmjL/lhaXjgZnjgovjgI3jg5zjgr/jg7PjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ+OCqOODvOOCuOOCp+ODs+ODiOeUu+mdouOBq+OBiuOBhOOBpldZU0lXWUfjgqjjg4fjgqPjgr/jgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0RGF5J30gPSAn6ZaL5aeL5pelJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0TW9udGgnfSA9ICfplovlp4vmnIgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRZZWFyJ30gPSAn6ZaL5aeL5bm0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3J5T2YnfSA9ICfopqrjgqvjg4bjgrTjg6onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ+eXh+eKtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AxMEl0ZW1zJ30gPSAn44OI44OD44OXMTDjgqLjgq/jgrvjgrknOwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9tc19GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjptc19GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdkYWxhbWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3VtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdsdWFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ05vbWJvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnS2VtYXNraW5pIEFydGlrZWwgRkFRIHRlcmJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTWVuY2lwdGEgYXJpdGtlbCBGQVEgdGVyYmFydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnQXJpdGtlbCBGQVEgMTAgdGVyYmFpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1Yi1rYXRlZ29yaSBkYXJpcGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ1RpYWRhIGthZGFyIGRpcGlsaWghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ1VtdW0gKFNlbXVhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnbHVhcmFuIChwZWxhbmdnYW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdkYWxhbWFuIChlamVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdIYXJpIG11bGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICdCdWxhbiBtdWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICdUYWh1biBtdWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdIYXJpIGFraGlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ0J1bGFuIGFraGlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnVGFodW4gYWtoaXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVGVyaW1hIGthc2loIHVudHVrIHVuZGlhbiBhbmRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0FuZCBzdWRhaCBtZW5ndW5kaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdBcnRpa2VsIEZBUSBkaWNldGFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGlrZWwgRkFRICgxMCB0ZXJiYWlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlrZWwgRkFRIChiYXJ1IGRpY2lwdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpa2VsIEZBUSAoYmFydSBkaXViYWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpIEZBUSBkaWtlbWFza2luaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ2thdGVnb3JpIEZBUSBkaXRhbWJhaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmkgcGVybHUgbWVtcHVueWFpIG5hbWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdrYXRlZ29yaSBpbmkgc3VkYWggd3VqdWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdCYWhhc2EgRkFRIGRpdGFtYmFoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdCYWhhc2EgRkFRIGRpa2VtYXNraW5pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdOYW1hIGRpcGVybHVrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnQmFoYXNhIGluaSBzdWRhaCB3dWp1ZCEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnVGFtYmFoIGFydGlrZWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2F0ZWdvcmkgZGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdQZW5nZXNhaGFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gS2F0ZWdvcmkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ1RhbWJhaCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdQYWRhbSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ1RhbWJhaCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnQXVkaXQgS2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0FrYW4gZGlwYXBhcmthbiBzZWJhZ2FpIGtvbWVuIGRhbGFtIEV4cGxvcmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1NpbGEgcGlsaWggc2VrdXJhbmcta3VyYW5nbnlhIHNhdHUgcGVybWludGFhbiBrdW1wdWxhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0t1bXB1bGFuIGVqZW4gYm9sZWggbWVuZ2Frc2VzIGFydGlrZWwgZGFsYW0ga2F0ZWdvcmkgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnQWRha2FoIGFuZGEgaW5naW4gbWVtYWRhbSBrYXRlZ29yaSBpbmk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnQW5kYSB0aWRhayBib2xlaCBtZW1hZGFtIGthdGVnb3JpIGluaS4gSWEgZGlndW5ha2FuIGRhbGFtIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGF0aWtlbCBGQVEgZGFuL2F0YXUgYWRhbGFoIGlidWJhcGEga2VwYWRhIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGthdGVnb3JpIGxhaW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnS2F0ZWdvcmkgaW5pIGRpZ3VuYWthbiBkYWxhbSBhdGlrZXQgRkFRIGJlcmlrdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnS2F0ZWdvcmkgaW5pIGFkYWxhaCBpYnViYXBhIGtlcGFkYSBzdWIta2F0ZWdvcmkgYmVyaWt1dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdBZGFrYWggYW5kYSBpbmdpbiBtZW1hZGFtIGFydGlrZWwgRkFRIGluaT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQ2FyaWFuIFBhbnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0NhcmlhbiBUZXJwZXJpbmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWIta2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0aWtldCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdUaWFkYSBzdWIta2F0ZWdvcmkgZGl0ZW11aS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnVGlhZGEgZGF0YSBKdXJuYWwgRkFRIGRpdGVtdWkuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gQmFoYXNhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9CiAgICAgICAgJ0d1bmEga2FlZGFoIGluaSBqaWthIGFuZGEgaW5naW4gYmVrZXJqYSBkZW5nYW4gcGVsYmFnYWkgYmFoYXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdUYW1iYWggYmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ1BhZGFtIGJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdUYW1iYWggYmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdBdWRpdCBiYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0FkYWthaCBhbmRhIGluZ2luIG1lbWFkYW1rYW4gYmFoYXNhIGluaT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnQW5kYSB0aWRhayBib2xlaCBtZW1hZGFtIGJhaGFzYSBpbmkuIElhIGRpZ3VuYWthbiBzZWt1cmFuZy1rdXJhbmdueWEgc2F0dSBhcnRpa2VsIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdCYWhhc2EgaW5pIGRpZ3VuYWthbiBkYWxhbSBBcnRpa2VsIEZBUSB5YW5nIGJlcmlrdXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdBdHVyYW4ga29udGVrcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpa2VsIEZBUSBwZXIgbXVrYSBzdXJhdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdUaWFkYSBkYXRhIEZBUSBkaXRlbXVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0luZm9ybWFzaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdVbmRpYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVFUZWtzUGVudWgnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnQ2FyaWFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSByYW5nZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hc2kgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjI1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ01lbmlsYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdNZW5pbGFpICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdkYXJpcGFkYSA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ1RpYWRhIHVuZGlhbiBkaXRlbXVpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnVGlhZGEgdW5kaWFuIGRpdGVtdWkhIEphZGlsYWggb3JhbmcgcGVydGFtYSBtZW5pbGFpIGFyaXRsIEZBUSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdNdWF0IHR1cnVuIGxhbXBpcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnQmVyYXBhIGJhbnlhayBhcmlrZWwgaW5pIG1lbWJhbnR1PyBTaWxhIGJlcmkga2FtaSBwZW5pbGFpYW4gYW5kYSBkYW4gYmFudHUgdW50dWsgbWVuaW5na2F0a2FuIHBhbmdrYWxhbiBkYXRhIEZBUS4gVGVyaW1hIEthc2loISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ1RpZGFrIG1lbWJhbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ1NhbmdhdCBtZW1iYW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ01hc3VrIFRla3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdNYXN1ayBwYXV0YW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdNYXN1ayBUZWtzIEZBUSAmIFBhdXRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnVGlhZGEgYXJ0aWtlbCBGQVEgZGlqdW1wYWkuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnQ2FyaWFuIFRla3MgcGVudWggZGFsYW0gYXJ0aWtlbCBGQVEgKGNvbnRvaC4gIkpvaG4qbiIgb3IgIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdDYXJpYW4gdW50dWsgYXJ0aWtlbCBkZW5nYW4ga2VrdW5jaSBwZXJrYXRhYW4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1VtdW0nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnQXNpbmdhbiB1bnR1ayBoYXNpbCBrZWx1YXJhbiB1bnR1ayBtZW5hbWJhaCBwYXV0YW4gZGliZWxha2FuZyBqYXJpbmdhbiBzdHJpbmcuIEVsZW1lbiBnYW1iYXIgZGliZW5hcmthbiBkdWEgaW5wdXQuIHBlcnRhbWEgbmFtYSBnYW1iYXIgdGVyc2VidXQgKGZhcS5wbmcpLiBEYWxhbSBrZXMgaW5pLCBqYWxhbiBnYW1iYXIgT1RSUyBha2FuIGRpZ3VuYWthbi4ga2VkdWFueWEga2VtdW5na2luYW4gYWRhbGFoIHVudHVrIG1lbWFzdWtrYW4gcGF1dGFuIHBhZGEgZ2FtYmFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ1dhcm5hIENTUyB1bnR1ayBrZXB1dHVzYW4gdW5kaWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdQZW5ndXJ1c2FuIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ1RpdGlrIHBlcnB1bHVoYW4gZGFyaXBhZGEga2VwdXR1c2FuIHVuZGlhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ0thdGVnb3JpIG5hbWEgc2VkaWEgYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnQmFoYXNhIHNlZGlhIGFkYSB1bnR1ayBhcnRpa2VsIEZBUSBwYWRhIHNhdHUgbW9kIGJhaGFzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnS2V1dGFtYWFuIHNlZGlhIGFkYSB0aWtldCB1bnR1ayBwZW5nZXNhaGFuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnS2VhZGFhbiBzZWRpYSBhZGEgdW50dWsga2VtYXN1a2FuIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0tlYWRhYW4gc2VkaWEgYWRhIHRpa2V0IHVudHVrIHBlbmdlc2FoYW4gZGFyaXBhZGEgYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnTmlsYWkgc2VkaWEgYWRhIHVudHVrIHRpbmRha2FuIHBhcmFtZXRlciBrZXBhZGEgZGVwYW5ha2hpciB1bXVtLiBUaW5kYWthbiBwYXJhbWV0ZXIgZGlndW5ha2FuIGRhbGFtIHNrcmlwIHNpc3RlbSB0ZXJzZWJ1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnS2VuYWxwYXN0aSBsaWhhdCBzZW11bGEgbW9kdWwgdW50dWsgcGFwYXIgcGFwYXJhbiBrZWNpbCBkYXJpIEp1cm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0tlbmFscGFzdGkgbGloYXQgc2VtdWxhIG1vZHVsIHVudHVrIHBhcGFyIHBhcGFyYW4ga2VjaWwgZGFyaSBzZW5hcmFpIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tlbmFscGFzdGkgc2lmYXQgc2VkaWEgYWRhIEZBUSBtZW55dXN1biBkYWxhbSBjYXJpYW4gRkFRIGRhcmlwYWRhIGludGVyZmFjZSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2VuYWxwYXN0aSBzaWZhdCBzZWRpYSBhZGEgRkFRIG1lbnl1c3VuIGRhbGFtIGNhcmlhbiBGQVEgZGFyaXBhZGEgaW50ZXJmYWNlIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLZW5hbHBhc3RpIHNpZmF0IHNlZGlhIGFkYSBGQVEgbWVueXVzdW4gZGFsYW0gY2FyaWFuIEZBUSBkYXJpcGFkYSBpbnRlcmZhY2UgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLZW5hbHBhc3RpIHNpZmF0IHNlZGlhIGFkYSBGQVEgbWVueXVzdW4gZGFsYW0gY2FyaWFuIEZBUSBkYXJpcGFkYSBlamVuIGludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBwZXJpbnRhaCBsYWxhaSBGQVEgaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBCYXdhaDogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcGVyaW50YWggbGFsYWkgRkFRIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBCYXdhaDogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHBlcmludGFoIGxhbGFpIEZBUSBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgYXdhbS4gQXRhczogdGVydHVhIGRpIGF0YXMuIEJhd2FoOiB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gbGFqdXIgbWVudW5qdWtrYW4gZGkgRXhwbG9yZXIgRkFRLiBQaWxpaGFuIGluaSB0aWRhayBtZW1wdW55YWkga2VzYW4ga2UgYXRhcyBrZWR1ZHVrYW4gdGlhbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHJ1YW5nYW4geWFuZyBkaXR1bmp1a2thbiBkYWxhbSBqdXJuYWwgRkFRLiBQaWxpaGFuIGluaSB0aWRhayBtZW1wdW55YWkga2VzYW4ga2UgYXRhcyBrZWR1ZHVrYW4gdGlhbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcnVhbmdhbiB5YW5nIGRpdHVuanVra2FuIGRhbGFtIGNhcmlhbiBGQVEuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXB1bnlhaSBrZXNhbiBrZSBhdGFzIGtlZHVkdWthbiB0aWFuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gbWFuYSBwYXV0YW4gXCdNYXN1a2thbiBGQVEgXCcgYWthbiBkaXBhcGFya2FuLiBOb3RhOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiB0ZXJtYXN1ayBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBkYW4gQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pc2kgaXRlbSBGQVEgcGVyY3VtYSBiaWRhbmcgdGVrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnUGFkYW0gRkFRIGluaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0F1ZGl0IEZBUSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0FrdGlma2FuIHBlbGJhZ2FpIGJhaGFzYSBwYWRhIG1vZHVsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdBa3RpZmthbiB1bmRpYW4gbWVrYW5pc21hIHBhZGEgbW9kdWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ2p1cm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0p1cm5hbCBGQVEgbGloYXQgc2VtdWxhICJLZWNpbCIgaGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGloYXQgc2VtdWxhIEZBUSBoYWQgImtlY2lsIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdTb2FsYW4gTGF6aW0gaGFkIGJhZ2kgc2V0aWFwIGhhbGFtYW4gdW50dWsgVGluamF1YW4gSnVybmFsIEZBUSAiS2VjaWwiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnSGFkIEZBUSBzZXRpYXAgaGFsYW1hbiB1bnR1ayBUaW5qYXVhbiBGQVEgIktlY2lsIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ0xhbHVhbiBwZW1pc2FoIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0NhcmlhbiBTb2FsYW4gTGF6aW0gYmFja2VuZCByb3V0ZXIgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ0thd2FzYW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0Zyb250ZW5kIHBlbmRhZnRhcmFuIG1vZHVsIHVudHVrIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0t1bXB1bGFuIGJhZ2kga2VsdWx1c2FuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnU2VqYXJhaCBGQVEgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdUZXJtYXN1ayBiaWRhbmcgZGFsYW1hbiBUaWtldCBiZXJhc2Fza2FuIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdUZXJtYXN1ayBuYW1hIHNldGlhcCBiaWRhbmcgZGFsYW0gVGlrZXQgYmVyYXNhc2thbiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdBbnRhcmFtdWthIG1hbmEgZGVuZ2FuIFBhbnRhcyBoZW5kYWtsYWggZGl0dW5qdWtrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gQmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0ZBUSBwYXV0YW4gaW5pIGtlcGFkYSBvYmplayBsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSBha2FuIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgRkFRIEV4cGxvcmVyIG11a2EgZWplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSBha2FuIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgRkFRIEV4cGxvcmVyIG11a2EgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIEZBUSBhcnRpa2VsIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0ganVybmFsIEZBUSBkaSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gbWFrc2ltdW0gYXJ0aWtlbCBGQVEgdW50dWsgZGlwYXBhcmthbiBkYWxhbSBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSB1bnR1ayBkaXBhcGFya2FuIGRhbGFtIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIGFydGlrZWwgRkFRIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICdNb2R1bCB1bnR1ayBtZW5qYW5hIGh0bWwgcHJvZmlsIG9wZW5zZWFyY2ggdW50dWsgY2FyaWFuIGZhcSByaW5na2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdQZXJrYXJhIEJhcnUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0FydGlrZWwgYmFydSBGQVEgcGVybHUga2VsdWx1c2FuIHNlYmVsdW0gbWVyZWthIG1lbmRhcGF0IGRpdGVyYml0a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBhcnRpa2VsIEZBUSB1bnR1ayBkaXBhcGFya2FuIGRhbGFtIEV4cGxvcmVyIEZBUSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIGFydGlrZWwgRkFRIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0gRXhwbG9yZXIgRkFRIGFudGFyYSBtdWthIGF3YW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgdW50dWsgZGlwYXBhcmthbiBwYWRhIHNldGlhcCBoYWxhbWFuIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIGFydGlrZWwgRkFRIGFrYW4gZGlwYXBhcmthbiBwYWRhIHNldGlhcCBoYWxhbWFuIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0JpbGFuZ2FuIGl0ZW0geWFuZyBkaXR1bmp1a2thbiBkYWxhbSBwZXJ1YmFoYW4gdGVyYWtoaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQmlsYW5nYW4gaXRlbSB5YW5nIGRpdHVuanVra2FuIGRhbGFtIHRlcmFraGlyIGRpY2lwdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQmlsYW5nYW4gaXRlbSB5YW5nIGRpdHVuanVra2FuIGRhbGFtIDEwIHRlcmF0YXMgY2lyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG11a2Egc3VyYXQgKGRpIG1hbmEgaXRlbSBGQVEgZGl0dW5qdWtrYW4pIGdhbWJhcmFuIGtlY2lsIGp1cm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgbXVrYSBzdXJhdCAoZGkgbWFuYSBpdGVtIEZBUSBkaXR1bmp1a2thbikgZ2FtYmFyYW4ga2VzZWx1cnVoYW4gRkFRIGtlY2lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0NldGFrIGhhbGFtYW4gRkFRIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdCZXJhdHVyIHVudHVrIGtlbHVsdXNhbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdLYWRhciB1bnR1ayBtZW5ndW5kaS4gS3VuY2kgbWVzdGlsYWggZGFsYW0gcGVyYXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0NhcmlhbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1R1bmp1a2thbiAiU2lzaXBhbiBGQVEgTGluayIgQnV0YW5nIGRpIEFnZW50RkFRWm9vbVNtYWxsIHVudHVrIGF3YW0gRkFRIEFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ1BhcGFyIEZBUSBQZXJrYXJhIGRlbmdhbiBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdQYXBhciBGQVEgamFsYW4geWEgLyB0aWRhay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ1BhcGFyIGl0ZW0gc3Via2F0ZWdvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01lbnVuanVra2FuIGl0ZW0gcGVydWJhaGFuIHRlcmFraGlyIGRhbGFtIGFudGFyYSBtdWthIHlhbmcgZGl0YWtyaWZrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdUdW5qdWtrYW4gYWtoaXIgbWVuY2lwdGEgaXRlbSBkYWxhbSBhbnRhcmEgbXVrYSB5YW5nIGRpdGFrcmlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnUGFwYXIgdG9wIDEwIGl0ZW0gZGFsYW0gYW50YXJhIG11a2EgeWFuZyBkaXRha3JpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1BhcGFyIG1lbmd1bmRpIGRhbGFtIGFudGFyYSBtdWthIHlhbmcgZGl0YWtyaWZrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgeWFuZyBtZW1ib2xlaGthbiBtZW5naHVidW5na2FuIEZBUSBkZW5nYW4gb2JqZWsgbGFpbiBkYWxhbSBwYW5kYW5nYW4gem9vbSBGQVEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkaSBiYXIgbWVudSBkYWxhbSBwYW5kYW5nYW4gZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuIHlhbmcgbWVtYm9sZWhrYW4gdW50dWsgbWVtYWRhbSBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGkgYmFyIG1lbnUgZGFsYW0gcGFuZGFuZ2FuIGRpenVtIGRhbGFtIGVqZW4gdW50dWsgbWVsaWhhdCBzZWphcmFoIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRpIGJhciBtZW51IGRhbGFtIHBhbmRhbmdhbiBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4geWFuZyBtZW1ib2xlaGthbiB1bnR1ayBtZW5nZWRpdCBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkaSBiYXIgbWVudSBkYWxhbSBwYW5kYW5nYW4gZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuIHlhbmcgbWVtYm9sZWhrYW4gdW50dWsga2VtYmFsaSBrZSBoYWxhbWFuIHNlYmVsdW1ueWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRpIGJhciBtZW51IGRhbGFtIHBhbmRhbmdhbiBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLCB5YW5nIG1lbWJvbGVoa2FuIHVudHVrIG1lbmNldGFrIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdQZW5nZWNhbSB1bnR1ayBpdGVtIEZBUSwgc2VwZXJ0aSBGQVEgIywgIyBLQiwgTXlGQVEgIy4gTmlsYWkgbGFsYWkgYWRhbGFoICMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGJhaGF3YSBcJyBGQVFcJyBvYmplayBkZW5nYW4gamVuaXMgcGF1dGFuIFwnYmlhc2FcJyBsYWluIFwnVGlrZXRcJyBib2xlaCBkaWthaXRrYW4gZGVuZ2FuIG9iamVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQmFkYW4gdGlrZXQgdW50dWsgbWVsZXBhc2thbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1RlcnRha2x1ayBrZXBhZGEgdGlrZXQgdW50dWsgbWVsZXBhc2thbiBhcnRpa2VsIEZBUS4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHNpZmF0IGxhbGFpIEZBUSB1bnR1ayBtZW55dXN1biBFeHBsb3JlciBGQVEgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzaWZhdCBsYWxhaSBGQVEgdW50dWsgbWVueXVzdW4gRXhwbG9yZXIgRkFRIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgbGFsYWkgRkFRIHVudHVrIG1lbnl1c3VuIEV4cGxvcmVyIEZBUSBkYWxhbSBhbnRhcmFtdWthIEF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzb3J0aW5nIGxhbGFpIEV4cGxvcmVyIEZBUSBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uIEluOiBFbGRlciBGQVEgYXJ0aWtlbCBkaSBhdGFzLiBGcm9tOiBBcnRpa2VsIEZBUSBOZXdlc3QgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzb3J0aW5nIGxhbGFpIEV4cGxvcmVyIEZBUSBtdWthIEF3YW0uIEluOiBFbGRlciBGQVEgYXJ0aWtlbCBkaSBhdGFzLiBGcm9tOiBBcnRpa2VsIEZBUSBOZXdlc3QgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBFeHBsb3JlciByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc29ydGluZyBsYWxhaSBFeHBsb3JlciBGQVEgZGkgYW50YXJhIG11a2EgcGVsYW5nZ2FuLiBJbjogRWxkZXIgRkFRIGFydGlrZWwgZGkgYXRhcy4gRnJvbTogQXJ0aWtlbCBGQVEgdGVyYmFydSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJ1BhZGFtOiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdLdW5jaSBiYWhhc2EgeWFuZyBkaXRha3JpZmthbiBkYWxhbSBmYWlsIGJhaGFzYSAqIF9GQVEucG0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBGQVEgYXJ0aWtlbCB5YW5nIG11bmN1bCBkaSBFeHBsb3JlciBGQVEgZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIEZBUSBhcnRpa2VsIHlhbmcgbXVuY3VsIGRpIEV4cGxvcmVyIEZBUSBkaSBNdWthIEF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSB5YW5nIG11bmN1bCBkYWxhbSBFeHBsb3JlciBGQVEgZGkgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgeWFuZyBtdW5jdWwgZGFsYW0gY2FyaWFuIEZBUSBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4gc2V0aWFwIGhhbGFtYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBhcnRpa2VsIEZBUSB5YW5nIG11bmN1bCBkYWxhbSBjYXJpYW4gRkFRIGRhbGFtIGFudGFyYSBtdWthIEF3YW0gcGVyIGhhbGFtYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgeWFuZyBtdW5jdWwgZGFsYW0gRXhwbG9yZXIgRkFRIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgeWFuZyBtdW5jdWwgZGFsYW0gRXhwbG9yZXIgRkFRIGRpIE11a2EgQXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnUGFwYXIgIlNpc2lwYW4gRkFRIFRla3MgJiBMaW5rIiBCdXR0b24gZGkgQWdlbnRGQVFab29tU21hbGwgdW50dWsgQXJ0aWtlbCBGQVEgYXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnUGFwYXIgIlNpc2lwYW4gRkFRIFRla3MiIEJ1dHRvbiBkYWxhbSBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ0xpaGF0ICJNYXN1a2thbiBQYXV0YW4iIGJ1dGFuZyBkaSBBZ2VudEZBUVpvb21TbWFsbCB1bnR1ayBhcnRpa2VsIEZBUSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ0xpaGF0ICJUZWtzICYgUGFzdGUgTGluayIgYnV0YW5nIGRpIEFnZW50RkFRWm9vbVNtYWxsIHVudHVrIGFydGlrZWwgRkFRIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnTGloYXQgIk1hc3Vra2FuIHRla3MiIGJ1dGFuZyBkaSBBZ2VudEZBUVpvb21TbWFsbCB1bnR1ayBhcnRpa2VsIEZBUSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IFdZU0lXWUcgZWRpdG9yIGluIGFnZW50IGludGVyZmFjZS4nfSA9ICdQYXBhciBlZGl0b3IgV1lTSVdZRyBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJ29iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJ29iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCdsaW5rIHR5cGUuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gYmFoYXdhIFwnRkFRXCdvYmplayBkZW5nYW4gamVuaXMgcGF1dGFuIFwnYmlhc2EgXCdsYWluIFwnRkFRXCdvYmplayBib2xlaCBkaWthaXRrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYW4gXCdGQVFcJ29iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJ29iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJ2xpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBiYWhhd2EgXCdGQVFcJ29iamVrIGRlbmdhbiBqZW5pcyBwYXV0YW4gXCdJYnUgQmFwYSBLYW5hay1rYW5hayBcJ2xhaW4gXCdGQVFcJ29iamVrIGl0dSBib2xlaCBkaWthaXRrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYW4gXCdGQVFcJ29iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJ29iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJ2xpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBiYWhhd2EgXCdGQVFcJ29iamVrIGRlbmdhbiBqZW5pcyBwYXV0YW4gXCdJYnUgQmFwYSBLYW5hay1rYW5hayBcJ2xhaW4gXCdUaWtldCBcJ2JvbGVoIGRpa2FpdGthbiBkZW5nYW4gb2JqZWsuJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9uYl9OT19GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpuYl9OT19GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1Ymxpc2VyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdla3N0ZXJudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnT1NTLW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdTaXN0IG9wcGRhdGVydGUgT1NTLWFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1Npc3Qgb3BwcmV0dGVkZSBPU1MtYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcHAgMTAgT1NTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnSW5nZW4gcmF0aW5nIHZhbGd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ29mZmVudGxpZyAoYWxsZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2t1biB0aWwga3VuZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdrdW4gaW50ZXJudCAoYWdlbnRlciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnU3RhcnRkYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICdNw6VuZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ8OFcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnU2x1dHRkYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnTcOlbmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnw4VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1Rha2sgZm9yIGRpbiBzdGVtbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnRHUgaGFyIGFsbGVyZWRlIHN0ZW10JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnVXRza3JpZnQgYXYgT1NTLWFydGlra2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ09TUy1hcnRpa2xlciAoVG9wcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdPU1MtYXJ0aWtsZXIgKG55bGlnIG9wcHJldHRldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ09TUy1hcnRpa2xlciAobnlsaWcgZW5kcmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdPU1Mta2F0ZWdvcmkgb3BwZGF0ZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnT1NTLWthdGVnb3JpIGxhZ3QgdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0VuIGthdGVnb3JpIG3DpSBoYSBldCBuYXZuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRGVubmUga2F0ZWdvcmllbiBla3Npc3RlcmVyIGFsbGVyZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdPU1Mtc3Byw6VrIGxhZ3QgdGlsISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdPU1Mtc3Byw6VrIG9wcGRhdGVydCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmF2biBlciBww6VrcmV2ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdEZXR0ZSBzcHLDpWtldCBmaW5uZXMgYWxsZXJlZGUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0xlZ2cgdGlsIE9TUy1hcnRpa2tlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0thdGVnb3JpIGVyIG9ibGlnYXRvcmlzay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdHb2RramVubmluZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdLYXRlZ29yaW9wcHNldHQgZm9yIE9TUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdMZWdnIHRpbCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdTbGV0dCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0xlZ2cgdGlsIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFbmRyZSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnVmlsIHZpc2VzIHNvbSBrb21tZW50YXIgaSB1dGZvcnNrZXJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnU2Frc2JlaGFuZGxlcmdydXBwZXIgc29tIGhhciB0aWxnYW5nIHRpbCBhcnRpa2xlciBpIGRlbm5lIGthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBzbGV0dGUgZGVubmUga2F0ZWdvcmllbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdEdSBrYW4gaWtrZSBzbGV0dGUgZGVubmUga2F0ZWdvcmllbiwgZm9yZGkgZGVuIGVyIGJydWt0IGkgbWluc3QgZW4gT1NTLWFydGlra2VsIG9nL2VsbGVyIGZvcmVsZHJlIHRpbCBtaW5zdCBlbiBhbm5lbiBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZXIgYnJ1a3QgaSBmw7hsZ2VuZGUgT1NTLWFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZXIgZm9yZWxkcmUgdGlsIGbDuGxnZW5kZSB1bmRlcmthdGVnb3JpZXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZW5uZSBhcnRpa2tlbGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ1V0Zm9yc2tlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdIdXJ0aWdzw7hrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnQXZhbnNlcnQgc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnVW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ09mdGUgU3RpbHRlIFNww7hyc23DpWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdJbmdlbiB1bmRlcmthdGVnb3JpZXIgZnVubmV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdTcHLDpWtvcHBzZXR0IGZvciBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnTGVnZyB0aWwgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ1NsZXR0IHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdMZWdnIHRpbCBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VuZHJlIHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gYXJ0aWtsZXIgZnVubmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBGQVEgdGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiNTAnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnU3RlbW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdPU1Mtc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSByYW5nZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvIG9tIE9TUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdSYXRpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdSYXRpbmcgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2F2IDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnSW5nZW4gc3RlbW1lciBmdW5uZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdJbmdlbiBzdGVtbWVyIGF2Z2l0dCEgQmxpIGRlbiBmw7hyc3RlIHRpbCDDpSBzdGVtbWUgcMOlIGRlbm5lIGFydGlra2VsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdMYXN0IG5lZCB2ZWRsZWdnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnVmFyIGRlbm5lIGFydGlra2VsZW4gdGlsIGhqZWxwPyBWw6ZyIHNuaWxsIG9nIGdpIG9zcyBkaW4gc3RlbW1lLCBzbGlrIGF0IHZpIGthbiBmb3JiZWRyZSBkYXRhYmFzZW4uIFR1c2VuIHRha2shJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnaWtrZSB0aWwgaGplbHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAndmVsZGlnIG55dHRpZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ1NldHQgaW5uIE9TUy10ZWtzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnU2V0dCBpbm4gT1NTLWxlbmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdTZXR0IGlubiBPU1MtdGVrc3Qgb2cgLWxlbmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdJbmdlbiBPU1MtYXJ0aWtsZXIgYmxlIGZ1bm5ldCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0Z1bGx0ZWtzdHPDuGsgaSBPU1MtYXJ0aWtsZXIgKGYuZWtzLiAiT2wqIiBlbGxlciAiQW5kcmVhcypuIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1PDuGsgZXR0ZXIgYXJ0aWtsZXIgbWVkIG7DuGtrZWxvcmQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDU1MtZmFyZ2UgZm9yIGF2c3RlbW5pbmdzcmVzdWx0YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnS2F0ZWdvcmlvcHBzZXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0FudGFsbCBkZXNpbWFsZXIgZm9yIGF2c3RlbW5pbmdzcmVzdWx0YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ0ZvcnZhbGd0IGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnU3RhbmRhcmQgcHJpb3JpdGV0IGZvciBzYWtlciBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnU3RhbmRhcmQgc3RhdHVzIGZvciBldCBPU1Mtb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnU3RhbmRhcmQgc3RhdHVzIGZvciBzYWtlciBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pc2pvbiBhdiBmcml0ZWtzdGZlbHQgZm9yIE9TUy1hcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdTbGV0dCBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdFbmRyZSBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdPU1Mtam91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdTZXBhcmF0b3IgZm9yIE9TUy1zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ09TUy1vbXLDpWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ01vZHVscmVnaXN0cmVyaW5nIGZvciBkZW4gb2ZmZW50bGlnZSBkZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwcGUgc29tIHNrYWwgZ29ka2plbm5lIE9TUy1hcnRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlrayBvdmVyIGRlbm5lIGFydGlra2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnR3JlbnNlc25pdHQgZGVyIGh1cnRpZ3PDuGtldCBza2FsIHZpc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdTcHLDpWtvcHBzZXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0xlbmsgb3BwIGV0IGFubmV0IG9iamVrdCB0aWwgZGVubmUgYXJ0aWtrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTnkgT1NTLWFydGlra2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ055ZSBhcnRpa2xlciB0cmVuZ2VyIGdvZGtqZW5uaW5nIGbDuHIgZGUga2FuIHB1Ymxpc2VyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnQW50YWxsIG9iamVrdGVyIHZpc3QgaSBzaXN0ZSBlbmRyaW5nZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQW50YWxsIHZpc3RlIG9iamVrdGVyIHVuZGVyIHNpc3Qgb3BwcmV0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ0FudGFsbCB2aXN0ZSBhcnRpa2xlciBpICJUb3BwIDEwIi1mdW5rc2pvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnU2tyaXYgdXQgZGVubmUgYXJ0aWtrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdLw7ggZm9yIGdvZGtqZW5uaW5nIGF2IE9TUy1hcnRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdSYXRlciBmb3IgYXZzdGVtbWluZy4gTsO4a2tlbCBtw6UgdsOmcmUgaSBwcm9zZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnVmlzIEhUTUwgaSBPU1MtYXJ0aWtrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1ZpcyBPU1Mtc3RpIChqYS9uZWkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdWaXMgaW5uaG9sZCBpIHVuZGVya2F0ZWdvcmllci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVmlzIHNpc3QgZW5kcmVkZSBhcnRpa2xlciBpIGRlZmluZXJ0ZSBncmVuc2Vzbml0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ZpcyBzaXN0IG9wcHJldHRlZGUgYXJ0aWtsZXIgaSBkZWZpbmVydGUgZ3JlbnNlc25pdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ZpcyAiVG9wcCAxMCIgaSBkZWZpbmVydGUgZ3JlbnNlc25pdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdWaXMgYXZzdGVtbWluZyBpIGRlZmluZXJ0ZSBncmVuc2Vuc25pdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3IgZm9yIGVuIE9TUy1hcnRpa2tlbCwgZi5la3MuIEZBUSMsIEtCIywgT1NTIywgTWluT1NTIy4gU3RhbmRhcmQgZXIgRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVubmUgaW5uc3RpbGxpbmdlbiBkZWZpbmVyZXIgYXQgZW4gT1NTLWFydGlra2VsIGthbiBsZW5rZXMgdGlsIGFuZHJlIE9TUy1hcnRpa2xlciBtZWQgIk5vcm1hbCIgbGVua2V0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBPU1MtYXJ0aWtsZXIgbWVkICJGb3JlbGRyZS9CYXJuIi1sZW5rZXR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBzYWtlciBtZWQgIk5vcm1hbCIgbGVua2V0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBzYWtlciBtZWQgIkZvcmVsZHJlL0Jhcm4iLWxlbmtldHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1Nha3Npbm5ob2xkIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdTYWtzZW1uZSBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IG5lZWRzIGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwISd9ID0gJ0VuIGthdGVnb3JpIHRyZW5nZXIgbWluc3Qgw6luIHRpbGdhbmdzZ3J1cHBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBjb21tZW50ISd9ID0gJ0VuIGthdGVnb3JpIG3DpSBoYSBlbiBrb21tZW50YXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB3aGljaCBjYW4gYWNjZXNzIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnQtZ3J1cHBlciBzb20gaGFyIHRpbGdhbmcgdGlsIGRlbm5lIGthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcmllcyd9ID0gJ0thdGVnb3JpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmVyZXIgaHZvciAiU2V0dCBpbm4gT1NTIi1sZW5rZW4gc2thbCB2aXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlsU2VhcmNoJ30gPSAnRGV0YWxqc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgQ2F0ZWdvcnk/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZW5uZSBrYXRnb3JpZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBMYW5ndWFnZT8nfSA9ICdWaWwgZHUgdmlya2VsaWcgc2xldHRlIGRldHRlIHNwcsOla2V0Pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICdPU1Mta2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdMYW5ndWFnZUtleSBkZWZpbmVydCBpIHNwcsOla2ZpbGVuICpfRkFRLnBtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3J5IGFjY2Vzc2libGUuIFRvIGNyZWF0ZSBhbiBhcnRpY2xlIHlvdSBuZWVkIGFjY2VzcyB0byBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkuIFBsZWFzZSBjaGVjayB5b3VyIGdyb3VwL2NhdGVnb3J5IHBlcm1pc3Npb24gdW5kZXIgLWNhdGVnb3J5IG1lbnUtISd9ID0KICAgICAgICAnSW5nZW4gdGlsZ2FuZyB0aWwga2F0ZWdvcmkuIEZvciDDpSBvcHByZXR0ZSBlbiBhcnRpa2tlbCBtw6UgZHUgaGEgdGlsZ2FuZyB0aWwgbWluc3Qgw6luIGthdGVnb3JpLiBWZW5ubGlnc3Qgc2pla2sgZGluZSBncnVwcGUtL2thdGVnb3JpLXRpbGdhbmdlciB1bmRlciAta2F0ZWdvcmltZW55LSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWlja1NlYXJjaCd9ID0gJ0h1cnRpZ3PDuGsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnVmlzIFdZU0lXWUctcmVkaWdlcmVyIGkgYWdlbnQtZGVsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICdVbmRlcmthdGVnb3JpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHRpdGxlIGlzIHJlcXVpcmVkLid9ID0gJ0VtbmUgZXIgb2JsaWdhdG9yaXNrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIENhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIFN1YkNhdGVnb3JpZXMnfSA9ICdEZW5uZSBrYXRlZ29yaWVuIGVyIGZvcmVsZGVyIHRpbCBmw7hsZ2VuZGUgdW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2UocyknfSA9ICdEZW5uZSBrYXRlZ29yaWVuIGJydWtlcyBpIGbDuGxnZW5kZSBPU1MtYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBMYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdEZXR0ZSBzcHLDpWtldCBlciBpIGJydWsgcMOlIGbDuGxnZW5kZSBhcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZmlubmVzIGFsbGVyZWRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGVkJ30gPSAnT3BwZGF0ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIENhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBhbm90aGVyIENhdGVnb3J5J30gPQogICAgICAgICdEdSBrYW4gaWtrZSBzbGV0dGUgZGVubmUga2F0ZWdvcmllbi4gRGVuIGJydWtlcyBhdiBtaW5zdCDDqW4gYXJ0aWtrZWwgb2cvZWxsZXIgYXYgbWluc3Qgw6luIHVuZGVya2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgTGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBBcnRpY2xlISd9ID0KICAgICAgICAnRHUga2FuIGlra2Ugc2xldHRlIGRldHRlIHNwcsOla2V0LCBkZXQgZXIgaSBicnVrIHDDpSBtaW5zdCDDqW4gYXJ0aWtrZWwuJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9ubF9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpubF9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncHVibGllayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRIG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMYWF0c3QgZ2V3aWp6aWdkZSBhcnRpa2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTGFhdHN0IGFhbmdlbWFha3RlIGFydGlrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnUG9wdWxhaXJzdGUgYXJ0aWtlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcmllIHZhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ0dlZW4gd2FhcmRlcmluZyBnZXNlbGVjdGVlcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnT3ZlcnppY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3B1YmxpZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybiAoa2xhbnRlbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybiAoZ2VicnVpa2VycyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnRWVyc3RlIGRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ0VlcnN0ZSBtYWFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAnRWVyc3RlIGphYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ0xhYXRzdGUgZGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ0xhYXRzdGUgbWFhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdMYWF0c3RlIGphYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnQmVkYW5rdCB2b29yIHV3IHN0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVSBoZWVmdCBhbCBnZXN0ZW1kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0FydGlrZWwgYWZkcnVra2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGlrZWxlbiAodG9wIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlrZWxlbiAobmlldXcgYWFuZ2VtYWFrdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlrZWxlbiAobGFhdHN0IGdld2lqemlnZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnRkFRIGNhdGVnb3JpZSBiaWpnZXdlcmt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnRkFRIGNhdGVnb3JpZSB0b2VnZXZvZWdkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdHZWVmIGVlbiBuYWFtIG9wIHZvb3IgZGUgY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRGV6ZSBjYXRlZ29yaWUgYmVzdGFhdCBhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnVGFhbCB0b2VnZXZvZWdkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdUYWFsIGJpamdld2Vya3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRGUgbmFhbSBpcyB2ZXJwbGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGV6ZSB0YWFsIGJlc3RhYXQgYWwuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0FydGlrZWwgdG9ldm9lZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2llcyBlZW4gY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0dvZWRrZXVyaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0ZBUSBjYXRlZ29yaWViZWhlZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmllIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgdmVyd2lqZGVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgdG9ldm9lZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgYmV3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1dvcmR0IGluIHdlYmludGVyZmFjZSBnZXRvb25kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1NlbGVjdGVlciB0ZW5taW5zdGUgw6nDqW4gcGVybWlzc2llZ3JvZXAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHZWJydWlrZXJzIG1ldCByZWNodGVuIG9wIGFydGlrZWxlbiBpbiBkZXplIGNhdGVnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1dpbHQgdSBkZXplIGNhdGVnb3JpZSB2ZXJ3aWpkZXJlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdVIGt1bnQgZGV6ZSBjYXRlZ29yaWUgbmlldCB2ZXJ3aWpkZXJlbi4gSGlqIHdvcmR0IGdlYnJ1aWt0IGluIGVlbiBvZiBtZWVyIGFydGlrZWxlbiBlbi9vZiBoZWVmdCBvbmRlcmxpZ2dlbmRlIGNhdGVnb3Jpw6tuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0RlemUgY2F0ZWdvcmllIHdvcmR0IGdlYnJ1aWt0IGRvb3IgZGUgdm9sZ2VuZGUgYXJ0aWtlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0RlemUgY2F0ZWdvcmllIGhlZWZ0IGRlIHZvbGdlbmRlIHN1YmNhdGVnb3Jpw6tuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1dpbHQgdSBkaXQgYXJ0aWtlbCB2ZXJ3aWpkZXJlbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEgdmVya2VubmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1pvZWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1VpdGdlYnJlaWQgem9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yacOrbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpa2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdHZWVuIHN1YmNhdGVnb3Jpw6tuIGdldm9uZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdHZWVuIGRhdGEgZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB0YWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9CiAgICAgICAgJ0dlYnJ1aWsgZGV6ZSBmZWF0dXJlIGFscyB1IG1ldCBtZWVyZGVyZSB0YWxlbiB3aWx0IHdlcmtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnVGFhbCB0b2V2b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnVGFhbCB2ZXJ3aWpkZXJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdUYWFsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnVGFhbCBiZXdlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnV2lsdCB1IGRlemUgdGFhbCB2ZXJ3aWpkZXJlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnVSBrdW50IGRlemUgdGFhbCBuaWV0IHZlcndpamRlcmVuLCBoaWogd29yZHQgZ2VicnVpa3QgZG9vciBlZW4gb2YgbWVlciBhcnRpa2VsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRGV6ZSB0YWFsIGlzIGdlYnJ1aWt0IHZvb3IgZGUgdm9sZ2VuZGUgYXJ0aWtlbGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FhbnRhbCBhcnRpa2VsZW4gcGVyIHBhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdHZWVuIEZBUSBkYXRhIGdldm9uZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0ZBUSBJbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnU3RlbW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1pvZWtlbiBpbiBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFRIHpvZWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSByYW5nZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjE4J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjI1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ0Jlb29yZGVsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnQmVvb3JkZWxpbmcgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3ZhbiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0dlZW4gc3RlbW1lbiBnZXZvbmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnR2VlbiBzdGVtbWVuIGdldm9uZGVuLiBXZWVzIGRlIGVlcnN0ZSBvbSBkaXQgYXJ0aWtlbCB0ZSBiZW9vcmRlbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnU2xhIGJpamxhZ2Ugb3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdIaWVscCBkaXQgYXJ0aWtlbCBiaWogaGV0IGJlYW50d29vcmRlbiB2YW4gdXcgdnJhYWc/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnaGVsZW1hYWwgbmlldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdoZWVsIGVyZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ1ZvZWcgRkFRIHRla3N0IGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdWb2VnIGxpbmsgbmFhciBGQVEgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ1ZvZWcgRkFRIHRla3N0IGVuIGxpbmsgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ0dlZW4gYXJ0aWtlbGVuIGdldm9uZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1pvZWtlbiBpbiB0ZWtzdCB2YW4gYXJ0aWtlbGVuIChiaWp2LiAiSmFucyplbiIgb2YgIlByaW50KiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnWm9layBvcCBhcnRpa2VsZW4gbWV0IHRyZWZ3b29yZCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnT3BlbmJhYXInOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciBjYXRlZ29yacOrbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ1N0YW5kYWFyZCBjYXRlZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnVmVyd2lqZGVyIGRpdCBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdCZXdlcmsgZGl0IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSBqb3VybmFhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ0tub3dsZWRnZSBCYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0dlc2NoaWVkZW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0xvZ2JvZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB0YWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdLb3BwZWwgZWVuIGFuZGVyIG9iamVjdCBhYW4gZGl0IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ05pZXV3IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnQXJ0aWtlbCBhZmRydWtrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdab2VrZW4gaW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1Rvb24gRkFRIHBhZCBqYS9uZWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdUb29uIHN0ZW0tZmVhdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9wbF9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpwbF9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICd3ZXduxJl0cnpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdwdWJsaWN6bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICd6ZXduxJl0cnpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTnVtZXIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ29zdGF0bmlvIHptaWVuaW9uZSBhcnR5a3XFgnkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ29zdGF0bmlvIHV0d29yem9uZSBhcnR5a3XFgnkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICcxMCBuYWpsZXBzenljaCBhcnR5a3XFgsOzdyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdQb2RrYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdOaWUgd3licmHFgmXFmyBvY2VueSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFa3NwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncHVibGljem5lICh3c3p5c2N5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnemV3bsSZdHJ6bmUgKGtsaWVuY2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICd3ZXduxJl0cnpuZSAoYWdlbmNpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdEemllxYQgcG9jesSFdGtvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICdNaWVzacSFYyBwb2N6xIV0a293eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAnUm9rIHBvY3rEhXRrb3d5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdEemllxYQga2/FhGNvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnTWllc2nEhWMga2/FhGNvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdSb2sga2/FhGNvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnRHppxJlrdWplbXkgemEgb2RkYW5pZSBnxYJvc3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnSnXFvCByYXogZ8WCb3Nvd2HFgmXFmyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdEcnVrdWogYXJ0eWt1xYIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydHlrdcWCeSBGQVEgKDEwIG5hamxlcHN6eWNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydHlrdcWCeSBGQVEgKG5vd2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnR5a3XFgnkgRkFRIChvc3RhdG5pbyB6bWllbmlvbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpYSBGQVEgemFrdHVhbGl6b3dhbmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdLYXRlZ29yaWEgRkFRIGRvZGFuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmlhIHBvd2lubmEgcG9zaWFkYcSHIG5henfEmSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ1RhIGthdGVnb3JpYSBqdcW8IGlzdG5pZWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdKxJl6eWsgRkFRIGRvZGFueSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnSsSZenlrIEZBUSB6YWt0dWFsaXpvd2FueSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmF6d2EgamVzdCB3eW1hZ2FuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdUZW4gasSZenlrIGp1xbwgaXN0bmllamUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0RvZGFqIGFydHlrdcWCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0thdGVnb3JpYSBqZXN0IHd5bWFnYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ1phdHdpZXJkemVuaWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGthdGVnb3JpYW1pIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdEb2RhaiBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ1VzdcWEIGthdGVnb3JpxJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdEb2RhaiBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZHl0dWoga2F0ZWdvcmnEmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnWm9zdGFuaWUgcG9rYXphbnkgamFrbyBrb21lbnRhcnogdyBla3NwbG9yZXJ6ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdaYXpuYWN6IHByenluYWptbmllaiBqZWRuxIUgZ3J1cMSZIHVwcmF3bmllxYQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVweSBhZ25ldMOzdywga3TDs3JlIG1hasSFIGRvc3TEmXAgZG8gdGVqIGthdGVnb3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0N6eSBuYSBwZXdubyBjaGNlc3ogdXN1bsSFxIcgdMSZIGthdGVnb3JpxJk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTmllIG1vxbxlc3ogdXN1bsSFxIcgdGVqIGthdGVnb3JpaS4gSmVzdCBvbmEgdcW8eXdhbmEgcHJ6ZXogcHJ6eW5ham1uaWVqIGplZGVuIGFydHlrdcWCIEZBUSBsdWIvaSBqZXN0IHJvZHppY2VtIHByem5ham1uaWVqIGplZG5laiBpbm5laiBrYXRlZ29yaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdUYSBrYXRlZ29yaWEgamVzdCB1xbx5d2FuYSB3IG5hc3TEmXB1asSFY3ljaCBhcnR5a3XFgmFjaCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnVGEga2F0ZWdvcmlhIGplc3Qgcm9kemljZW0gbmFzdMSZcHVqxIVjeWNoIHBvZGthdGVnb3JpaSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdDenkgbmEgcGV3bm8gY2hjZXN6IHVzdW7EhcSHIHRlbiBhcnR5a3XFgiBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRWtzcGxvcmVyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdTenlia2llIHd5c3p1a2l3YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1d5c3p1a2l3YW5pZSB6YWF3YW5zb3dhbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1BvZGthdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnR5a3XFgnkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnQnJhayBwb2RrYXRlZ29yaWkuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ0JyYWsgZGFueWNoIHcgZHppZW5uaWt1IEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGrEmXp5a2FtaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdVxbx5aiB0ZWogZnVua2NqaSBqZcWbbGkgY2hjZXN6IHByYWNvd2HEhyB6IHdpZWxvbWEgasSZenlrYW1pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdEb2RhaiBqxJl6eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnVXN1xYQgasSZenlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0RvZGFqIGrEmXp5ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWR5dHVqIGrEmXp5ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0ZW4gasSZenlrPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdOaWUgbW/FvGVzeiB1c3VuxIXEhyB0ZWdvIGrEmXp5a2EuIEplc3Qgb24gdcW8eXdhbnkgdyBwcnp5bmFqbW5pZWogamVkbnltIGFydHlrdWxlIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdUZW4gasSZenlrIGplc3QgdcW8eXdhbnkgdyBuYXN0xJlwdWrEhWN5Y2ggYXJ0dWt1xYJhY2ggRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnVXN0YXdpZW5pYSBrb250ZWtzdG93ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdMaWN6YmEgYXJ0eWt1xYLDs3cgRkFRIG5hIHN0cm9uxJknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnQnJhayBkYW55Y2ggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0luZm8tRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnR8WCb3N5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRIHBlxYJub3Rla3N0b3dvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ1d5c3p1a2l3YW5pZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgcmFuZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNqZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnT2NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdPY2VuYSAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAneiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0JyYWsgZ8WCb3PDs3chJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdCcmFrIGfFgm9zw7N3ISBCxIVkxbogcGllcndzenkgaSBvY2XFhCB0ZW4gYXJ0eWt1xYIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnUG9iaWVyeiB6YcWCxIVjem5payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0phayBwb21vY255IGJ5xYIgdGVuIGFydHlrdcWCPyBQcm9zaW15IG8gdHdvasSFIG9jZW7EmSBpIHBvbW9jIHByenkgdWRvc2tvbmFsYW5pdSBiYXp5IEZBUS4gRHppxJlrdWplbXkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbmllcHJ6eWRhdG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3BvbW9jbmUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdXc3RhdyB0ZWtzdCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ1dzdGF3IG9kbm/Fm25payBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ1dzdGF3IHRla3N0IGkgb2Rub8WbbmlrIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTmllIHpuYWxlemlvbm8gYXJ0eWt1xYLDs3cgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1d5c3p1a2l3YW5pZSBwZcWCbm90ZWtzdG93ZSB3IGFydHlrdcWCYWNoIEZBUSAobnAuICJOYWoqcHN6eSIgbHViICJLb3dhbHNrKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnU3p1a2FqIGFydHlrdcWCw7N3IHphIHBvbW9jxIUgc8WCb3dhIGtsdWN6b3dlZ28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1BvYmxpY3puZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdLb2xvciBDU1MgZGxhIHd5bmlrw7N3IGfFgm9zb3dhbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUga2F0ZWdvcmlhbWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnTWllanNjYSBwbyBwb3RyemVjaW5rdSB3IHd5bmlrYWNoIGfFgm9zb3dhbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnRG9tecWbbG5hIG5hendhIGthdGVnb3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0RvbXnFm2xueSBqxJl6eWsgZGxhIGFydHlrdcWCw7N3IEZBUSB3IHRyeWJpZSBwb2plZHluY3plZ28gasSZenlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnRG9tecWbbG55IHByaW9yeXRldCB6Z8WCb3N6ZcWEIGRsYSB6YXR3aWVyZHplxYQgYXJ0eWt1xYLDs3cgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnRG9tecWbbG55IHN0YW4gZGxhIHBvenljamkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmljamEgcG9sYSBmcmVlIHRleHQgcG96eWNqaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1VzdcWEIHRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRWR5dHVqIHRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnV8WCxIVjeiB3aWVsZSBqxJl6eWvDs3cgdyBtb2R1bGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1fFgsSFY3ogbWVjaGFuaXptIGfFgm9zb3dhbmlhIHcgbW9kdWxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdEemllbm5payBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0IEZBUSB3IHByemVnbMSFZHppZSBkemllbm5pa2EgdyB0cnliaWUgIk1hxYJlIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0IEZBUSB3IHByemVnbMSFZHppZSB3IHRyeWJpZSAiTWHFgmUiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0xpbWl0IEZBUSBuYSBzdHJvbsSZIHcgcHJ6ZWdsxIVkemllIGR6aWVubmlrYSB3IHRyeWJpZSAiTWHFgmUiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMaW1pdCBGQVEgbmEgc3Ryb27EmSB3IHByemVnbMSFZHppZSB3IHRyeWJpZSAiTWHFgmUiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdTZXBhcmF0b3IgxZtjaWXFvGtpIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnRkFROiBjesSZc3RvIHphZGF3YW5lIHB5dGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBhYSBkbGEgYWtjZXB0YWNqaSBhcnR5a3XFgsOzdyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0b3JpYSB0ZWdvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0R6aWVubmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgasSZenlrYW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ1BvxYLEhWN6IGlubnkgb2JpZWt0IHogdHltIGVsZW1lbnRlbSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ05vd3kgYXJ0eWt1xYIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ05vd2UgYXJ0eWt1xYJ5IEZBUSB3eW1hZ2FqxIUgemF0d2llcmR6ZW5pYSBwcnplZCBwdWJsaWthY2rEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdXeWRydWt1aiB0byBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnS29sZWprYSBkbGEgemF0d2llcmR6ZcWEIGFhcnR5a3XFgsOzdyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdTenVrYWogRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB3aGljaCBjYW4gYWNjZXNzIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cHkgYWdlbnTDs3csIGt0w7NyZSBtYWrEhSBkb3N0xJlwIGRvIHRlaiBrYXRlZ29yaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcmllcyd9ID0gJ0thdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxTZWFyY2gnfSA9ICdEb2vFgmFkbmUgd3lzenVraXdhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSd9ID0gJ0thdGVnb3JpYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdMYW5ndWFnZWtleSwga3TDs2UgamVzdCB6ZGVmaW5pb3dhbmUgdyBwbGlrdSBqxJl6eWthICpfRkFRLnBtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9CiAgICAgICAgJ0JyYWsgemRlZmluaW93YW55Y2gga2F0ZWdvcmlpLiBBYnUgdXR3b3J6ecSHIGFydHlrdcWCIG11c2kgaXN0bmllxIcgY28gbmFqbW5pZWogamVkbmEga2F0ZWdvcmlhLiBTcHJhd2TFuiBwcm9zesSZIHN3b2plIHVwcmF3bmllbmlhIHcgbWVudSBLYXRlZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnU3p5YmtpZSB3eXN6dWtpd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcmllcyd9ID0gJ1BvZGthdGVnb3JpZSc7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9wdF9CUl9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpwdF9CUl9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU2ludG9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9ibGVtJ30gPSAnUHJvYmxlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdTb2x1w6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ07Dum1lcm8gZG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0FydGlnb3MgbW9kaWZpY2Fkb3MgcmVjZW50ZW1lbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ8OabHRpbW9zIGFydGlnb3MgYWRpY2lvbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ09zIDEwIGFydGlnb3MgbWFpcyBhY2Vzc2Fkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTdWJjYXRlZ29yaWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdTZWxlY2lvbmUgYSBwb250dWHDp8OjbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFeHBsb3JhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3DDumJsaWNvICh0b2RvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybm8gKGNsaWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5vIChhdGVuZGVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ0RpYSBkZSBpbsOtY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnTcOqcyBkZSBpbsOtY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICdBbm8gZGUgaW7DrWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnRGlhIGRlIHTDqXJtaW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ03DqnMgZGUgdMOpcm1pbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdBbm8gZGUgdMOpcm1pbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnT2JyaWdhZG8gcG9yIHNldSBWb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVm9jw6ogasOhIHZvdG91ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWlyIEFydGlnbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWdvcyBGQVEgKFRvcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnRpZ29zIEZBUSAoY3JpYWRvIG5vdm8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpZ29zIEZBUSAoYWx0ZXJhZG9zIHJlY2VudGVtZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnQ2F0ZWdvcmlhIEZBUSBhdHVhbGl6YWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnQ2F0ZWdvcmlhIEZBUSBhZGljaW9uYWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdVbWEgY2F0ZWdvcmlhIHByZWNpc2EgdGVyIHVtIG5vbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdFc3RhIGNhdGVnb3JpYSBqw6EgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnSWRpb21hIEZBUSBhZGljaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdJZGlvbWEgRkFRIGF0dWFsaXphZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ08gbm9tZSDDqSBvYnJpZ2F0w7NyaW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXNzZSBpZGlvbWEgasOhIGV4aXN0ZSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnQWRpY2lvbmFyIEFydGlnbyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdQYWxhdnJhcy1jaGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0EgY2F0ZWdvcmlhIMOpIG5lY2Vzc8OhcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0Fwcm92YcOnw6NvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgQ2F0ZWdvcmlhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBZGljaW9uYXIgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0V4Y2x1aXIgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnQWRpY2lvbmFyIENhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnQWx0ZXJhciBDYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlcsOhIGV4aWJpZG8gY29tbyBjb21lbnTDoXJpbyBubyBFeHBsb3JhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnUG9yIGZhdm9yLCBzZWxlY2lvbmUgcGVsbyBtZW5vcyB1bSBncnVwbyBkZSBwZXJtaXNzw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cG9zIGRlIGF0ZW5kZW50ZXMgcXVlIHBvZGVtIGFjZXNzYXIgYXJ0aWdvcyBuZXN0YSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdWb2PDqiByZWFsbWVudGUgcXVlciBhcGFnYXIgZXN0YSBjYXRlZ29yaWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRXN0YSBjYXRlZ29yaWEgw6kgdXRpbGl6YWRhIG5vKHMpIHNlZ3VpbnRlKHMpIGFydGlnbyhzKSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRXN0YSBjYXRlZ29yaWEgw6kgcGFpIGRhcyBzZWd1aW50ZXMgc3ViY2F0ZWdvcmlhcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdWb2PDqiByZWFsbWVudGUgcXVlciBleGNsdWlyIGVzdGUgYXJ0aWdvIEZBUT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdFeHBsb3JhZG9yIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdCdXNjYSBSw6FwaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdDb3JpbmdhcyBzw6NvIHBlcm1pdGlkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1Blc3F1aXNhIEF2YW7Dp2FkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViY2F0ZWdvcmlhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpZ29zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ1N1YmNhdGVnb3JpYXMgbsOjbyBlbmNvbnRyYWRhcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBKb3JuYWwgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXJlbmNpYW1lbnRvIGRlIElkaW9tYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0KICAgICAgICAnVXNlIGVzc2UgcmVjdXJzbyBzZSB2b2PDqiBkZXNlamEgdHJhYmFsaGFyIGNvbSBtw7psdGlwbG9zIGlkaW9tYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnRXhjbHVpciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnQWRpY2lvbmFyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdGFyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnVm9jw6ogcmVhbG1lbnRlIHF1ZXIgZXhjbHVpciBlc3RlIGlkaW9tYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnVm9jw6ogbsOjbyBwb2RlIGV4Y2x1aXIgZXN0ZSBpZGlvbWEuIEVsZSDDqSB1c2FkbyBlbSBwZWxvIG1lbm9zIHVtIGFydGlnbyBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBpZGlvbWEgw6kgdXNhZG8gbm9zIHNlZ3VpbnRlcyBhcnRpZ28ocykgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQ29uZmlndXJhw6fDtWVzIGRlIENvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlnb3MgRkFRIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkb3MgZGFkb3MgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnVW1hIHRhYmVsYSBkZSBGQVEgZ2Vuw6lyaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0ZBUSBJbmZvcm1hw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ8OabHRpbWEgYXR1YWxpemHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdQYWxhdnJhLWNoYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdWb3RvIChleC4gSWd1YWwgYSAxMCBvdSBtYWlvciBxdWUgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ1BvbnR1YcOnw6NvIChleC4gSWd1YWwgYSAyNSUgb3UgbWFpb3IgcXVlIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdBcHJvdmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICfDmmx0aW1hIGFsdGVyYcOnw6NvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0hvcsOhcmlvIGRlIGNyaWHDp8OjbyBkZSBhcnRpZ28gZGUgRkFRIChhbnRlcy9kZXBvaXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0hvcsOhcmlvIGRlIGNyaWHDp8OjbyBkZSBhcnRpZ28gZGUgRkFRIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdIb3LDoXJpbyBkZSBhbHRlcmHDp8OjbyBkZSBhcnRpZ28gZGUgRkFRIChhbnRlcy9kZXBvaXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0hvcsOhcmlvIGRlIGFsdGVyYcOnw6NvIGRlIGFydGlnbyBkZSBGQVEgKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0hvcsOhcmlvIGRlIGNyaWHDp8OjbyBkbyBGQVEgKGFudGVzL2RlcG9pcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnSG9yw6FyaW8gZGUgY3JpYcOnw6NvIGRvIEZBUSAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnSG9yw6FyaW8gZGUgYWx0ZXJhw6fDo28gZG8gRkFRIChhbnRlcy9kZXBvaXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0hvcsOhcmlvIGRlIGFsdGVyYcOnw6NvIGRvIEZBUSAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdFeGVjdXRhciBQZXNxdWlzYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUS1UZXh0b0NvbXBsZXRvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0J1c2NhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1NlbGXDp8OjbyBkZSBwZXJmaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1ZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ1NlbSBjb25maWd1cmHDp8O1ZXMgZGUgdm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1ZvdG9zIGVzcGVjw61maWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdleC4gSWd1YWwgYSAxMCBvdSBtYWlvciBxdWUgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ1BvbnR1YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdTZW0gY29uZmlndXJhw6fDtWVzIGRlIHBvbnR1YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdQb250dWHDp8OjbyBlc3BlY8OtZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ2V4LiBJZ3VhbCBhIDI1JSBvdSBtYWlvciBxdWUgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnSG9yw6FyaW8gZGUgY3JpYcOnw6NvIGRlIGFydGlnbyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJ0RhdGEgZXNwZWPDrWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSByYW5nZSd9ID0gJ1BlcsOtb2RvIGRlIGRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdIb3LDoXJpbyBkZSBhbHRlcmHDp8OjbyBkZSBhcnRpZ28gZGUgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8OjbyBkbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICciLCIxOCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyIsIjI1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ05vdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdOb3RhICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdkZSA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ05lbmh1bSB2b3RvIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdOZW5odW0gdm90byBlbmNvbnRyYWRvISBTZWphIG8gcHJpbWVpcm8gYSBhdmFsaWFyIGVzdGUgYXJ0aWdvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0JhaXhhciBhbmV4b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdFc3RlIGFydGlnbyB0ZSBhanVkb3U/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAncG91Y28gw7p0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnbXVpdG8gw7p0aWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdJbnNlcmlyIHRleHRvIGRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdJbnNlcmlyIHRvZG8gbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5zZXJpciBsaW5rIGRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnSW5zZXJpciB0ZXh0byBkbyBGQVEgZSBsaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdJbnNlcmlyIHRvZG8gbyBGQVEgZSBsaW5rJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTmVuaHVtIGFydGlnbyBGQVEgZW5jb250cmFkby4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdQZXNxdWlzYSBjb21wbGV0YSBkZSB0ZXh0b3MgZW0gYXJ0aWdvcyBGQVEgKHBvciBleGVtcGxvLCAiSm8qbyIgb3IgIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmnDp8O1ZXMgZGUgdm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnQXBlbmFzIGFydGlnb3MgZGUgRkFRIGNvbSB2b3Rvcy4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyacOnw7VlcyBkZSBwb250dWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdBcGVuYXMgYXJ0aWdvcyBkZSBGQVEgY29tIHBvbnR1YcOnw6NvLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdBcGVuYXMgYXJ0aWdvcyBkZSBGQVEgY3JpYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdBcGVuYXMgYXJ0aWdvcyBkZSBGQVEgY3JpYWRvcyBlbnRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdQZXJmaWwgZGUgcGVzcXVpc2EgY29tbyBtb2RlbG8/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRvIEFydGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1Byb2N1cmUgcG9yIGFydGlnb3MgY29tIHBhbGF2cmFzLWNoYXZlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQw7pibGljbyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdVbSBmaWx0cm8gZGUgc2HDrWRhIEhUTUwgcGFyYSBhZGljaW9uYXIgbGlua3MgcGFyYSB0csOhcyB1bWEgc2Vxw7zDqm5jaWEgZGVmaW5pZGEuIE8gZWxlbWVudG8gZGUgaW1hZ2VtIHBlcm1pdGUgZG9pcyB0aXBvcyBkZSBlbnRyYWRhLiBQcmltZWlybywgbyBub21lIGRlIHVtYSBpbWFnZW0gKGZhcS5wbmcsIHBvciBleGVtcGxvKS4gTmVzdGUgY2FzbywgbyBjYW1pbmhvIGRhIGltYWdlbSBPVFJTIHNlcsOhIHVzYWRvLiBBIHNlZ3VuZGEgcG9zc2liaWxpZGFkZSDDqSBpbnNlcmlyIG8gbGluayBwYXJhIGEgaW1hZ2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUyBjb3IgcGFyYSBvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0Nhc2FzIGRlY2ltYWlzIGRvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21lIHBhZHLDo28gZGEgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnSWRpb21hIHBhZHLDo28gcGFyYSBvcyBhcnRpZ29zIEZBUSBubyBtb2RvIGRlIGlkaW9tYSDDum5pY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1ByaW9yaWRhZGUgcGFkcsOjbyBkZSBjaGFtYWRvcyBwYXJhIGEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnRXN0YWRvIHBhZHLDo28gZGUgZW50cmFkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdFc3RhZG8gcGFkcsOjbyBkZSBjaGFtYWRvcyBwYXJhIGEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1ZhbG9yIHBhZHLDo28gcGFyYSBvIHBhcsOibWV0cm8gZGUgUmVjdXJzbyBwYXJhIGEgaW50ZXJmYWNlIHDDumJsaWNhLiBPIHBhcsOibWV0cm8gZGUgYcOnw6NvIMOpIHVzYWRvIG5vcyBzY3JpcHRzIGRvIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHJlc3VtbyBwYXJhIG1vc3RyYXIgYSB2aXN1YWxpemHDp8OjbyBwZXF1ZW5hIGRlIHVtIGpvcm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHJlc3VtbyBwYXJhIG1vc3RyYXIgYSB2aXN1YWxpemFyIGRlIHVtYSBwZXF1ZW5hIGxpc3RhIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgZW0gdW1hIHBlc3F1aXNhIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgZW0gdW1hIHBlc3F1aXNhIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgbm8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgbm8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIG5hIGludGVyZmFjZSBww7pibGljYS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbm8gR2VyZW5jaWFkb3IgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbm8gam9ybmFsIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbmEgcGVzcXVpc2EgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICdEZWZpbmUgb25kZSBvIGxpbmsgXCdJbnNlcmlyIEZBUVwnIHNlcsOhIGV4aWJpZG8uIE5vdGE6IE9zIFJlY3Vyc28gY29tdW0gZG8gQXRlbmRlbnRlIGluY2x1aSBBYnJpciBDaGFtYWRvLCBGZWNoYXIgQ2hhbWFkbywgQ2hhbWFkbyBkZSBUZXh0byBMaXZyZSwgQ2hhbWFkbyBkbyBwcm9wcmlldMOhcmlvLCBDaGFtYWRvIHBlbmRlbnRlLCBDaGFtYWRvIHByaW9yaXTDoXJpbyBlIFJlc3BvbnPDoXZlbCBwZWxvIENoYW1hZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluacOnw6NvIGRlIGNhbXBvcyBkZSB0ZXh0byBsaXZyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnRXhjbHVpciBlc3RlIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnUGVybWl0aXIgdsOhcmlvcyBpZGlvbWFzIG5vIG3Ds2R1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1Blcm1pdGlyIG1lY2FuaXNtbyBkZSBBdmFsaWHDp8OjbyBubyBtw7NkdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdKb3JuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgVmlzw6NvIEdlcmFsICJQZXF1ZW5vIiBkbyBKb3JuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRhIFZpc8OjbyBHZXJhbCBGQVEgIlBlcXVlbm8iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0xpbWl0ZSBkZSBGQVFzIHBvciBww6FnaW5hIGRhIFZpc8OjbyBHZXJhbCAiUGVxdWVubyIgZG8gSm9ybmFsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnTGltaXRlIGRlIEZBUXMgcG9yIHDDoWdpbmEgZGEgVmlzw6NvIEdlcmFsICJQZXF1ZW5vIiBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ0RlbGltaXRhZG9yIGRlIGNhbWluaG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRkFRIGJ1c2NhIHNlcnZpZG9yIHJvdGVhZG9yIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnw4FyZWEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0Zyb250ZW5kIGRlIHJlZ2lzdG8gZG8gbcOzZHVsbyBwYXJhIGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwbyBwYXJhIGEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnSGlzdMOzcmljbyBkZXN0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgY2FtcG9zIGludGVybm9zIGRlIHVtIENoYW1hZG8gYmFzZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBvIG5vbWUgZGUgY2FkYSBjYW1wbyBlbSB1bSBDaGFtYWRvIGJhc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnSW50ZXJmYWNlcyBvbmRlIGEgYnVzY2EgcsOhcGlkYSBkZXZlIHNlciBkZW1vbnN0cmFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBpZGlvbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0xpbmsgZGUgb3V0cm8gYXJ0aWdvIHBhcmEgZXN0ZSBpdGVtIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIGpvcm5hbCBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkZSB1bWEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkZSB1bWEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcHVibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaC4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBnZXJhciBodG1sICJPcGVuU2VhcmNoIiBwZXJmaWwgZGUgcGVzcXVpc2EgZmFxIGN1cnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOb3ZvIGFydGlnbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTm92b3MgYXJ0aWdvcyBGQVEgcHJlY2lzYW0gZGUgYXByb3Zhw6fDo28gYW50ZXMgZGUgc2VyIHB1YmxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyBHZXJlbmNpYWRvciBGQVEgZG8gaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyBHZXJlbmNpYWRvciBGQVEgZG8gaW50ZXJmYWNlIHB1YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3MgZW0gw7psdGltYXMgYWx0ZXJhw6fDtWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ07Dum1lcm8gZGUgaXRlbnMgbW9zdHJhZG9zIGVtIMO6bHRpbWFzIGNyaWHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3Mgbm8gcmVjdXJzbyB0b3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRlIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgRkFRIHPDo28gbW9zdHJhZG9zKSBkYSB2aXPDo28gZ2VyYWwgcGVxdWVuYSBkbyBqb3JuYWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGUgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBGQVEgc8OjbyBtb3N0cmFkb3MpIGRhIHZpc8OjbyBnZXJhbCBwZXF1ZW5hIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdJbXByaW1pciBlc3RlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGaWxhIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnQ29uZGnDp8OjbyBwYXJhIGEgYXZhbGlhw6fDo28uIENoYXZlIGRldmUgc2VyIGVtIHBlcmNlbnR1YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdQZXNxdWlzYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYSBib3TDo28gIkluc2VyaXIgTGluayBGQVEiIGVtIEFtcGxpYcOnw6NvIHBlcXVlbmEgcGFyYSBvIGFydGlnb3MgRkFRIHDDumJsaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdNb3N0cmFyIGFydGlnbyBGQVEgY29tIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ01vc3RyYXIgY2FtaW5obyBGQVEgc2ltIC8gbsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ01vc3RyYXIgaXRlbnMgZGUgc3ViY2F0ZWdvcmlhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBhcyDDumx0aW1hcyBhbHRlcmHDp8O1ZXMgZGUgaXRlbnMgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIG9zIMO6bHRpbW9zIGl0ZW5zIGNyaWFkb3MgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIG9zIDEwIGl0ZW5zIHN1cGVyaW9yIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciB2b3Rhw6fDo28gZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBsaWdhciB1bSBGQVEgY29tIG91dHJvIG9iamV0byBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGV4Y2x1aXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhY2Vzc2FyIG8gaGlzdMOzcmljbyBkZSB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSB2b2x0YXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBpbXByaW1pciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBwYXJhIHVtIEZBUSwgZXhlbXBsbyBGQVEgIyBLQiAjICMgTXlGQVEuIE8gcGFkcsOjbyDDqSBGQVEgIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0ZBUVwnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdOb3JtYWxcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdGQVFcJyB1c2FuZG8gbyB0aXBvIGRlIHbDrW5jdWxvIFwnUGFpIGUgZmlsaG9cJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnQ2hhbWFkb1wnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdOb3JtYWxcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdDaGFtYWRvXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ1BhaSBlIGZpbGhvXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0NvcnBvIGRvIGNoYW1hZG8gcGFyYSBhcHJvdmHDp8OjbyBkZSB1bSBhcnRpZ28gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnTyBhc3N1bnRvIGRvIGNoYW1hZG8gcGFyYSBhcHJvdmHDp8OjbyBkZSB1bSBhcnRpZ28gRkFRLic7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ0lkaW9tYSBjaGF2ZSBxdWUgZXN0w6EgZGVmaW5pZG8gbm8gYXJxdWl2byBkZSBpZGlvbWEgKl9GQVEucG0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYSBib3TDo28gIkluc2VyaXIgdGV4dG8gZSBMaW5rIEZBUSIgZW0gQW1wbGlhw6fDo28gcGVxdWVuYSBwYXJhIG8gYXJ0aWdvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0gJ01vc3RyYXIgYm90w6NvICJJbnNlcmlyIEZBUSBUZXh0byIgY29tIHBlcXVlbmEgYW1wbGlhw6fDo28gcGFyYSBvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9zdHJhciBlZGl0b3IgV1lTSVdZRyBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGlnbyBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnVm9jw6ogbsOjbyBwb2RlIGV4Y2x1aXIgZXN0YSBjYXRlZ29yaWEuIEVsYSDDqSB1c2FkYSBlbSBwZWxvIG1lbm9zIHVtIGFydGlnbyBGQVEgZS9vdSDDqSBwYWkgZGUgcGVsbyBtZW5vcyB1bWEgb3V0cmEgY2F0ZWdvcmlhISc7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9wdF9QVF9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIENvcHlyaWdodCAoQykgMjAxMiBGQ0NOIC0gUnVpIEZyYW5jaXNjbyA8cnVpLmZyYW5jaXNjb0BmY2NuLnB0PgojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpwdF9QVF9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0Q2hhbmdlZEl0ZW1zJ30gPSAnQXJ0aWdvcyBtb2RpZmljYWRvcyByZWNlbnRlbWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0Q3JlYXRlZEl0ZW1zJ30gPSAnw5psdGltb3MgYXJ0aWdvcyBhZGljaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AxMEl0ZW1zJ30gPSAnT3MgMTAgYXJ0aWdvcyBtYWlzIGFjZWRpZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3J5T2YnfSA9ICdTdWJjYXRlZ29yaWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdTZWxlY2lvbmUgYSBwb250dWHDp8OjbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncMO6YmxpY28gKHRvZG9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGFnZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnREYXknfSA9ICdEaWEgZGUgaW7DrWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydE1vbnRoJ30gPSAnTcOqcyBkZSBpbsOtY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0WWVhcid9ID0gJ0FubyBkZSBpbsOtY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZERheSd9ID0gJ0RpYSBkZSBmaW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kTW9udGgnfSA9ICdNw6pzIGRlIGZpbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmRZZWFyJ30gPSAnQW5vIGRlIGZpbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdPYnJpZ2FkbyBwZWxhIHN1YSBjb2xhYm9yYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnSsOhIHBhcnRpY2lwb3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnSW1wcmltaXIgQXJ0aWdvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnRpZ29zIEZBUSAoVG9wIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlnb3MgRkFRIChjcmlhZG8gbm92byknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlnb3MgRkFRIChhbHRlcmFkb3MgcmVjZW50ZW1lbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdDYXRlZ29yaWEgRkFRIGF0dWFsaXphZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdDYXRlZ29yaWEgRkFRIGFkaWNpb25hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0EgY2F0ZWdvcmlhIHByZWNpc2EgdGVyIHVtIG5vbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdFc3RhIGNhdGVnb3JpYSBqw6EgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnSWRpb21hIEZBUSBhZGljaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdJZGlvbWEgRkFRICBhdHVhbGl6YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdPIG5vbWUgw6kgb2JyaWdhdMOzcmlvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ08gaWRpb21hIGrDoSBleGlzdGUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnQWRpY2lvbmFyIEFydGlnbyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdBIGNhdGVnb3JpYSDDqSBvYnJpZ2F0w7NyaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXByb3Zhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBDYXRlZ29yaWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0FkaWNpb25hciBjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQXBhZ2FyIENhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0FkaWNpb25hciBjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0FsdGVyYXIgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTZXLDoSBleGliaWRvIGNvbW8gY29tZW50w6FyaW8gbm8gYnJvd3Nlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1BvciBmYXZvciwgc2VsZWNpb25lIHBlbG8gbWVub3MgdW0gZ3J1cG8gZGUgcGVybWlzc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhZ2VudGVzIHF1ZSBwb2RlbSBhY2VkZXIgYW9zIGFydGlnb3MgbmVzdGEgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnRGVzZWphIGFwYWdhciBlc3RhIGNhdGVnb3JpYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpZ28gYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9ICdOw6NvIHBvZGUgYXBhZ2FyIGVzdGEgY2F0ZWdvcmlhLiDDiSB1c2FkYSBlbSBwZWxvIG1lbm9zIHVtIGFydGlnbyBGQVEgZS9vdSDDqSBwYWkgZGUgcGVsbyBtZW5vcyB1bWEgb3V0cmEgY2F0ZWdvcmlhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0VzdGEgY2F0ZWdvcmlhIMOpIHV0aWxpemFkYSBubyhzKSBzZWd1aW50ZShzKSBhcnRpZ28ocykgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0VzdGEgY2F0ZWdvcmlhIMOpIHBhaSBkYXMgc2VndWludGVzIHN1Yi1jYXRlZ29yaWFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0Rlc2VqYSBhcGFnYXIgZXN0ZSBhcnRpZ28gRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmFkb3IgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1Blc3F1aXNhIFLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnUGVzcXVpc2EgQXZhbsOnYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWItY2F0ZWdvcmlhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpZ29zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ1N1YmNhdGVnb3JpYXMgbsOjbyBlbmNvbnRyYWRhcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBKb3JuYWwgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIElkaW9tYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0gJ1V0aWxpemUgZXN0YSBmdW5jaW9uYWxBbnRpZ3VpZGFkZSBjYXNlbyBkZXNlamEgdHJhYmFsaGFyIGNvbSBtw7psdGlwbG9zIGlkaW9tYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnQXBhZ2FyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdEZXNlamEgYXBhZ2FyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPSAnTsOjbyBwb2RlIGFwYWdhciBlc3RlIGlkaW9tYS4gw4kgdXNhZG8gZW0gcGVsbyBtZW5vcyB1bSBhcnRpZ28gRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIMOpIHVzYWRvIG5vcyBzZWd1aW50ZXMgYXJ0aWdvKHMpIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0NvbmZpZ3VyYcOnw7VlcyBkZSBDb250ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpZ29zIEZBUSBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZG9zIGRhZG9zIGRlIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnRkFRIEluZm9ybWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1ZvdG9zJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEtVGV4dG9Db21wbGV0byc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdQZXNxdWlzYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdOb3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnTm90YSAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAncmVkdXppZG8gZGUgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdOZW5odW0gdm90byBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTmVuaHVtIHZvdG8gZW5jb250cmFkbyEgU2VqYSBvIHByaW1laXJvIGEgYXZhbGlhciBlc3RlIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdEZXNjYXJyZWdhciBhbmV4b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZVZvdGluZ1F1ZXN0aW9uJ30gPSAnRXN0ZSBhcnRpZ28gZm9pIMO6dGlsID8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduw6NvIGFqdWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ211aXRvIMO6dGlsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnRkFRIEluc2VyaXIgVGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnRkFRIEluc2VyaXIgTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnRkFRIEluc2VyaXIgVGV4dG8gZSBMaW5rJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTmVuaHVtIGFydGlnbyBGQVEgZW5jb250cmFkby4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdQZXNxdWlzYSBjb21wbGV0YSBkZSB0ZXh0b3MgZW0gYXJ0aWdvcyBGQVEgKHBvciBleGVtcGxvLCAiSm8qbyIgb3IgIldpbGwqIiknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbHMnfSA9ICdEZXRhbGhlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1Blc3F1aXNlIHBvciBhcnRpZ29zIGNvbSBwYWxhdnJhcy1jaGF2ZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9ICdVbSBmaWx0cm8gZGUgc2HDrWRhIEhUTUwgcGFyYSBhZGljaW9uYXIgbGlua3MgcGFyYSBhdHLDoXMgdW1hIHNlccO8w6puY2lhIGRlZmluaWRhLiBPIGVsZW1lbnRvIGRlIGltYWdlbSBwZXJtaXRlIGRvaXMgdGlwb3MgZGUgZW50cmFkYS4gUHJpbWVpcm8sIG8gbm9tZSBkYSBpbWFnZW0gKGV4OmZhcS5wbmcpLiBOZXN0ZSBjYXNvLCBvIGNhbWluaG8gZGEgaW1hZ2VtIE9UUlMgc2Vyw6EgdXRpbGl6YWRvLiBBIHNlZ3VuZGEgcGVybWl0ZSBpbnNlcmlyIG8gbGluayBwYXJhIGEgaW1hZ2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0PDtHIgQ1NTIHBhcmEgbyByZXN1bHRhZG8gZGEgdm90YcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBDYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0Nhc2FzIGRlY2ltYWlzIGRvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21lIHBvciBvbWlzc8OjbyBkZSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdJZGlvbWEgcG9yIG9taXNzw6NvIHBhcmEgb3MgYXJ0aWdvcyBGQVEgbm8gbW9kbyBkZSBpZGlvbWEgw7puaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUHJpb3JpZGFkZSBwb3Igb21pc3PDo28gZGUgdGlja2V0cyBwYXJhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0VzdGFkbyBwb3Igb21pc3PDo28gZGUgZW50cmFkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdFc3RhZG8gcG9yIG9taXNzw6NvIGRlIHRpY2tldHMgcGFyYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPSAnVmFsb3IgcG9yIG9taXNzw6NvIHBhcmEgbyBwYXLDom1ldHJvIGRlIFJlY3Vyc28gbmEgaW50ZXJmYWNlIHDDumJsaWNhLiBPIHBhcsOibWV0cm8gZGUgYcOnw6NvIMOpIHV0aWxpemFkbyBub3Mgc2NyaXB0cyBkbyBzaXN0ZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPSAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgcmVzdW1vIHBhcmEgbW9zdHJhciBhIHZpc3RhIHBlcXVlbmEgZGUgdW0gam9ybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0gJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHJlc3VtbyBwYXJhIG1vc3RyYXIgYSB2aXN1YWxpemFyIGRlIHVtYSBwZXF1ZW5hIGxpc3RhIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdEZWZpbmUgbyBhdHJpYnV0byBwb3Igb21pc3PDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgYSBGQVEgbnVtYSBwZXNxdWlzYSBGQVEgbm8gaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdEZWZpbmUgbyBhdHJpYnV0byBwb3Igb21pc3PDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgYSBGQVEgbnVtYSBwZXNxdWlzYSBGQVEgbm8gaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0RlZmluZSBvIGF0cmlidXRvIHBvciBvbWlzc8OjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBhIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIG5hIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIG8gYXRyaWJ1dG8gcG9yIG9taXNzw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5hIGdlc3TDo28gRkFRIGRhIGludGVyZmFjZSBkbyBhZ2VudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIG8gYXRyaWJ1dG8gcG9yIG9taXNzw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIG8gYXRyaWJ1dG8gcG9yIG9taXNzw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5hIGdlc3TDo28gRkFRIGRhIGludGVyZmFjZSBww7pibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgYSBvcmRlbSBwb3Igb21pc3PDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkYSBnZXN0w6NvIEZBUSBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGEgb3JkZW0gcG9yIG9taXNzw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gbmEgZ2VzdMOjbyBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGEgb3JkZW0gcG9yIG9taXNzw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gbmEgZ2VzdMOjbyBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluZSBhIG9yZGVtIHBvciBvbWlzc8OjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGEgb3JkZW0gcG9yIG9taXNzw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluZSBhIG9yZGVtIHBvciBvbWlzc8OjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIG5hIGludGVyZmFjZSBww7pibGljYS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbmEgZ2VzdMOjbyBGQVEuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGEgY29sdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbm8gam9ybmFsIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5hIHBlc3F1aXNhIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0gJ0RlZmluZSBvbmRlIG8gbGluayBcJ0luc2VyaXIgRkFRXCcgc2Vyw6EgZXhpYmlkby4gTm90YTogT3MgUmVjdXJzbyBjb211bXMgZG8gYWdlbnRlIGluY2x1ZW0gQWJyaXIgdGlja2V0LCBGZWNoYXIgdGlja2V0LCB0aWNrZXQgZGUgVGV4dG8gTGl2cmUsIHByb3ByaWV0w6FyaW8gZG8gdGlja2V0LCB0aWNrZXQgcGVuZGVudGUsIFByaW9yaWRhZGUgZSByZXNwb25zw6F2ZWwgZG8gdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmnDp8OjbyBkZSBjYW1wb3MgZGUgdGV4dG8gbGl2cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0FwYWdhciBlc3RhIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnUGVybWl0aXIgdsOhcmlvcyBpZGlvbWFzIG5vIG3Ds2R1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1Blcm1pdGlyIG1lY2FuaXNtbyBkZSBBdmFsaWHDp8OjbyBubyBtw7NkdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdKb3JuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgdmlzdGEgIlBlcXVlbmEiIGRvIEpvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgdmlzdGEgIEZBUSAiUGVxdWVubyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnTGltaXRlIGRlIEZBUXMgcG9yIHDDoWdpbmEgbmEgdmlzdGEgIlBlcXVlbm8iIGRvIEpvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0xpbWl0ZSBkZSBGQVFzIHBvciBww6FnaW5hIG5hIHZpc3RhICJQZXF1ZW5hIiBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ0RlbGltaXRhZG9yIGRlIGNhbWluaG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnUm91dGVyIGRlIHBlc3F1aXNhIEZBUSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ8OBcmVhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdGcm9udGVuZCBkZSByZWdpc3RvIGRvIG3Ds2R1bG8gcGFyYSBhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cG8gcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3TDs3JpY28gZGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGNhbXBvcyBpbnRlcm5vcyBkZSB1bSB0aWNrZXQgYmFzZWFkbyBlbSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBvIG5vbWUgZGUgY2FkYSBjYW1wbyBudW0gdGlja2V0IGJhc2VhZG8gZW0gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnSW50ZXJmYWNlcyBvbmRlIGEgYnVzY2EgcsOhcGlkYSBkZXZlIHNlciB2aXN1YWxpemFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBpZGlvbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAnSWRpb21hIGNoYXZlIHF1ZSBlc3TDoSBkZWZpbmlkbyBubyBhcnF1aXZvIGRlIGlkaW9tYSAqX0ZBUS5wbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGluayBkZSBvdXRybyBhcnRpZ28gcGFyYSBlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gbmEgZ2VzdMOjbyBGQVEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHZpc3VhbGl6YWRvIG5hIGdlc3TDo28gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHZpc3VhbGl6YWRvIG5hIGdlc3TDo28gRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSB2aXN1YWxpemFkbyBubyBqb3JuYWwgRkFRIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHZpc3VhbGl6YWRvIG5vIHJlc3V0bGFkbyBkZSB1bWEgcGVzcXVpc2Egbm8gaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHZpc3VhbGl6YWRvIG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcHVibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0gJ03Ds2R1bG8gcGFyYSBnZXJhciBodG1sICJPcGVuU2VhcmNoImRlIHBlc3F1aXNhIGZhcSBjdXJ0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTm92byBhcnRpZ28gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ05vdm9zIGFydGlnb3MgRkFRIHByZWNpc2FtIGRlIGFwcm92YcOnw6NvIGFudGVzIGRlIHNlciBwdWJsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSB2aXN1YWxpemFkbyBuYSBnZXN0w6NvIEZBUSBkbyBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gbmEgZ2VzdMOjbyBGQVEgZG8gaW50ZXJmYWNlIHB1YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gcG9yIHDDoWdpbmEgZGUgcmVzdWx0YWRvcyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gcG9yIHDDoWdpbmEgZGUgcmVzdWx0YWRvcyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcHVibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ07Dum1lcm8gZGUgaXRlbnMgdmlzdWFsaXphZG9zIG5hcyDDumx0aW1hcyBhbHRlcmHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTsO6bWVybyBkZSBpdGVucyB2aXN1YWxpemFkb3MgbmFzIMO6bHRpbWFzIGNyaWHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTsO6bWVybyBkZSBpdGVucyB2aXN1YWxpemFkb3MgZW0gdG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPSAnUGFyw6JtZXRyb3MgZGUgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBGQVEgc8OjbyB2aXN1YWxpemFkb3MpIGRhIHZpc3RhIHBlcXVlbmEgZG8gam9ybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9ICdQYXLDom1ldHJvcyBkZSBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIEZBUSBzw6NvIHZpc3VhbGl6YWRvcykgZGEgdmlzdGEgcGVxdWVuYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnSW1wcmltaXIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZpbGEgcGFyYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnQ29uZGnDp8OjbyBwYXJhIGEgYXZhbGlhw6fDo28uIENoYXZlIGVtIHBlcmNlbnRhZ2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnUGVzcXVpc2FyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICdNb3N0cmFyIGJvdMOjbyAiSW5zZXJpciBMaW5rIEZBUSIgbmEgdmlzdGEgcGVxdWVuYSBkZSBhcnRpZ29zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJ01vc3RyYSBib3TDo28gIkluc2VyaXIgdGV4dG8gZSBMaW5rIEZBUSIgbmEgdmlzdGEgcGVxdWVuYSBkZSBhcnRpZ29zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnTW9zdHJhciBib3TDo28gIkluc2VyaXIgRkFRIFRleHRvIiBuYSB2aXN0YSBwYXJhIG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdNb3N0cmFyIGFydGlnbyBGQVEgY29tIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ01vc3RyYXIgY2FtaW5obyBGQVEgc2ltIC8gbsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9zdHJhciBlZGl0b3IgV1lTSVdZRyBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnTW9zdHJhciBzdWJjYXRlZ29yaWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGFzIMO6bHRpbWFzIGFsdGVyYcOnw7VlcyBkZSBpdGVucyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgb3Mgw7psdGltb3MgaXRlbnMgY3JpYWRvcyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgYXMgMTAgbWFpcyB2aXN1YWxpemFkYXMgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIHZvdGHDp8OjbyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBsaWdhciBhIEZBUSBjb20gb3V0cm8gb2JqZXRvIG5hIHZpc3RhIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBleGNsdWlyIHVtIEZBUSBuYSB2aXN0YSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgYWNlZGVyIGFvIGhpc3TDs3JpY28gZGEgRkFRIG5hIHZpc3RhIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHVtYSBGQVEgbmEgdmlzdGEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgdm9sdGFyIHVtYSBGQVEgbmEgdmlzdGEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtYSBGQVEgbmEgdmlzdGEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0gJ08gaWRlbnRpZmljYWRvciBwYXJhIEZBUSwgZXhlbXBsbyBGQVEgIyBLQiAjICMgTXlGQVEuIE8gdmFsb3IgcG9yIG9taXNzw6NvIMOpIEZBUSAjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0ZBUVwnIGNvbSBsaWdhw6fDo28gXCdOb3JtYWxcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnRkFRXCcgY29tIGxpZ2HDp8OjbyBcJ1BhaSBlIGZpbGhvXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdUaWNrZXRcJyBjb20gbGlnYcOnw6NvIFwnTm9ybWFsXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPSAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ1RpY2tldFwnIGNvbSBsaWdhw6fDo28gXCdQYWkgZSBmaWxob1wnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDb3JwbyBkbyB0aWNrZXQgcGFyYSBhcHJvdmHDp8OjbyBkZSB1bSBhcnRpZ28gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnTyBhc3N1bnRvIGRvIHRpY2tldCBwYXJhIGFwcm92YcOnw6NvIGRlIHVtIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIEV4cGxvcmVyIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlOiAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9ydV9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIENvcHlyaWdodCAoQykgMjAxMyBBbmRyZXkgTi4gQnVyZGluIDxCdXJkaW5BTiBhdCBpdC1zYWtoLm5ldD4KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cnVfRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBQUFGQVEKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn0YHQu9GD0LbQtdCx0L3QvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ9C+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn0L7RgtC60YDRi9GC0L7QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J/QvtGB0LvQtdC00L3QuNC1INC+0LHQvdC+0LLQu9C10L3QuNGPINGB0YLQsNGC0LXQuSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J3QvtCy0YvQtSDRgdGC0LDRgtGM0LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAg0YHRgtCw0YLQtdC5IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9Cf0L7QtNGA0LDQt9C00LXQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9Ce0YbQtdC90LrQsCDQvtGC0YHRg9GC0YHRgtCy0YPQtdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ9Ce0LHQt9C+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAn0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LUgKNCy0YHQtdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAn0L7RgtC60YDRi9GC0L7QtSAo0LrQu9C40LXQvdGC0LDQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ9GB0LvRg9C20LXQsdC90L7QtSAo0LDQs9C10L3RgtCw0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ9Cd0LDRh9Cw0LvQviDQtNC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICfQndCw0YfQsNC70LAg0LzQtdGB0Y/RhtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICfQndCw0YfQsNC70L4g0LPQvtC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ9Ca0L7QvdC10YYg0LTQvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ9Ca0L7QvdC10YYg0LzQtdGB0Y/RhtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAn0JrQvtC90LXRhiDQs9C+0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfQodC/0LDRgdC40LHQviDQt9CwINCy0LDRiNGDINC+0YbQtdC90LrRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfQktGLINGD0LbQtSDQv9C+0YHRgtCw0LLQuNC70Lgg0L7RhtC10L3QutGDISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ9Cf0LXRh9Cw0YLRjCDRgdGC0LDRgtGM0LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEgKFRvcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICfQodGC0LDRgtGM0LggRkFRICjQvdC+0LLRi9C1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAn0KHRgtCw0YLRjNC4IEZBUSAo0L7QsdC90L7QstC70ZHQvdC90YvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAn0JrQsNGC0LXQs9C+0YDQuNGPIEZBUSDQuNC30LzQtdC90LXQvdCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAn0JrQsNGC0LXQs9C+0YDQuNGPIEZBUSDQtNC+0LHQsNCy0LvQtdC90LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ9CjINC60LDRgtC10LPQvtGA0LjQuCDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0L3QsNC30LLQsNC90LjQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ9Ci0LDQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINGD0LbQtSDRgdGD0YnQtdGB0YLQstGD0LXRgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ9Cv0LfRi9C6INC00LvRjyBGQVEg0LTQvtCx0LDQstC70LXQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAn0K/Qt9GL0Log0LTQu9GPIEZBUSDQuNC30LzQtdC90ZHQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC80L4g0LfQsNC00LDRgtGMINC90LDQt9Cy0LDQvdC40LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAn0KLQsNC60L7QuSDRj9C30YvQuiDRg9C20LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0YHRgtCw0YLRjNGOIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ9Cd0YPQttC90L4g0LLRi9Cx0YDQsNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ9Ce0LTQvtCx0YDQtdC90L4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0LrQsNGC0LXQs9C+0YDQuNGP0LzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAn0JTQvtCx0LDQstC40YLRjCDQutCw0YLQtdCz0L7RgNC40Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn0KPQtNCw0LvQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAn0JTQvtCx0LDQstC40YLRjCDQutCw0YLQtdCz0L7RgNC40Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ9Cj0LTQsNC70LjRgtGMINC60LDRgtC10LPQvtGA0LjRjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn0JHRg9C00LXRgiDQv9C+0LrQsNC30LDQvdC+INCyIEV4cGxvcmVyINC60LDQuiDQutC+0LzQvNC10L3RgtCw0YDQuNC5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ9Cj0LrQsNC20LjRgtC1INGF0L7RgtGPINCx0Ysg0L7QtNC90YMg0LPRgNGD0L/Qv9GDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAn0JPRgNGD0L/Qv9GLINCw0LPQtdC90YLQvtCyLCDQuNC80LXRjtGJ0LjRhSDQtNC+0YHRgtGD0L8g0Log0YHRgtCw0YLRjNGP0Lwg0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn0J/QvtC00YLQstC10YDQtNC40YLQtSDRg9C00LDQu9C10L3QuNC1INGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICfQrdGC0YMg0LrQsNGC0LXQs9C+0YDQuNGOINGD0LTQsNC70Y/RgtGMINC90LXQu9GM0LfRjyEg0JIg0L3QtdC5INGB0L7QtNC10YDQttC40YLRgdGPINC60LDQuiDQvNC40L3QuNC80YPQvCDQvtC00L3QsCDRgdGC0LDRgtGM0Y8gRkFRINC4L9C40LvQuCDQvtC90LAg0Y/QstC70Y/QtdGC0YHRjyDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0Lkg0LTQu9GPINC00YDRg9Cz0LjRhSDQutCw0YLQtdCz0L7RgNC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICfQkiDRjdGC0L7QuSDQutCw0YLQtdCz0L7RgNC40Lgg0LjQvNC10Y7RgtGB0Y8g0YHQu9C10LTRg9GO0YnQuNC1INGB0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAn0K3RgtCwINC60LDRgtC10LPQvtGA0LjRjyDRj9Cy0LvRj9C10YLRgdGPINGA0L7QtNC40YLQtdC70YzRgdC60L7QuSDQtNC70Y8g0YHQu9C10LTRg9GO0YnQuNGFINC/0L7QtNGA0LDQt9C00LXQu9C+0LInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAn0J/QvtC00YLQstC10YDQtNC40YLQtSDRg9C00LDQu9C10L3QuNC1INGN0YLQvtC5INGB0YLQsNGC0YzQuCBGQVEhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRkFRINCe0LHQt9C+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn0JHRi9GB0YLRgNGL0Lkg0L/QvtC40YHQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfQoNCw0YHRiNC40YDQtdC90L3Ri9C5INC/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ9Cf0L7QtNGA0LDQt9C00LXQu9GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfQn9C+0LTRgNCw0LfQtNC10LvRiyDQvdC1INC90LDQudC00LXQvdGLLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICfQlNCw0L3QvdGL0YUg0LbRg9GA0L3QsNC70LAgRkFRINC90LXRgi4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0Y/Qt9GL0LrQsNC80LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0KICAgICAgICAn0JjRgdC/0L7Qu9GM0LfRg9C50YLQtSDRjdGC0YMg0YTRg9C90LrRhtC40Y4g0L/RgNC4INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INGA0LDQsdC+0YLRiyDRgSDQvdC10YHQutC+0LvRjNC60LjQvNC4INGP0LfRi9C60LDQvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGP0LfRi9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ9Cj0LTQsNC70LjRgtGMINGP0LfRi9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0Y/Qt9GL0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ9CY0LfQvNC10L3QuNGC0Ywg0Y/Qt9GL0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7Qs9C+INGP0LfRi9C60LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ9Ct0YLQvtGCINGP0LfRi9C6INGD0LTQsNC70Y/RgtGMINC90LXQu9GM0LfRjy4g0J3QsCDQvdGR0Lwg0L3QsNC/0LjRgdCw0L3QsCDQutCw0Log0LzQuNC90LjQvNGD0Lwg0L7QtNC90LAg0YHRgtCw0YLRjNGPIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICfQrdGC0L7RgiDRj9C30YvQuiDQuNGB0L/QvtC70YzQt9C+0LLQsNC9INCyINGB0LvQtdC00YPRjtGJ0LjRhSDRgdGC0LDRgtGM0Y/RhSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSDQvdCwINGB0YLRgNCw0L3QuNGG0YMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn0JTQsNC90L3Ri9C1IEZBUSDQvdC1INC90LDQudC00LXQvdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9CT0L7Qu9C+0YHQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ9Cf0L7QuNGB0Log0LIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfQntGG0LXQvdC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICfQntGG0LXQvdC60LAgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ9C40LcgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfQntGG0LXQvdC+0Log0L3QtSDQvdCw0LnQtNC10L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ9Ce0YbQtdC90L7QuiDQvdC1INC90LDQudC00LXQvdC+ISDQntGG0LXQvdC40YLQtSDRjdGC0YMg0YHRgtCw0YLRjNGOIEZBUSDQv9C10YDQstGL0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICfQodC60LDRh9Cw0YLRjCDQstC70L7QttC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAn0J3QsNGB0LrQvtC70YzQutC+INCx0YvQu9CwINC/0L7Qu9C10LfQvdCwINGN0YLQsCDRgdGC0LDRgtGM0Y8/INCf0L7QttCw0LvRg9C50YHRgtCwLCDQvtGG0LXQvdC40YLQtSDQtdGRLCDRh9GC0L7QsdGLINC80Ysg0LzQvtCz0LvQuCDRg9C70YPRh9GI0LjRgtGMINCx0LDQt9GDIEZBUS4g0KHQv9Cw0YHQuNCx0L4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAn0LHQtdGB0L/QvtC70LXQt9C90LDRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICfQvtGH0LXQvdGMINC/0L7Qu9C10LfQvdCw0Y8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICfQktGB0YLQsNCy0LjRgtGMINGC0LXQutGB0YIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ9CS0YHRgtCw0LLQuNGC0Ywg0L/QvtC70L3QvtGB0YLRjNGOIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICfQktGB0YLQsNCy0LjRgtGMINGB0YHRi9C70LrRgyDQvdCwIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAn0JLRgdGC0LDQstC40YLRjCDRgtC10LrRgdGCIEZBUSDQuCDRgdGB0YvQu9C60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ9CS0YHRgtCw0LLQuNGC0Ywg0L/QvtC70L3QvtGB0YLRjNGOIEZBUSDQuCDRgdGB0YvQu9C60YMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICfQodGC0LDRgtGM0LggRkFRINC90LUg0L3QsNC50LTQtdC90YsuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAn0J/QvtC70L3QvtGC0LXQutGB0YLQvtCy0YvQuSDQv9C+0LjRgdC6INCyINGB0YLQsNGC0YzRj9GFIEZBUSAo0L3QsNC/0YDQuNC80LXRgCwgItCw0LLRgtC+0Lwq0LrQuCIg0LjQu9C4ICLQnNC+0YHQuioiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAn0J/QvtC40YHQuiDRgdGC0LDRgtC10Lkg0L/QviDQutC70Y7Rh9C10LLQvtC80YMg0YHQu9C+0LLRgyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn0J7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAn0KTQuNC70YzRgtGAINC00LvRjyBIVE1MINC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDRgdGB0YvQu9C60Lgg0L/QvtC30LDQtNC4INC30LDQtNCw0L3QvdC+0Lkg0YHRgtGA0L7QutC4LiDQrdC70LXQvNC10L3RgiBJbWFnZSDQvNC+0LbQtdGCINCx0YvRgtGMINCy0LLQtdC00LXQvSDQtNCy0YPQvNGPINGB0L/QvtGB0L7QsdCw0LzQuC4g0J/QtdGA0LLRi9C5IC0g0Y3RgtC+INC40LzRjyDRhNCw0LnQu9CwKNGCLtC1LiBmYXEucG5nKS4g0JIg0Y3RgtC+0Lwg0YHQu9GD0YfQsNC1INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQv9GD0YLRjCDQuiDRhNCw0LnQu9Cw0Lwg0LjQt9C+0LHRgNCw0LbQtdC90LjQuSBPVFJTLiDQktGC0L7RgNC+0Lkg0LLQsNGA0LjQsNC90YIg0LIg0YPQutCw0LfQsNC90LjQuCDRgdGB0YvQu9C60Lgg0L3QsCDQuNC30L7QsdGA0LDQttC10L3QuNC1KNC90LDQv9GA0LjQvNC10YAsIGh0dHA6Ly9vdHJzLm9yZy9mYXEucG5nKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDU1Mt0YbQstC10YIg0LTQu9GPINGA0LXQt9GD0LvRjNGC0LDRgtCwINCz0L7Qu9C+0YHQvtCy0LDQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60LDRgtC10LPQvtGA0LjRj9C80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICfQndCw0LfQstCw0L3QuNC1INC60LDRgtC10LPQvtGA0LjQuCDQv9C+LdGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ9Cv0LfRi9C6INGB0YLQsNGC0LXQuSBGQVEg0L/Qvi3Rg9C80L7Qu9GH0LDQvdC40Y4g0LIg0L7QtNC90L7Rj9C30YvRh9C90L7QvCDRgNC10LbQuNC80LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ9Cf0YDQuNC+0YDQuNGC0LXRgiDQt9Cw0Y/QstC+0Log0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLQtdC5IEZBUSDQv9C+LdGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ9Ch0YLQsNGC0YPRgSDQt9Cw0L/QuNGB0LggRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn0KHRgtCw0YLRg9GBINC30LDRj9Cy0L7QuiDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtC10LkgRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ9CX0L3QsNGH0LXQvdC40LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0L/QsNGA0LDQvNC10YLRgNCwIEFjdGlvbiDQtNC70Y8g0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LPQviDRhNGA0L7QvdGC0LXQvdC00LAuINCf0LDRgNCw0LzQtdGC0YAgQWN0aW9uINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQsiDRgdC60YDQuNC/0YLQsNGFINGB0LjRgdGC0LXQvNGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCBGQVEg0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0L/QvtC40YHQutCwINCyIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCBGQVEg0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0L/QvtC40YHQutCwINCyIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCDRgdC+0YDRgtC40YDQvtCy0LrQuCDRgNC10LfRg9C70YzRgtCw0YLQsCDQv9C+0LjRgdC60LAg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAg0YHQvtGA0YLQuNGA0L7QstC60Lgg0LIgRkFRIEV4cGxvcmVyZSDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAg0YHQvtGA0YLQuNGA0L7QstC60Lgg0LIgRkFRIEV4cGxvcmVyZSDQuNC90YLQtdGA0YTQtdC50YHQsCDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAg0YHQvtGA0YLQuNGA0L7QstC60Lgg0LIgRkFRIEV4cGxvcmVyZSDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCAg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFIEZBUSBFeHBsb3JlciDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuIFVwOiDQv9C+0LfQtNC90LXQtSDQvdCw0LLQtdGA0YXRgy4gRG93bjog0L3QvtCy0L7QtSDQvdCw0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INC/0L7RgNGP0LTQvtC6INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUgRkFRIEV4cGxvcmVyINC40L3RgtC10YDRhNC10LnRgdCwINC60LvQuNC10L3RgtCwLiBVcDog0L/QvtC30LTQvdC10LUg0L3QsNCy0LXRgNGF0YMuIERvd246INC90L7QstC+0LUg0L3QsNCy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdGL0Lkg0L/QvtGA0Y/QtNC+0Log0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSBGQVEgRXhwbG9yZXIg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuIFVwOiDQv9C+0LfQtNC90LXQtSDQvdCw0LLQtdGA0YXRgy4gRG93bjog0L3QvtCy0L7QtSDQvdCw0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn0KPQtNCw0LvQuNGC0Ywg0Y3RgtC+0YIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfQmNC30LzQtdC90LjRgtGMINGN0YLQvtGCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAn0KDQsNC30YDQtdGI0LjRgtGMINC80L3QvtCz0L7Rj9C30YvRh9C90L7RgdGC0Ywg0LIg0LzQvtC00YPQu9C1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICfQoNCw0LfRgNC10YjQuNGC0Ywg0YTRg9C90LrRhtC40Y4g0L7RhtC10L3QutC4INCyINC80L7QtNGD0LvQtSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAn0JbRg9GA0L3QsNC7IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICfQoNCw0LfQtNC10LvQuNGC0LXQu9GMINC/0YPRgtC4IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn0JPRgNGD0L/Qv9CwINC00LvRjyDQvtC00L7QsdGA0LXQvdC40Y8g0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ9CY0YHRgtC+0YDQuNGPINGN0YLQvtCz0L4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ9CY0L3RgtC10YDRhNC10LnRgdGLLCDQsiDQutC+0YLQvtGA0YvRhSDQv9C+0LrQsNC30YvQstCw0LXRgtGB0Y8g0LHRi9GB0YLRgNGL0Lkg0L/QvtC40YHQui4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ9CW0YPRgNC90LDQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0Y/Qt9GL0LrQsNC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAn0J/RgNC40LLRj9C30LDRgtGMINC00YDRg9Cz0L7QuSDQvtCx0YrQtdC60YIg0Log0Y3RgtC+0LzRgyDRjdC70LXQvNC10L3RgtGDIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzQvtC1INCyIEZBUSBFeHBsb3JlciDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80L7QtSDQsiBGQVEgRXhwbG9yZXIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNC+0LUg0LIgRkFRIEV4cGxvcmVyINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINCyINC20YPRgNC90LDQu9C1IEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINCyINGA0LXQt9GD0LvRjNGC0LDRgtC1INC/0L7QuNGB0LrQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINCyINGA0LXQt9GD0LvRjNGC0LDRgtC1INC/0L7QuNGB0LrQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINCyINGA0LXQt9GD0LvRjNGC0LDRgtC1INC/0L7QuNGB0LrQsCDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICfQndC+0LLQsNGPINGB0YLQsNGC0YzRjyDQsiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAn0J3QvtCy0LDRjyDRgdGC0LDRgtGM0Y8gRkFRINC/0LXRgNC10LQg0L/Rg9Cx0LvQuNC60LDRhtC40LXQuSDRgtGA0LXQsdGD0LXRgiDQvtC00L7QsdGA0LXQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINCyIEZBUSBFeHBsb3JlciDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINCyIEZBUSBFeHBsb3JlciDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0L3QsCDQutCw0LbQtNC+0Lkg0YHRgtGA0LDQvdC40YbQtSDRgNC10LfRg9C70YzRgtCw0YLQsCDQv9C+0LjRgdC60LAg0LIgINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0L3QsCDQutCw0LbQtNC+0Lkg0YHRgtGA0LDQvdC40YbQtSDRgNC10LfRg9C70YzRgtCw0YLQsCDQv9C+0LjRgdC60LAg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC/0L7Qt9C40YbQuNC5INCyINC/0L7RgdC70LXQtNC90LjRhSDQuNC30LzQtdC90LXQvdC40Y/RhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/QvtC30LjRhtC40Lkg0LIg0L3QvtCy0YvRhSDRgdGC0LDRgtGM0Y/RhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/QvtC30LjRhtC40Lkg0LIg0YTRg9C90LrRhtC40LggVG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ9Cf0LXRh9Cw0YLRjCDRjdGC0L7Qs9C+IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQntGH0LXRgNC10LTRjCDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtC10LkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAn0J/QvtC40YHQuiDQsiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDRgdGC0LDRgtGM0Y4gRkFRINCyIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC/0YPRgtGMIEZBUSDQtNCwL9C90LXRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINGB0L7QtNC10YDQttC40LzQvtC1INC/0L7QtNGA0LDQt9C00LXQu9C+0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC/0L7RgdC70LXQtNC90LjQtSDQuNC30LzQtdC90LXQvdC40Y8g0LIg0YPQutCw0LfQsNC90YvRhSDQuNC90YLQtdGA0YTQtdC50YHQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0L3QvtCy0YvQtSDQv9GD0L3QutGC0Ysg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCBUb3AgMTAg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDQvtGG0LXQvdC60YMg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCBGQVEsINC90LDQv9GA0LjQvNC10YAsIEZBUSMsIEtCIywgTXlGQVEjLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiAtIEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ9Ci0LXQu9C+INC30LDRj9Cy0LrQuCDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtGM0LggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAn0KLQtdC80LAg0LfQsNGP0LLQutC4INC90LAg0L7QtNC+0LHRgNC10L3QuNC1INGB0YLQsNGC0YzQuCBGQVEuJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAn0JrQu9GO0Ycg0Y/Qt9GL0LrQsCwg0YPQutCw0LfQsNC90L3Ri9C5INCyINGP0LfRi9C60L7QstC+0Lwg0YTQsNC50LvQtSAqX0ZBUS5wbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0YwgV1lTSVdZRyDRgNC10LTQsNC60YLQvtGAINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9zdl9GQVEucG0gLSBTd2VkaXNoIHRyYW5zbGF0aW9uIGZpbGUKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KIyBDb3B5cmlnaHQgKEMpIDIwMTMgQW5kcmVhcyBCZXJnZXIgPGFuZHJlYXMuYmVyZ2VyIGF0IGhhZ2ZvcnMuc2U+CnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3ZfRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBQUFGQVEKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ29mZmVudGxpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRLW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdTZW5hc3QgdXBwZGF0ZXJhZGUgRkFRLWFydGlrbGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1NlbmFzdCBza2FwYWRlIEZBUS1hcnRpa2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wcCAxMCBGQVEtYXJ0aWtsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbmRlcmthdGVnb3JpIHRpbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdVdGZvcnNrYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ29mZmVudGxpZyAoYWxsYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybiAoa3VuZGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuIChhZ2VudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnU3RhcnQgZGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnU3RhcnQgbcOlbmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICdTdGFydCDDpXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ1NsdXQgZGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ1NsdXQgbcOlbmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnU2x1dCDDpXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVGFjayBmw7ZyIGRpbiByw7ZzdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdEdSBoYXIgcmVkYW4gcsO2c3RhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVEtYXJ0aWtlbCB1dHNrcmlmdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdGQVEtYXJ0aWtsYXIgKFRvcHAgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRLWFydGlrbGFyIChueWxpZ2VuIHNrYXBhZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0ZBUS1hcnRpa2xhciAobnlsaWdlbiDDpG5kcmFkZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnRkFRLWthdGVnb3JpIHVwcGRhdGVyYWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdGQVEta2F0ZWdvcmkgdGlsbGFnZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnRW4ga2F0ZWdvcmkgYmVow7Z2ZXIgZXR0IG5hbW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdEZW5uYSBrYXRlZ29yaSBmaW5ucyByZWRhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0ZBUS1zcHLDpWsgc2thcGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdGQVEtc3Byw6VrIHVwcGRhdGVyYXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ05hbW4ga3LDpHZzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0RldHRhIHNwcsOlayBmaW5ucyByZWRhbiEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnU2thcGEgRkFRIGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdOeWNrZWxvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdFbiBrYXRlZ29yaSBrcsOkdnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnR29ka8Okbm5hbmRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0ZBUSBrYXRlZ29yaWhhbnRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdTa2FwYSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdUYSBib3J0IGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnU2thcGEga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ1JlZGlnZXJhIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdWaXNhcyBzb20ga29tbWVudGFyIGkgVXRmb3Jza2FyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdBZ2VudC1ncnVwcGVyIG1lZCDDpXRrb21zdCB0aWxsIGFydGlrbGFybmEgaSBkZW5uYSBrYXRlZ29yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1ZpbGwgZHUgdmVya2xpZ2VuIHRhIGJvcnQgZGVubmEga2F0ZWdvcmk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdWaWxsIGR1IHZlcmtsaWdlbiB0YSBib3J0IGRlbm5hIEZBUS1hcnRpa2VsPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUS11dGZvcnNrYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1NuYWJic8O2ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnSm9rZXJ0ZWNrZW4gw6RyIHRpbGzDpXRuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnQXZhbmNlcmFkIHPDtmtuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdVbmRlcmthdGVnb3JpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnRkFRLWFydGlrbGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnSW5nYSB1bmRlcmthdGVnb3JpZXIgaGl0dGFkZXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdGQVEgc3Byw6VraGFudGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGljZSd9ID0gJ01lZGRlbGFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICdBbnbDpG5kIGRlbiBow6RyIGZ1bmt0aW9uZW4gb20gZHUgdmlsbCBhcmJldGEgbWVkIGZsZXJhIHNwcsOlay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnTMOkZ2cgdGlsbCBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnVGEgYm9ydCBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnTMOkZ2cgdGlsbCBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ1JlZGlnZXJhIHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZXR0YSBzcHLDpWs/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdGQVEtYXJ0aWtsYXIgcGVyIHNpZGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gRkFRLWluZm9ybWF0aW9uIGhpdHRhZGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0ZBUS1pbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1LDtnN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdTZW5hc3QgdXBwZGF0ZXJhZCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdOeWNrZWxvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0vDtnIgc8O2a25pbmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFRIHPDtmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1LDtnN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnSW5nYSByw7ZzdGluc3TDpGxsbmluZ2FyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnU3BlY2lmaWthIHLDtnN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnZS5nLiBMaWthIG1lZCAxMCBlbGxlciBTdMO2cnJlw4RuIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdCZXR5Z3PDpHR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdJbmdhIGJldHlnc2luc3TDpGxsbmluZ2FyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdTcGVjaWZpa3QgYmV0eWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdlLmcuIExpa2EgbWVkIDI1JSBlbGxlciBTdMO2cnJlw4RuIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyBkYXRlJ30gPSAnU3BlY2lmaWt0IGRhdHVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgcmFuZ2UnfSA9ICdEYXR1bWludGVydmFsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ0ZBUSBhcnRpa2VsIMOkbmRyaW5nc3RpZHB1bmt0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUS1JbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdCZXR5Zyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ0JldHlncyAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnYXYgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdJbmdhIHLDtnN0ZXIgZnVubmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdJbmdhIHLDtnN0ZXIgZnVubmEhIEJsaSBkZW4gZsO2cnN0YSBhdHQgYmV0eWdzw6R0dGEgZGVubmEgRkFRLWFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdMYWRkYSBuZXIgYmlsYWdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnSHVyIGhqw6RscHNhbSB2YXIgZGVuIGjDpHIgYXJ0aWtlbG4/IFbDpG5saWdlbiBnZSBvc3MgZGl0dCBiZXR5ZyBvY2ggaGrDpGxwIG9zcyBmw7ZyYsOkdHRyYSBGQVEtZGF0YWJhc2VuLiBUYWNrISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ2ludGUgaGrDpGxwc2FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3bDpGxkaWd0IGhqw6RscHNhbSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdLbGlzdHJhIGluIGZ1bGxzdMOkbmRpZyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnS2xpc3RyYSBpbiBsw6RuayB0aWxsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnS2xpc3RyYSBpbiBGQVEtdGV4dCAmIGzDpG5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdLbGlzdHJhIGluIGZ1bGxzdMOkbmRpZyBGQVEgJiBsw6Ruayc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ0luZ2EgRkFRIGFydGlrbGFyIGZ1bm5hLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0Z1bGx0ZXh0LXPDtmsgaSBGQVEtYXJ0aWtsYXIgKGUuIGcuICJKb2huKm4iIGVsbGVyICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnUsO2c3QtcmVzdHJpa3Rpb25lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnRW5kYXN0IEZBUSBhcnRpa2xhciBtZWQgcsO2c3Rlci4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ0JldHlncy1yZXN0cmlrdGlvbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0VuZGFzdCBGQVEgYXJ0aWtsYXIgbWVkIGJldHlnLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdFbmRhc3QgRkFRIGFydGlrbGFyIHNrYXBhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnRW5kYXN0IEZBUSBhcnRpa2xhciBza2FwYWRlIG1lbGxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdTw7ZrLXByb2ZpbCBzb20gbWFsbD8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ0FydGlrZWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdTw7ZrIGVmdGVyIGFydGlrbGFyIG1lZCBueWNrZWxvcmQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBSZXN1bHRzIGZvcid9ID0gJ1PDtmtyZXN1bHRhdCBmw7ZyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ0xpa2FNZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlclRoYW4nfSA9ICdTdMO2cnJlw4RuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXJUaGFuJ30gPSAnTWluZHJlw4RuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXJUaGFuRXF1YWxzJ30gPSAnU3TDtnJyZcOEbkxpa2FNZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlclRoYW5FcXVhbHMnfSA9ICdNaW5kcmXDhG5MaWthTWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RheSd9ID0gJ0RhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb250aCd9ID0gJ03DpW5hZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZWFyJ30gPSAnw4VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gZGF0ZSBzZWxlY3Rpb24nfSA9ICfDlnBwbmEgZGF0dW12w6RsamFyZSc7CiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ09mZmVudGxpZyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1N5bXB0b20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvYmxlbSd9ID0gJ1Byb2JsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdMw7ZzbmluZyc7CiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3JpaGFudGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1JhZGVyYSBkZW5uYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ1JlZGlnZXJhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnRkFRIEpvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgcGF0aCBzZXBhcmF0b3IuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnRkFRLWhpc3RvcmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnU3Byw6VraGFudGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0zDpG5rYSBldHQgYW5uYXQgb2JqZWt0IHRpbGwgZGVubmEgRkFRLWFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ055IEZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ1Nrcml2IHV0IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1PDtmsgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgRXhwbG9yZXIgcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZTogJ30gPSAnUmFkZXJhOiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS91a19GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjp1a19GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J7RgdGC0LDQvdC90Y8g0LfQvNGW0L3QtdC90LAg0YHRgtCw0YLRgtGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ9Ce0YHRgtCw0L3QvdGPINGB0YLQstC+0YDQtdC90LAg0YHRgtCw0YLRgtGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICfQotC+0L8gMTAg0YHRgtCw0YLRgtC10LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICfQn9GW0LTQutCw0YLQtdCz0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfQndC10LzQsNGUINC+0LHRgNCw0L3QvtGXINC60LDRgtC10LPQvtGA0ZbRlyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfQn9GA0L7QstGW0LTQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICfQn9C+0YfQsNGC0L7QuiDQtNC+0LHQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ9Cf0L7Rh9Cw0YLQvtC6INC80ZbRgdGP0YbRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAn0J/QvtGH0LDRgtC+0Log0YDQvtC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ9Ca0ZbQvdC10YbRjCDQtNC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAn0JrRltC90LXRhtGMINC80ZbRgdGP0YbRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgeWVhcid9ID0gJ9Ca0ZbQvdC10YbRjCDRgNC+0LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfQlNGP0LrRg9GU0LzQviwg0LfQsCDRgtC1LCDRidC+INC/0YDQvtCz0L7Qu9C+0YHRg9Cy0LDQu9C4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ9CS0Lgg0LLQttC1INCz0L7Qu9C+0YHRg9Cy0LDQu9C4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn0KPRgtC+0YfQvdC40YLRjCDRgdC80YvRgdC7INC4INC40LfQvNC10L3QuNGC0YwoQXBwcm92YWwpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfQkdGD0LTQtSDQv9C+0LrQsNC30LDQvdC+LCDRj9C6INC60L7QvNC10L3RgtCw0YAg0YMg0J/RgNC+0LLRltC00L3QuNC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAn0JHQsNC30LAg0LfQvdCw0L3RjCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgRkFRIHRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyIsIjUwJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9CT0L7Qu9C+0YHRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSByYW5nZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMTgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiMjUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAn0JHQsNC30LAg0LfQvdCw0L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ9C90L7QstCwINGB0YLQsNGC0YLRjyDQkdCXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CS0LjQtNGW0LvRltGC0Ywg0LPRgNGD0L/QuCwg0Y/QutC40ZYg0LzQvtC20YPRgtGMINC+0YLRgNC40LzQsNGC0Lgg0LTQvtGB0YLRg9C/INC00L4g0LrQsNGC0LXQs9C+0YDRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICfQmtCw0YLQtdCz0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlsU2VhcmNoJ30gPSAn0JTQtdGC0LDQu9GW0LfQvtCy0LDQvdC40Lkg0L/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICfQmtCw0YLQtdCz0L7RgNGW0Zcg0JHQlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTmV3cyAoVG9wIDEwKSd9ID0gJ9Cd0L7QstC40L3QuCDQkdCXKNCi0J7QnyAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE5ld3MgKG5ldyBjcmVhdGVkKSd9ID0gJ9Cd0L7QstC40L3QuCDQkdCXKNC90L7QstGWINGB0YLQsNGC0YLRliknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE5ld3MgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAn0J3QvtCy0LjQvdC4INCR0Jco0L3QtdC00LDQstC90L4g0LfQvNGW0L3QtdC90ZYpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3J5IGFjY2Vzc2libGUuIFRvIGNyZWF0ZSBhbiBhcnRpY2xlIHlvdSBuZWVkIGFjY2VzcyB0byBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkuIFBsZWFzZSBjaGVjayB5b3VyIGdyb3VwL2NhdGVnb3J5IHBlcm1pc3Npb24gdW5kZXIgLWNhdGVnb3J5IG1lbnUtISd9ID0KICAgICAgICAn0J3QtdC80LDRlCDQtNC+0YHRgtGD0L/QvdC40YUg0LrQsNGC0LXQs9C+0YDRltC5LiDQqdC+0LEg0YHRgtCy0L7RgNC40YLQuCDRgdGC0LDRgtGC0Y4g0LLQsNC8INC90LXQvtCx0YXRltC00L3QviDQvtC00LXRgNC20LDRgtC4INC00L7RgdGC0YPQvywg0L/RgNC40L3QsNC50LzQvdGWINC00L4g0L7QtNC90ZbQuSDQutCw0YLQtdCz0L7RgNGW0ZcuINCR0YPQtNGMINC70LDRgdC60LAsINC/0LXRgNC10LLRltGA0YLQtSDQstCw0YjRgyDQs9GA0YPQv9GDL9C60LDRgtC10LPQvtGA0ZbRjiDQtNC+0YHRgtGD0L/RgyDQtNC70Y8gLdC60LDRgtC10LPQvtGA0ZbRlyDQvNC10L3Rji0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAn0KjQstC40LTQutC40Lkg0L/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJDYXRlZ29yaWVzJ30gPSAn0J/RltC00LrQsNGC0LXQs9C+0YDRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J9CX0LTRgNCw0YHRgtGD0LnRgtC1J30gPSAn0JLRltGC0LDRlNC80L4nOwoKfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS96aF9DTl9GQVEucG0gLSB0cmFuc2xhdGlvbiBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDEzIE1pY2hhZWwgU2hpIDxtaWNzaGkgYXQgMTYzLmNvbT4KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6emhfQ05fRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBQUFGQVEKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn5YaF6YOoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ+WFrOW8gCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ+WklumDqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFR57yW5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOi/keS/ruaUueeahEZBUeaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfmnIDov5HliJvlu7rnmoRGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOW4uOeUqOeahOaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ+WtkOexu+WIq+S6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ+ayoeaciemAieaLqeaKleelqCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfmtY/op4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAn5YWs5byAKOWGheWkliknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ+WklumDqCjnlKjmiLcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICflhoXpg6go5pyN5Yqh5Lq65ZGYKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICflvIDlp4vml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgbW9udGgnfSA9ICflvIDlp4vmnIjku70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ+W8gOWni+W5tOS7vSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAn57uT5p2f5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ+W8gOWni+aciOS7vSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgeWVhcid9ID0gJ+e7k+adn+W5tOS7vSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfmhJ/osKLmgqjnmoTmipXnpaghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn5oKo5bey57uP5oqV56WoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ZBUeaWh+eroOaJk+WNsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdGQVHmlofnq6Ao5YmNMTDlkI0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFR5paH56ugKOaWsOWIm+W7uueahCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0ZBUeaWh+eroCjmnIDov5Hkv67mlLnnmoQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUeexu+WIq+W3suabtOaWsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUeexu+WIq+W3sua3u+WKoCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn5b+F6ZyA6L6T5YWl57G75Yir5ZCN56ewISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAn57G75Yir5bey5a2Y5ZyoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdGQVHor63oqIDlt7Lmt7vliqAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0ZBUeivreiogOW3suabtOaWsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAn5ZCN56ew5piv5b+F6ZyA55qEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ+ivpeivreiogOW3sue7j+WtmOWcqCEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAn5re75YqgRkFR5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAn5YWz6ZSu5a2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAn57G75Yir5piv5b+F6ZyA55qELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ+WuoeaJuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVHnsbvliKvnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAn5re75Yqg57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ+WIoOmZpOexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICfmt7vliqDnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ+e8lui+keexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn5bCG5L2c5Li65rOo6YeK5Zyo5rWP6KeI5pe25pi+56S6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ+ivt+iHs+WwkemAieaLqeS4gOS4que7hOadg+mZkC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ+iDveiuv+mXruatpOexu+WIq+aWh+eroOeahOacjeWKoeS6uuWRmOe7hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn5L2g56Gu5a6a6KaB5Yig6Zmk6L+Z5Liq57G75Yir5ZCXPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ+S9oOS4jeiDveWIoOmZpOi/meS4quexu+WIqy4g6K+l57G75Yir6Iez5bCR5YyF5ZCr5LiA56+HRkFR5paH56ug77yM5oiW6ICF6Iez5bCR5YyF5ZCr5LiA5Liq5a2Q57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn5LiL5YiXRkFR5paH56ug5L2/55So6K+l57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ+ivpeexu+WIq+aYr+S4i+WIl+WtkOexu+WIq+eahOeItuexu+WIqyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICfkvaDnoa7lrpropoHliKDpmaTor6VGQVHmlofnq6DlkJc/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRkFR5rWP6KeI5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ+W/q+mAn+aQnOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAn5YWB6K645L2/55So6YCa6YWN56ym44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ+mrmOe6p+aQnOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAn5a2Q57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUeaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ+ayoeacieaJvuWIsOWtkOexu+WIqy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn5rKh5pyJ5om+5YiwRkFR5pel5b+X5pWw5o2uLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdGQVHor63oqIDnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPQogICAgICAgICflpoLmnpzpnIDopoHmlK/mjIHlpJrnp43or63oqIDvvIzor7fkvb/nlKjmraTlip/og70uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ+a3u+WKoOivreiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICfliKDpmaTor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAn5re75Yqg6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICfnvJbovpHor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ+S9oOehruWumuimgeWIoOmZpOi/meS4quivreiogOWQlz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAn5L2g5LiN6IO95Yig6Zmk6L+Z5Liq6K+t6KiALiDoh7PlsJHmnInkuIDnr4dGQVHmlofnq6Dkvb/nlKjor6Xor63oqIAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAn5LiL5YiXRkFR5paH56ug5L2/55So6K+l6K+t6KiAJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAn5LiK5LiL5paH6K6+572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ+avj+mhteaYvuekuueahEZBUeaWh+eroOS4quaVsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICfmsqHmnInmib7liLBGQVHmlbDmja4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBGQVEgdGFibGUnfSA9ICfpgJrnlKjnmoRGQVHooagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnIiwiNTAnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnRkFR5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAn5oqV56Wo5qyh5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAn5LiK5qyh5pu05pawJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ+WFs+mUruWtlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn5oqV56Wo5qyh5pWwICjkvovlpoLvvIw9IDEwIOaIliA+PSA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAn6K+E5YiGICjkvovlpoLvvIw9IDEwJSDmiJYgPj0gNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ+mAmui/h+WuoeaJuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfkuIrmrKHkv67mlLnkuronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVHmlofnq6DliJvlu7rml7bpl7Qo55u45a+5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVHmlofnq6DliJvlu7rml7bpl7Qo57ud5a+5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUeaWh+eroOWIm+W7uuaXtumXtCjnm7jlr7kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUeaWh+eroOWIm+W7uuaXtumXtCjnu53lr7kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVHlhajmlocnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFR5pCc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICfmipXnpagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ+ivhOWIhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdGQVHmlofnq6DliJvlu7rml7bpl7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIHJhbmdlJ30gPSAn5pel5pyf6IyD5Zu0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnRkFR5paH56ug5L+u5pS55pe26Ze0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUeivpue7huS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIxOCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyciLCIyNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfmipXnpagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICfor4Tku7cgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJyg15YiG5Yi2KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfmsqHmnInmib7liLDmipXnpaghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICfmsqHmnInmib7liLDmipXnpaghIOi/meWwhuaYr+ivpSBGQVEg5paH56ug55qE56ys5LiA5Liq5oqV56WoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAn5LiL6L296ZmE5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAn5q2k5paH5qGj5a+55oKo5pyJ5biu5Yqp5ZCX77yf6K+357uZ5Ye65oKo55qE6K+E5Lu377yM6LCi6LCi77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAn5rKh5pyJ5biu5YqpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ+W+iOacieW4ruWKqSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ+aPkuWFpUZBUeaWh+acrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICfmj5LlhaVGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAn5o+S5YWlRkFR6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfmj5LlhaVGQVHmraPmloflkozpk77mjqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ+aPkuWFpUZBUeWSjOmTvuaOpSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICfmkJzntKLphY3nva7kvZzkuLrmqKHmnb/vvJ8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICfnrqHnkIbnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn5Lul5Y2B5YiG5Yi25pi+56S66K+E5YiG57uT5p6cLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAn6buY6K6k55qE55uu5b2V5ZCNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0ZBUSDmlofnq6Dmibnlh4bor7fmsYLnmoQgVGlja2V0IOeahOS8mOWFiOe6py4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ+m7mOiupOeahCBGQVEg57uf6K6h5p2h55uuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFRIOaWh+eroOaJueWHhuivt+axgueahCBUaWNrZXQg55qE6buY6K6k54q25oCBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAn5a6a5LmJIEZBUSDpobnnm67nmoTkuI3lj5fpmZDmloflrZflrZfmrrUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ+WIoOmZpEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAn57yW6L6RRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVHml6Xlv5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgcGF0aCBzZXBhcmF0b3IuJ30gPSAnRkFRIOi3r+W+hOWIhumalOespi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn5om55YeGIEZBUSDmlofnq6Dor7fmsYLnmoTnvqTnu4QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdGQVHmlofnq6Dljoblj7Lkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAn5Zyo5LuL6Z2i55qE6YKj6YeM5pi+56S65b+r6YCf5pCc57SiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn5pel5b+XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfnrqHnkIbor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAn6ZO+5o6l5a+56LGh6IezRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICfliJvlu7pGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAn5pi+56S65pyA6L+R5pu05pS56aG555uu55qE5pWw6YePLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ+aYvuekuuacgOaWsOWIm+W7uumhueebrueahOaVsOmHjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICfmmL7npLrngrnlh7vph4/liY3ljYHkvY3pobnnm67nmoTmlbDph48uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn5omT5Y2wRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+aJueWHhiBGQVEg5paH56ug6K+35rGC55qE6Zif5YiXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ+WlveivhOeOhywg6ZSu5YC85b+F6aG75Zyo55m+5YiG5q+U5Lul5YaFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAn5pCc57SiRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ+aYry/lkKbmmL7npLogRkFRIOi3r+W+hC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ+aYvuekuuWtkOebruW9leeahOaVsOmHjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn5Zyo5LuL6Z2i5LiK5pi+56S65pyA6L+R5pu05pS555qE6aG555uuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn5Zyo5LuL6Z2i5LiK5pi+56S65pyA5paw5Yib5bu655qE6aG555uuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn5Zyo5LuL6Z2i5LiK5pi+56S654K55Ye76YeP5YmN5Y2B5L2NLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn5a6a5LmJ5pi+56S66K+E5YiG55qE5LuL6Z2iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRkFRIOeahOagh+ivhuespiwg5L6L5aaCICjluLjop4Hpl67popgpRkFRIywgKOefpeivhuW6kylLQiMsIOm7mOiupOS4uiBGQVEjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0ZBUSDmlofnq6Dmibnlh4bor7fmsYLnmoQgVGlja2V0IOWGheWuuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0ZBUSDmlofnq6Dmibnlh4bor7fmsYLnmoQgVGlja2V0IOS4u+mimC4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBuZWVkcyBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cCEnfSA9ICfoh7PlsJHopoHmjIflrprkuIDkuKrnvqTnu4Tlr7nor6XnsbvliKvmi6XmnInmnYPpmZAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBjb21tZW50ISd9ID0gJ+exu+WIq+W6lOivpeimgeacieS4gOS4quazqOmHiiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBjYXRlZ29yeS4nfSA9ICflk6rkuIDkuKrnvqTnu4Tlj6/ku6Xorr/pl67mraTnsbvliKsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGVzJ30gPSAn5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyBmbGFnLid9ID0gJ+aKleelqOagh+iusOeahCBDU1Mg6aKc6ImyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yaWVzJ30gPSAn57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ+mrmOe6p+aQnOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgQ2F0ZWdvcnk/J30gPSAn55yf55qE6KaB5Yig6Zmk6K+l57G75Yir5ZCXPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgTGFuZ3VhZ2U/J30gPSAn55yf55qE6KaB5Yig6Zmk6K+l6K+t6KiA5ZCXPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcgPSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5J30gPSAnRkFR57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFR5paH56ug5Yib5bu65pe26Ze077yI55u45a+577yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUeaWh+eroOWIm+W7uuaXtumXtO+8iOe7neWvue+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUeaWh+eroOWIm+W7uuaXtumXtO+8iOebuOWvue+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVHmlofnq6DliJvlu7rml7bpl7TvvIjnu53lr7nvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlclRoYW4nfSA9ICcgPiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlclRoYW5FcXVhbHMnfSA9ICcgPj0gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ+acgOWQjuS/ruaUueS6uic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9CiAgICAgICAgJ+ayoeacieW9kuexu+WIsOexu+WIqy4g6KaB5Yib5bu65LiA56+H5paH56ug6ZyA6KaB5b2S57G75Yiw57G75Yir6YeMLCDor7flnKggLeexu+WIq+iPnOWNlS0g6YeM6YCJ5oup5oKo5pyJ5p2D6ZmQ5Yib5bu65paH56ug55qE57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ+WcqOacjeWKoeS6uuWRmOS7i+mdouaYvuekuiBXWVNJV1lHKOaJgOingeWNs+aJgOW+lynnvJbovpHlmaguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXJUaGFuJ30gPSAnPCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlclRoYW5FcXVhbHMnfSA9ICcgPD0gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICflrZDnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHRpdGxlIGlzIHJlcXVpcmVkLid9ID0gJ+agh+mimOaYr+W/hemhu+eahC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBDYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBTdWJDYXRlZ29yaWVzJ30gPSAn6K+l57G75Yir5piv5Lul5LiL5a2Q57G75Yir55qE54i257G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2UocyknfSA9ICfor6XnsbvliKvmraPooqvku6XkuIvnmoQgRkFRIOaWh+eroOaJgOS9v+eUqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIExhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ+ivpeivreiogOato+iiq+S7peS4i+eahCBGQVEg5paH56ug5omA5L2/55SoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAn6K+l57G75Yir5bey57uP5Zyo5a2Y5ZyoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGVkJ30gPSAn5pu05pawJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUFjY2Vzcyd9ID0gJ0ZBUeiuv+mXric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBDYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIEFydGljbGUhIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3QgYW5vdGhlciBDYXRlZ29yeSd9ID0KICAgICAgICAn5LiN6IO95Yig6Zmk6K+l57G75YirLiDlroPoh7PlsJHov5jooqvkuIDnr4dGQVHmlofnq6DmiYDkvb/nlKgg5bm2L+aIliDlroPmmK/lhbbkuK3nsbvliKvnmoTniLbnsbvliKshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIExhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEnfSA9CiAgICAgICAgJ+S4jeiDveWIoOmZpOivpeivreiogC4g5a6D6Iez5bCR6L+Y6KKr5LiA56+HRkFR5paH56ug5omA5L2/55SoISc7Cgp9CgoxOwo=
IyAtLQojIEFBQUZBUS5kdGwgLSAkVGV4dCB2YXJpYWJsZSBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKIyBDb21tb24KJFRleHR7ImludGVybmFsIn0KJFRleHR7InB1YmxpYyJ9CiRUZXh0eyJleHRlcm5hbCJ9CiRUZXh0eyJGQVEgTnVtYmVyIn0KJFRleHR7IkxhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyJ9CiRUZXh0eyJMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMifQokVGV4dHsiVG9wIDEwIEZBUSBhcnRpY2xlcyJ9CiRUZXh0eyJTdWJjYXRlZ29yeSBvZiJ9CiRUZXh0eyJObyByYXRlIHNlbGVjdGVkISJ9CiRUZXh0eyJFeHBsb3JlciJ9CgojIEZBUSAnc3RhdGVzJwokVGV4dHsicHVibGljIChhbGwpIn0KJFRleHR7ImV4dGVybmFsIChjdXN0b21lcikifQokVGV4dHsiaW50ZXJuYWwgKGFnZW50KSJ9CgojIFN0YXRzCiRUZXh0eyJTdGFydCBkYXkifQokVGV4dHsiU3RhcnQgbW9udGgifQokVGV4dHsiU3RhcnQgeWVhciJ9CiRUZXh0eyJFbmQgZGF5In0KJFRleHR7IkVuZCBtb250aCJ9CiRUZXh0eyJFbmQgeWVhciJ9CgojIEFnZW50RkFRWm9vbSBNZW51LU1vZHVsZXMKJFRleHR7IlRoYW5rcyBmb3IgeW91ciB2b3RlISJ9CiRUZXh0eyJObyByYXRlIHNlbGVjdGVkISJ9CiRUZXh0eyJZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISJ9CgojIEZBUSBQcmludCBzY3JlZW5zCiRUZXh0eyJGQVEgQXJ0aWNsZSBQcmludCJ9CgojIFJTUyBGZWVkcwokVGV4dHsiRkFRIEFydGljbGVzIChUb3AgMTApIn0KJFRleHR7IkZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpIn0KJFRleHR7IkZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCkifQoKIyBBZ2VudEZBUUNhdGVnb3J5LnBtCiRUZXh0eyJGQVEgY2F0ZWdvcnkgdXBkYXRlZCEifQokVGV4dHsiRkFRIGNhdGVnb3J5IGFkZGVkISJ9CiRUZXh0eyJBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEifQokVGV4dHsiVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyJ9CgojIEFnZW50RkFRTGFuZ3VhZ2UucG0KJFRleHR7IkZBUSBsYW5ndWFnZSBhZGRlZCEifQokVGV4dHsiRkFRIGxhbmd1YWdlIHVwZGF0ZWQhIn0KJFRleHR7IlRoZSBuYW1lIGlzIHJlcXVpcmVkISJ9CiRUZXh0eyJUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISJ9CiRUZXh0eyJUaGUgbmFtZSBpcyByZXF1aXJlZCEifQo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtIC0gYWdlbnQgZnJvbnRlbmQgdG8gYWRkIGZhcSBhcnRpY2xlcwojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudEZBUUFkZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlF1ZXVlOwp1c2UgS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQ7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgYWxsIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IENvbmZpZ09iamVjdCBMb2dPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpWYWxpZC0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1F1ZXVlT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpRdWV1ZS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpIHx8ICcnOwoKICAgICMgZ2V0IGZvcm0gaWQKICAgICRTZWxmLT57Rm9ybUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKCiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoICEkU2VsZi0+e0Zvcm1JRH0gKSB7CiAgICAgICAgJFNlbGYtPntGb3JtSUR9ID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSd30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgbmVlZCBydyBwZXJtaXNzaW9uIScsCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbWV0ZXJzCiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiAgICAgICAgcXcoVGl0bGUgQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVmFsaWRJRCBLZXl3b3JkcyBBcHByb3ZlZCBGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNiApCiAgICAgICAgKQogICAgewogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgfQoKICAgICMgZ2V0IGNhdGVnb3JpZXMgKHdpdGggY2F0ZWdvcnkgbG9uZyBuYW1lcykgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBteSAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgdGhhdCB0aGVyZSBhcmUgY2F0ZWdvcmllcyBhdmFpbGFibGUgZm9yIHRoaXMgdXNlcgogICAgaWYgKAogICAgICAgICEkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMKICAgICAgICB8fCByZWYgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzIG5lICdIQVNIJwogICAgICAgIHx8ICEleyRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lc30KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnLAogICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW4uJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2hvdyB0aGUgZmFxIGFkZCBzY3JlZW4KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKCiAgICAgICAgICAgICMgZ2V0IEFwcHJvdmFsIHF1ZXVlIG5hbWUKICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFF1ZXVlJykgfHwgJyc7CgogICAgICAgICAgICAjIGNoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cwogICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZUlEID0gJFNlbGYtPntRdWV1ZU9iamVjdH0tPlF1ZXVlTG9va3VwKCBRdWV1ZSA9PiAkQXBwcm92YWxRdWV1ZSApOwoKICAgICAgICAgICAgIyBzaG93IG5vdGlmaWNhdGlvbiBpZiBBcHByb3ZhbCBxdWV1ZSBkb2VzIG5vdCBleGlzdHMKICAgICAgICAgICAgaWYgKCAhJEFwcHJvdmFsUXVldWVJRCApIHsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgICAgICBJbmZvICAgICA9PiAiRkFRIEFwcHJvdmFsIGlzIGVuYWJsZWQgYnV0IHF1ZXVlICckQXBwcm92YWxRdWV1ZScgZG9lcyBub3QgZXhpc3RzIiwKICAgICAgICAgICAgICAgICAgICBMaW5rICAgICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZG1pblN5c0NvbmZpZztTdWJhY3Rpb249RWRpdDsnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ1N5c0NvbmZpZ1N1Ykdyb3VwPUNvcmUlM0ElM0FBcHByb3ZhbDtTeXNDb25maWdHcm91cD1GQVEnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0+ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcywKCiAgICAgICAgICAgICMgbGFzdCB2aWV3ZWQgY2F0ZWdvcnkgZnJvbSBzZXNzaW9uICh3cml0dGVuIGJ5IGZhcSBleHBsb3JlcikKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU2VsZi0+e0xhc3RWaWV3ZWRDYXRlZ29yeX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2F2ZSB0aGUgZmFxCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFRpdGxlIENhdGVnb3J5SUQpKSB7CgogICAgICAgICAgICAjIGlmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbiwgYWRkIHNlcnZlciBlcnJvciBjbGFzcwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIGFuIGF0dGFjaG1lbnQgbXVzdCBiZSBkZWxldGVkCiAgICAgICAgbXkgQEF0dGFjaG1lbnRJRHMgPSBtYXAgewogICAgICAgICAgICBteSAoJElEKSA9ICRfID1+IG17IFxBIEF0dGFjaG1lbnREZWxldGUgKFxkKykgXHogfXhtczsKICAgICAgICAgICAgJElEID8gJElEIDogKCk7CiAgICAgICAgfSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW1OYW1lcygpOwoKICAgICAgICBDT1VOVDoKICAgICAgICBmb3IgbXkgJENvdW50ICggcmV2ZXJzZSBzb3J0IEBBdHRhY2htZW50SURzICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgZGVsZXRlIGJ1dHRvbiB3YXMgcHJlc3NlZCBmb3IgdGhpcyBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICREZWxldGUgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICJBdHRhY2htZW50RGVsZXRlJENvdW50IiApOwoKICAgICAgICAgICAgIyBjaGVjayBuZXh0IGF0dGFjaG1lbnQgaWYgaXQgd2FzIG5vdCBwcmVzc2VkCiAgICAgICAgICAgIG5leHQgQ09VTlQgaWYgISREZWxldGU7CgogICAgICAgICAgICAjIHJlbWVtYmVyIHRoYXQgd2UgbmVlZCB0byBzaG93IHRoZSBwYWdlIGFnYWluCiAgICAgICAgICAgICRFcnJvcntBdHRhY2htZW50fSA9IDE7CgogICAgICAgICAgICAjIHJlbW92ZSB0aGUgYXR0YWNobWVudCBmcm9tIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRFJlbW92ZUZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgRmlsZUlEID0+ICRDb3VudCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgdGhlcmUgd2FzIGFuIGF0dGFjaG1lbnQgdXBsb2FkCiAgICAgICAgaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdBdHRhY2htZW50VXBsb2FkJyApICkgewoKICAgICAgICAgICAgIyByZW1lbWJlciB0aGF0IHdlIG5lZWQgdG8gc2hvdyB0aGUgcGFnZSBhZ2FpbgogICAgICAgICAgICAkRXJyb3J7QXR0YWNobWVudH0gPSAxOwoKICAgICAgICAgICAgIyBnZXQgdGhlIHVwbG9hZGVkIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJVVwbG9hZFN0dWZmID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgICAgIFBhcmFtICA9PiAnRmlsZVVwbG9hZCcsCiAgICAgICAgICAgICAgICBTb3VyY2UgPT4gJ3N0cmluZycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgJVVwbG9hZFN0dWZmLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHNlcnZlciBlcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmcKICAgICAgICAjIG9yIGFuIGF0dGFjaG1lbnQgd2FzIGRlbGV0ZWQgb3IgdXBsb2FkZWQKICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIGlmIHRoZXJlIHdhcyBhbiBhdHRhY2htZW50IGRlbGV0ZSBvciB1cGxvYWQKICAgICAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCB0byBzaG93IHZhbGlkYXRpb24gZXJyb3JzIGZvciBvdGhlciBmaWVsZHMKICAgICAgICAgICAgaWYgKCAkRXJyb3J7QXR0YWNobWVudH0gKSB7CiAgICAgICAgICAgICAgICAlRXJyb3IgPSAoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IEFwcHJvdmFsIHF1ZXVlIG5hbWUKICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxRdWV1ZScpIHx8ICcnOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgQXBwcm92YWwgcXVldWUgZXhpc3RzCiAgICAgICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZUlEID0gJFNlbGYtPntRdWV1ZU9iamVjdH0tPlF1ZXVlTG9va3VwKCBRdWV1ZSA9PiAkQXBwcm92YWxRdWV1ZSApOwoKICAgICAgICAgICAgICAgICMgc2hvdyBub3RpZmljYXRpb24gaWYgQXBwcm92YWwgcXVldWUgZG9lcyBub3QgZXhpc3RzCiAgICAgICAgICAgICAgICBpZiAoICEkQXBwcm92YWxRdWV1ZUlEICkgewogICAgICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIEluZm8gPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQVEgQXBwcm92YWwgaXMgZW5hYmxlZCBidXQgcXVldWUgJyRBcHByb3ZhbFF1ZXVlJyBkb2VzIG5vdCBleGlzdHMiLAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPUFkbWluU3lzQ29uZmlnO1N1YmFjdGlvbj1FZGl0OycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ1N5c0NvbmZpZ1N1Ykdyb3VwPUNvcmUlM0ElM0FBcHByb3ZhbDtTeXNDb25maWdHcm91cD1GQVEnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tOZXcoCiAgICAgICAgICAgICAgICBVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyA9PiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMsCiAgICAgICAgICAgICAgICBBdHRhY2htZW50cyAgICAgICAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgdGhlIG5ldyBmYXEgYXJ0aWNsZQogICAgICAgIG15ICRGQVFJRCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRQWRkKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGVycm9yIGlmIGZhcSBjb3VsZCBub3QgYmUgYWRkZWQKICAgICAgICBpZiAoICEkRkFRSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgZnJvbSB1cGxvYWQgY2FjaGUKICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlER2V0QWxsRmlsZXNEYXRhKAogICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICk7CgogICAgICAgICMgd3JpdGUgYXR0YWNobWVudHMKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIGF0dGFjaG1lbnQgaXMgYW4gaW5saW5lIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJElubGluZSA9IDA7CiAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICkgewoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgdGhhdCBpdCBpcyBpbmxpbmUKICAgICAgICAgICAgICAgICRJbmxpbmUgPSAxOwoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgaWYgdGhpcyBpbmxpbmUgYXR0YWNobWVudCBpcyB1c2VkIGluIGFueSBmYXEgYXJ0aWNsZQogICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJREZvdW5kOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgYWxsIGZpZWxkcyBmb3IgY29udGVudCBpZAogICAgICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgZmFxIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgbXkgJEZpZWxkID0gJEdldFBhcmFteyAnRmllbGQnIC4gJE51bWJlciB9OwoKICAgICAgICAgICAgICAgICAgICAjIHNraXAgZW1wdHkgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZpZWxkOwoKICAgICAgICAgICAgICAgICAgICAjIHNraXAgZmllbGRzIHRoYXQgZG8gbm90IGNvbnRhaW4gdGhlIGNvbnRlbnQgaWQKICAgICAgICAgICAgICAgICAgICBuZXh0IEZJRUxEIGlmICRGaWVsZCAhfiBteyAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gfXhtczsKCiAgICAgICAgICAgICAgICAgICAgIyBmb3VuZCB0aGUgY29udGVudCBpZAogICAgICAgICAgICAgICAgICAgICRDb250ZW50SURGb3VuZCA9IDE7CgogICAgICAgICAgICAgICAgICAgICMgd2UgZG8gbm90IG5lZWQgdG8gc2VhcmNoIGZ1cnRoZXIKICAgICAgICAgICAgICAgICAgICBsYXN0IEZJRUxEOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgd2UgZG8gbm90IHdhbnQgdG8ga2VlcCB0aGlzIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaXQgd2FzIGRlbGV0ZWQgaW4gdGhlIHJpY2h0IHRleHQgZWRpdG9yCiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRDb250ZW50SURGb3VuZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudAogICAgICAgICAgICBteSAkRmlsZUlEID0gJFNlbGYtPntGQVFPYmplY3R9LT5BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgSW5saW5lID0+ICRJbmxpbmUsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgICAgICBpZiAoICEkRmlsZUlEICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRJbmxpbmU7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QnJvd3NlclJpY2hUZXh0fTsKCiAgICAgICAgICAgICMgcmV3cml0ZSB0aGUgVVJMcyBvZiB0aGUgaW5saW5lIGltYWdlcyBmb3IgdGhlIHVwbG9hZGVkIHBpY3R1cmVzCiAgICAgICAgICAgIG15ICRPayA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSgKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgRmlsZUlEICAgICA9PiAkRmlsZUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgIGlmICggISRPayApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgdGhlIGlubGluZSBpbWFnZSBVUkxzICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiZm9yIEZBUSBJdGVtIyAnJEZBUUlEJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURSZW1vdmUoIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0gKTsKCiAgICAgICAgIyByZWRpcmVjdCB0byBGQVEgem9vbQogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPlJlZGlyZWN0KCBPUCA9PiAnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JyAuICRGQVFJRCApOwogICAgfQp9CgpzdWIgX01hc2tOZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpMaXN0VHlwZScpIGVxICd0cmVlJyApIHsKICAgICAgICAkVHJlZVZpZXcgPSAxOwogICAgfQoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgICAgICAgID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkTGlzdCgpOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgbXkgJURhdGE7CgogICAgIyBidWlsZCB2YWxpZCBzZWxlY3Rpb24KICAgICREYXRhe1ZhbGlkT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgID0+ICdWYWxpZElEJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtWYWxpZElEfSB8fCAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICApOwoKICAgICMgc2V0IG5vIHNlcnZlciBlcnJvciBjbGFzcyBhcyBkZWZhdWx0CiAgICAkUGFyYW17Q2F0ZWdvcnlJRFNlcnZlckVycm9yfSB8fD0gJyc7CgogICAgIyBidWlsZCBjYXRlZ29yeSBzZWxlY3Rpb24KICAgICREYXRhe0NhdGVnb3J5T3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRQYXJhbXtVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lc30sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeUlEJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgJyAuICRQYXJhbXtDYXRlZ29yeUlEU2VydmVyRXJyb3J9LAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIFRyZWVWaWV3ICAgICA9PiAxLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGFuZ3VhZ2UgbGlzdAogICAgbXkgJUxhbmd1YWdlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBzZWxlY3RlZCBsYW5ndWFnZQogICAgbXkgJFNlbGVjdGVkTGFuZ3VhZ2U7CiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEfSAmJiAkTGFuZ3VhZ2VzeyAkUGFyYW17TGFuZ3VhZ2VJRH0gfSApIHsKCiAgICAgICAgIyBnZXQgbGFuZ3VhZ2UgZnJvbSBnaXZlbiBsYW5ndWFnZSBpZAogICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExhbmd1YWdlc3sgJFBhcmFte0xhbmd1YWdlSUR9IH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyB1c2UgdGhlIHVzZXIgbGFuZ3VhZ2UsIG9yIGlmIG5vdCBmb3VuZCAnZW4nCiAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2UgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyTGFuZ3VhZ2V9IHx8ICdlbic7CgogICAgICAgICMgZ2V0IHVzZXIgbGFuZ3VhZ2UgSUQKICAgICAgICBteSAkU2VsZWN0ZWRMYW5ndWFnZUlEID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxvb2t1cCggTmFtZSA9PiAkU2VsZWN0ZWRMYW5ndWFnZSApOwoKICAgICAgICAjIGNoZWNrIGlmIExhbmR1YWdlSUQgZG9lcyBub3QgZXhzaXRzCiAgICAgICAgaWYgKCAhJFNlbGVjdGVkTGFuZ3VhZ2VJRCApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBsb3dlc3QgbGFuZ3VhZ2UgSUQKICAgICAgICAgICAgbXkgQExhbmd1YWdlSURzID0gc29ydCBrZXlzICVMYW5ndWFnZXM7CiAgICAgICAgICAgICRTZWxlY3RlZExhbmd1YWdlSUQgPSAkTGFuZ3VhZ2VJRHNbMF07CgogICAgICAgICAgICAjIHNldCB0aGUgbGFuZ3VhZ2Ugd2l0aCBsb3dlc3QgbGFuZ3VhZ2UgSUQgYXMgc2VsZWN0ZWQgbGFuZ3VhZ2UKICAgICAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2UgPSAkTGFuZ3VhZ2VzeyRTZWxlY3RlZExhbmd1YWdlSUR9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIHRoZSBsYW5ndWFnZSBzZWxlY3Rpb24KICAgICREYXRhe0xhbmd1YWdlT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdMYW5ndWFnZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZExhbmd1YWdlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMCwKICAgICk7CgogICAgIyBnZXQgdGhlIHN0YXRlcyBsaXN0CiAgICBteSAlU3RhdGVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIHNlbGVjdGVkIHN0YXRlCiAgICBteSAkU2VsZWN0ZWRTdGF0ZTsKICAgIGlmICggJFBhcmFte1N0YXRlSUR9ICYmICRTdGF0ZXN7ICRQYXJhbXtTdGF0ZUlEfSB9ICkgewoKICAgICAgICAjIGdldCBzdGF0ZSBmcm9tIGdpdmVuIHN0YXRlIGlkCiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkU3RhdGVzeyAkUGFyYW17U3RhdGVJRH0gfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGdldCBkZWZhdWx0IHN0YXRlCiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpEZWZhdWx0OjpTdGF0ZScpIHx8ICdpbnRlcm5hbCAoYWdlbnQpJzsKICAgIH0KCiAgICAjIGJ1aWxkIHRoZSBzdGF0ZSBzZWxlY3Rpb24KICAgICREYXRhe1N0YXRlT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVN0YXRlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdTdGF0ZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZFN0YXRlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMSwKICAgICk7CgogICAgIyBzaG93IGZhcSBhZGQgc2NyZWVuCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUUFkZCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IGxhbmd1YWdlcyBmaWVsZAogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IGRlZmF1bHQgbGFuZ3VhZ2UKICAgICAgICBteSAkRGVmYXVsdExhbmd1YWdlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6TGFuZ3VhZ2UnKSB8fCAnZW4nOwoKICAgICAgICAjIGdldCBkZWZhdWx0IGxhbmd1YWdlIElECiAgICAgICAgbXkgJExhbmd1YWdlSUQgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICREZWZhdWx0TGFuZ3VhZ2UsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgZGVmYXVsdCBsYW5ndWFnZSBpZiBpdCB3YXMgZGVsZXRlZCBvciBkb2VzIG5vdCBleGlzdHMKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VJRCApIHsKICAgICAgICAgICAgbXkgJEluc2VydExhbmd1YWdlID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkRGVmYXVsdExhbmd1YWdlLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkSW5zZXJ0TGFuZ3VhZ2UgKSB7CgogICAgICAgICAgICAgICAgIyByZXR1cm4gd2l0aCBlcnJvciBzY3JlZW4KICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIk5vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhbid0IGNyZWF0ZSBhIG5ldyBvbmUuIiwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW4uJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IGRlZmF1bHQgbGFuZ3VhZ2UgSUQKICAgICAgICAgICAgJExhbmd1YWdlSUQgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRGVmYXVsdExhbmd1YWdlLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJFBhcmFte0xhbmd1YWdlSUR9ID0gJExhbmd1YWdlSUQ7CgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGFwcHJvdmFsIGZpZWxkCiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9uCiAgICAgICAgbXkgJUdyb3VwcyA9IHJldmVyc2UgJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIGZhcSBhcHByb3ZhbCBncm91cCBmcm9tIGNvbmZpZwogICAgICAgIG15ICRBcHByb3ZhbEdyb3VwID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxHcm91cCcpIHx8ICcnOwoKICAgICAgICAjIGJ1aWxkIHRoZSBhcHByb3ZhbCBzZWxlY3Rpb24gaWYgdXNlciBpcyBpbiB0aGUgYXBwcm92YWwgZ3JvdXAKICAgICAgICBpZiAoICRHcm91cHN7JEFwcHJvdmFsR3JvdXB9ICkgewoKICAgICAgICAgICAgJERhdGF7QXBwcm92YWxPcHRpb259ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FwcHJvdmVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIDAgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAxID0+ICdZZXMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0FwcHJvdmVkfSB8fCAwLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXBwcm92YWwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdGhlIGF0dGFjaG1lbnQgdXBsb2FkIGJ1dHRvbgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50VXBsb2FkJywKICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgKTsKCiAgICAjIHNob3cgYXR0YWNobWVudHMKICAgIEFUVEFDSE1FTlQ6CiAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCBAeyAkUGFyYW17QXR0YWNobWVudHN9IH0gKSB7CgogICAgICAgICMgZG8gbm90IHNob3cgaW5saW5lIGltYWdlcyBhcyBhdHRhY2htZW50cwogICAgICAgICMgKHRoZXkgaGF2ZSBhIGNvbnRlbnQgaWQpCiAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gJiYgJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudCcsCiAgICAgICAgICAgIERhdGEgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCByaWNoIHRleHQgZWRpdG9yIGphdmFzY3JpcHQKICAgICMgb25seSBpZiBhY3RpdmF0ZWQgYW5kIHRoZSBicm93c2VyIGNhbiBoYW5kbGUgaXQKICAgICMgb3RoZXJ3aXNlIGp1c3QgYSB0ZXh0YXJlYSBpcyBzaG93bgogICAgaWYgKCAkU2VsZi0+e0xheW91dE9iamVjdH0tPntCcm93c2VyUmljaFRleHR9ICkgewoKICAgICAgICAjIHVzZSBoZWlnaHQvd2lkdGggZGVmaW5lZCBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAkUGFyYW17UmljaFRleHRIZWlnaHR9ID0gJFNlbGYtPntDb25maWd9LT57UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRTZWxmLT57Q29uZmlnfS0+e1JpY2hUZXh0V2lkdGh9ICB8fCAwOwoKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dCcsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFBZGQnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0gLSB0aGUgZmFxIGxhbmd1YWdlIG1hbmFnZW1lbnQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRQ2F0ZWdvcnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYWxpZDsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0KSkgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpWYWxpZC0+bmV3KCVQYXJhbSk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1J3fSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtZXRlcnMKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhDYXRlZ29yeUlEIE5hbWUgUGFyZW50SUQgQ29tbWVudCBWYWxpZElEKSkgewogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgY2F0ZWdvcnkgaWQKICAgICRHZXRQYXJhbXtDYXRlZ29yeUlEfSB8fD0gMDsKCiAgICAjIHNldCBkZWZhdWx0IHBhcmVudCBpZAogICAgJEdldFBhcmFte1BhcmVudElEfSB8fD0gMDsKCiAgICAjIGdldCBhcnJheSBwYXJhbWV0ZXJzCiAgICBAeyAkR2V0UGFyYW17UGVybWlzc2lvbkdyb3Vwc30gfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRBcnJheSggUGFyYW0gPT4gJ1Blcm1pc3Npb25Hcm91cHMnICk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICkgewoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBpZiAoICEkR2V0UGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAnTmVlZCBDYXRlZ29yeUlEIScgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICBteSAlQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkR2V0UGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHBlcm1pc3Npb24gZ3JvdXBzCiAgICAgICAgJENhdGVnb3J5RGF0YXtQZXJtaXNzaW9uR3JvdXBzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHcm91cEdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkR2V0UGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgQWN0aW9uID0+ICdDaGFuZ2UnLAogICAgICAgICAgICAlQ2F0ZWdvcnlEYXRhLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2hhbmdlIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZUFjdGlvbicgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoUGFyZW50SUQgVmFsaWRJRCkpIHsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJOZWVkICRQYXJhbU5hbWUhIiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE5hbWUgQ29tbWVudCBQZXJtaXNzaW9uR3JvdXBzKSkgewoKICAgICAgICAgICAgIyBpZiByZXF1aXJlZCBmaWVsZCBpcyBub3QgZ2l2ZW4KICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAgICAgJEVycm9yeyAkUGFyYW1OYW1lIC4gJ1NlcnZlckVycm9yJyB9ID0gJ1NlcnZlckVycm9yJzsKCiAgICAgICAgICAgICAgICAjIGFkZCBzZXJ2ZXIgZXJyb3Igc3RyaW5nIGZvciBjYXRlZ29yeSBuYW1lIGZpZWxkCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbU5hbWUgZXEgJ05hbWUnICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9ICdBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNlbmQgc2VydmVyIGVycm9yIGlmIGFueSByZXF1aXJlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZwogICAgICAgIGlmICglRXJyb3IpIHsKCiAgICAgICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICdDaGFuZ2UnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBkdXBsaWNhdGUgY2F0ZWdvcnkgbmFtZSB3aXRoIHRoZSBzYW1lIHBhcmVudCBjYXRlZ29yeQogICAgICAgIG15ICRDYXRlZ29yeUV4aXN0c0FscmVhZHkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5RHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgUGFyZW50SUQgICA9PiAkR2V0UGFyYW17UGFyZW50SUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgdGhlIGVkaXQgc2NyZWVuIGFnYWluCiAgICAgICAgaWYgKCRDYXRlZ29yeUV4aXN0c0FscmVhZHkpIHsKCiAgICAgICAgICAgICMgc2V0IHNlcnZlciBlcnJvcnMKICAgICAgICAgICAgJEdldFBhcmFte05hbWVTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEdldFBhcmFte05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gJ1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnOwoKICAgICAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIGNhdGVnb3J5CiAgICAgICAgbXkgJENhdGVnb3J5VXBkYXRlU3VjY2Vzc2Z1bCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlVcGRhdGUoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJENhdGVnb3J5VXBkYXRlU3VjY2Vzc2Z1bCApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGNhdGVnb3J5IGdyb3VwCiAgICAgICAgJFNlbGYtPntGQVFPYmplY3R9LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiAkR2V0UGFyYW17UGVybWlzc2lvbkdyb3Vwc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBub3RpZmljYXRpb24KICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm90aWZ5KCBJbmZvID0+ICdGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnICk7CgogICAgICAgICMgc2hvdyBvdmVydmlldwogICAgICAgICRTZWxmLT5fT3ZlcnZpZXcoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhZGQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGQnICkgewoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgIEFjdGlvbiA9PiAnQWRkJywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgYWRkIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZEFjdGlvbicgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoUGFyZW50SUQgVmFsaWRJRCkpIHsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJOZWVkICRQYXJhbU5hbWUhIiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE5hbWUgQ29tbWVudCBQZXJtaXNzaW9uR3JvdXBzKSkgewoKICAgICAgICAgICAgIyBpZiByZXF1aXJlZCBmaWVsZCBpcyBub3QgZ2l2ZW4KICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIHZhbGlkYXRpb24gY2xhc3MgYW5kIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW1OYW1lIGVxICdQZXJtaXNzaW9uR3JvdXBzJyApIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBzdHJpbmcgZm9yIGNhdGVnb3J5IG5hbWUgZmllbGQKICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gJ0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2VuZCBzZXJ2ZXIgZXJyb3IgaWYgYW55IHJlcXVpcmVkIHBhcmFtZXRlcnMgYXJlIG1pc3NpbmcKICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQWRkJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBmb3IgZHVwbGljYXRlIGNhdGVnb3J5IG5hbWUgd2l0aCB0aGUgc2FtZSBwYXJlbnQgY2F0ZWdvcnkKICAgICAgICBteSAkQ2F0ZWdvcnlFeGlzdHNBbHJlYWR5ID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUR1cGxpY2F0ZUNoZWNrKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgICAgIFBhcmVudElEICAgPT4gJEdldFBhcmFte1BhcmVudElEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHRoZSBlZGl0IHNjcmVlbiBhZ2FpbgogICAgICAgIGlmICgkQ2F0ZWdvcnlFeGlzdHNBbHJlYWR5KSB7CgogICAgICAgICAgICAjIHNldCBzZXJ2ZXIgZXJyb3JzCiAgICAgICAgICAgICRHZXRQYXJhbXtOYW1lU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRHZXRQYXJhbXtOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9ICdUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISc7CgogICAgICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQWRkJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgbmV3IGNhdGVnb3J5CiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5QWRkKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRDYXRlZ29yeUlEICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgY2F0ZWdvcnkgZ3JvdXAKICAgICAgICAkU2VsZi0+e0ZBUU9iamVjdH0tPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEdyb3VwSURzICAgPT4gJEdldFBhcmFte1Blcm1pc3Npb25Hcm91cHN9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgbm90aWZpY2F0aW9uCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vdGlmeSggSW5mbyA9PiAnRkFRIGNhdGVnb3J5IGFkZGVkIScgKTsKCiAgICAgICAgIyBzaG93IG92ZXJ2aWV3CiAgICAgICAgJFNlbGYtPl9PdmVydmlldygpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGRlbGV0ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZScgKSB7CgogICAgICAgICMgZ2V0IHRoZSBDYXRlZ29yeUlECiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeUlEJyApIHx8ICcnOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICdObyBDYXRlZ29yeUlEIGlzIGdpdmVuIScsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY2F0ZWdvcnkgZGF0YQogICAgICAgIG15ICVDYXRlZ29yeURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGFmZmVjdGVkIEZBUSBhcnRpY2xlcwogICAgICAgIG15IEBBZmZlY3RlZEl0ZW1zID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgICAgIENhdGVnb3J5SURzID0+IFskQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgYWxsIGFmZmVjdGVkIFN1YkNjYXRlZ29yaWVzCiAgICAgICAgbXkgJEFmZmVjdGVkU3ViQ2F0ZWdvcmllcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjYWxsIERlbGV0ZSBibG9jawogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4geyVDYXRlZ29yeURhdGF9LAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vCiAgICAgICAgbXkgJERpYWxvZ1R5cGUgPSAnQ29uZmlybWF0aW9uJzsKCiAgICAgICAgIyBkaXNwbGF5IGxpc3Qgb2YgYWZmZWN0ZWQgRkFRIGFydGljbGVzIG9yIFN1YkNhdGVnb3JpZXMKICAgICAgICBpZiAoIEBBZmZlY3RlZEl0ZW1zIHx8IEB7JEFmZmVjdGVkU3ViQ2F0ZWdvcmllc30gKSB7CgogICAgICAgICAgICAjIHNldCB0aGUgZGlhbG9nIHR5cGUgdG8gaGF2ZSBvbmx5IDEgYnV0dG9uOiBPawogICAgICAgICAgICAkRGlhbG9nVHlwZSA9ICdNZXNzYWdlJzsKCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBZmZlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBkaXNwbGF5IEFmZmVjdGVkIEZBUSBhcnRpY2xlcwogICAgICAgICAgICBpZiAoQEFmZmVjdGVkSXRlbXMpIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkSXRlbXMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIElURU1JRDoKICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbUlEIChAQWZmZWN0ZWRJdGVtcykgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBmYXEgYXJ0aWNsZQogICAgICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGZhcSBhcnRpY2xlCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJVEVNSUQgaWYgISVGQVFEYXRhOwoKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBZmZlY3RlZEl0ZW1zUm93JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGRpc3BsYXkgQWZmZWN0ZWQgU3ViY2F0ZWdvcmllcwogICAgICAgICAgICBpZiAoIEB7JEFmZmVjdGVkU3ViQ2F0ZWdvcmllc30gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgY2F0ZWdvaWVzIGxvbmcgbmFtZXMKICAgICAgICAgICAgICAgIG15ICRDYXRlZ29yeUxvbmdOYW1lcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBZmZlY3RlZFN1YkNhdGVnb3JpZXMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgQ0FURUdPUllJRDoKICAgICAgICAgICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIEB7JEFmZmVjdGVkU3ViQ2F0ZWdvcmllc30gKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGNhdGVnb3J5CiAgICAgICAgICAgICAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IGNhdGVnb3J5IGxvbmcgbmFtZQogICAgICAgICAgICAgICAgICAgICRDYXRlZ29yeURhdGF7TG9uZ05hbWV9ID0gJENhdGVnb3J5TG9uZ05hbWVzLT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDQVRFR09SWUlEIGlmICElQ2F0ZWdvcnlEYXRhOwoKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBZmZlY3RlZFN1YkNhdGVnb3JpZXNSb3cnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0FmZmVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVDYXRlZ29yeURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBvdXRwdXQgY29udGVudAogICAgICAgIG15ICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7fSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIHRoZSByZXR1cm5lZCBkYXRhIHN0cnVjdHVyZQogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIERpYWxvZ1R5cGUgPT4gJERpYWxvZ1R5cGUsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUKICAgICAgICBteSAkT3V0cHV0SlNPTiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SlNPTkVuY29kZSggRGF0YSA9PiBcJURhdGEgKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0NoYXJzZXR9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0SlNPTiwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGRlbGV0ZSBhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEZWxldGVBY3Rpb24nICkgewoKICAgICAgICAjIGdldCB0aGUgQ2F0ZWdvcnlJRAogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAnJzsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICBteSAlQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJUNhdGVnb3J5RGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRoZSBjYXRlZ29yeQogICAgICAgIG15ICRDb3VsZERlbGV0ZUNhdGVnb3J5ID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeURlbGV0ZSgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRDb3VsZERlbGV0ZUNhdGVnb3J5KSB7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIGV4cGxvcmVyLCB3aGVuIHRoZSBkZWxldGlvbiB3YXMgc3VjY2Vzc2Z1bAogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRGQVFDYXRlZ29yeSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzaG93IGVycm9yIG1lc3NhZ2UsIHdoZW4gZGVsZXRlIGZhaWxlZAogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIldhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICRDYXRlZ29yeUlEISIsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBvdmVydmlldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2UgewoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBfRWRpdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2hvdyBvdmVydmlldwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKCiAgICAjIG91dHB1dCBvdmVydmlldyBibG9ja3MKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkxpc3QnICk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdBY3Rpb25PdmVydmlldycgKTsKCiAgICAjIGdldCB0aGUgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCAgICAgICAgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRMaXN0KCk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICBteSAlRGF0YTsKCiAgICAjIGJ1aWxkIHRoZSB2YWxpZCBzZWxlY3Rpb24KICAgICREYXRhe1ZhbGlkT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgID0+ICdWYWxpZElEJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtWYWxpZElEfSB8fCAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICApOwoKICAgICMgZ2V0IGFsbCB2YWxpZCBncm91cHMKICAgIG15ICVHcm91cHMgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBMaXN0KCBWYWxpZCA9PiAxICk7CgogICAgIyBzZXQgbm8gc2VydmVyIGVycm9yIGNsYXNzIGFzIGRlZmF1bHQKICAgICRQYXJhbXtQZXJtaXNzaW9uR3JvdXBzU2VydmVyRXJyb3J9IHx8PSAnJzsKCiAgICAjIGJ1aWxkIHRoZSBncm91cCBzZWxlY3Rpb24KICAgICREYXRhe0dyb3VwT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJUdyb3VwcywKICAgICAgICBOYW1lICAgICAgID0+ICdQZXJtaXNzaW9uR3JvdXBzJywKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgJyAuICRQYXJhbXtQZXJtaXNzaW9uR3JvdXBzU2VydmVyRXJyb3J9LAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1Blcm1pc3Npb25Hcm91cHN9LAogICAgKTsKCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCB0aGUgY2F0b2dvcnkgc2VsZWN0aW9uCiAgICAkRGF0YXtDYXRlZ29yeU9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgID0+ICRDYXRlZ29yeVRyZWUsCiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1BhcmVudElEJywKICAgICAgICBTZWxlY3RlZElEICAgICA9PiAkUGFyYW17UGFyZW50SUR9LAogICAgICAgIFBvc3NpYmxlTm9uZSAgID0+IDEsCiAgICAgICAgRGlzYWJsZWRCcmFuY2ggPT4gJENhdGVnb3J5VHJlZS0+eyAkUGFyYW17Q2F0ZWdvcnlJRH0gfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiAgICA9PiAwLAogICAgKTsKCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VXBkYXRlJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlRGF0YSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgaGVhZGVyCiAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICdDaGFuZ2UnICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0hlYWRlckVkaXQnICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdIZWFkZXJBZGQnICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfT3ZlcnZpZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0ID0gJyc7CgogICAgIyBvdXRwdXQgb3ZlcnZpZXcgYmxvY2tzCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdPdmVydmlldycgKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkxpc3QnICk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdBY3Rpb25BZGQnICk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdPdmVydmlld1Jlc3VsdCcgKTsKCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBpZiB0aGVyZSBhcmUgYW55IGNhdGVnb3JpZXMsIHRoZXkgYXJlIHNob3duCiAgICBpZiAoICRDYXRlZ29yeVRyZWUgJiYgcmVmICRDYXRlZ29yeVRyZWUgZXEgJ0hBU0gnICYmICV7JENhdGVnb3J5VHJlZX0gKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCBsaXN0CiAgICAgICAgbXkgJVZhbGlkTGlzdCA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZExpc3QoKTsKCiAgICAgICAgIyBzb3J0IHRoZSBjYXRlZ29yeSBpZHMgYnkgdGhlIGxvbmcgY2F0ZWdvcnkgbmFtZQogICAgICAgIG15IEBDYXRlZ29yeUlEc1NvcnRlZCA9IHNvcnQgeyAkQ2F0ZWdvcnlUcmVlLT57JGF9IGNtcCAkQ2F0ZWdvcnlUcmVlLT57JGJ9IH0ga2V5cyAleyRDYXRlZ29yeVRyZWV9OwoKICAgICAgICAjIHNob3cgYWxsIGNhdGVnb3JpZXMKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKEBDYXRlZ29yeUlEc1NvcnRlZCkgewoKICAgICAgICAgICAgIyBnZXQgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICBteSAlQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHZhbGlkIHN0cmluZyBiYXNlZCBvbiBWYWxpZElECiAgICAgICAgICAgICRDYXRlZ29yeURhdGF7VmFsaWR9ID0gJFZhbGlkTGlzdHsgJENhdGVnb3J5RGF0YXtWYWxpZElEfSB9OwoKICAgICAgICAgICAgIyBvdmVyd3JpdGUgdGhlIG5hbWUgd2l0aCB0aGUgbG9uZyBuYW1lCiAgICAgICAgICAgICRDYXRlZ29yeURhdGF7TmFtZX0gPSAkQ2F0ZWdvcnlUcmVlLT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgIyBvdXRwdXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVDYXRlZ29yeURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQKICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtIC0gdGhlICBkZWxldGUgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRRGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCBVc2VyT2JqZWN0IEdyb3VwT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgbmVlZGVkIEl0ZW0gaWQKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIk5vIEl0ZW1JRCBpcyBnaXZlbiEiLAogICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW0gZGF0YQogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICApOwoKICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEZWxldGUnICkgewoKICAgICAgICAjIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUKICAgICAgICBteSAkQ291bGREZWxldGVJdGVtID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ291bGREZWxldGVJdGVtKSB7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIGV4cGxvcmVyLCB3aGVuIHRoZSBkZWxldGlvbiB3YXMgc3VjY2Vzc2Z1bAogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRGQVFEYXRhe0NhdGVnb3J5SUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSwgd2hlbiBkZWxldGUgZmFpbGVkCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJEZBUURhdGF7SXRlbUlEfSEiLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgdGhlIGRpYWxvZyB0eXBlLiBBcyBkZWZhdWx0LCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgIG15ICREaWFsb2dUeXBlID0gJ0NvbmZpcm1hdGlvbic7CgogICAgIyBvdXRwdXQgY29udGVudAogICAgbXkgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRRGVsZXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgRGlhbG9nVHlwZSA9PiAkRGlhbG9nVHlwZSwKICAgICk7CgogICAgIyByZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUKICAgIG15ICRPdXRwdXRKU09OID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRWRpdC5wbSAtIGFnZW50IGZyb250ZW5kIHRvIGVkaXQgZmFxIGFydGljbGVzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRRWRpdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlF1ZXVlOwp1c2UgS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQ7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgYWxsIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IENvbmZpZ09iamVjdCBMb2dPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpWYWxpZC0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1F1ZXVlT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpRdWV1ZS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpIHx8ICcnOwoKICAgICMgZ2V0IGZvcm0gaWQKICAgICRTZWxmLT57Rm9ybUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKCiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoICEkU2VsZi0+e0Zvcm1JRH0gKSB7CiAgICAgICAgJFNlbGYtPntGb3JtSUR9ID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgICMgZ2V0IHNjcmVlbiB0eXBlCiAgICAkU2VsZi0+e1NjcmVlblR5cGV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2NyZWVuVHlwZScgKSB8fCAnJzsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1ldGVycwogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgIHF3KEl0ZW1JRCBUaXRsZSBDYXRlZ29yeUlEIFN0YXRlSUQgTGFuZ3VhZ2VJRCBWYWxpZElEIEtleXdvcmRzIEFwcHJvdmVkIEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2ICkKICAgICAgICApCiAgICB7CiAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBJdGVtSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGVycm9yCiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICApOwoKICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2hvdyB0aGUgZmFxIGVkaXQgc2NyZWVuCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICEkU2VsZi0+e1N1YmFjdGlvbn0gKSB7CgogICAgICAgIG15ICRPdXRwdXQ7CgogICAgICAgICMgc2hvdyBhIHBvcHVwIHNjcmVlbgogICAgICAgIGlmICggJFNlbGYtPntTY3JlZW5UeXBlfSBlcSAnUG9wdXAnICkgewoKICAgICAgICAgICAgIyBzaG93IHRoZSBzbWFsbCBwb3B1cCBzY3JlZW4gaGVhZGVyCiAgICAgICAgICAgICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhcnRTbWFsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgYSBub3JtYWwgd2luZG93CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgdGhlIG5vcm1hbCBzY3JlZW4gaGVhZGVyIHdpdGggbmF2aWdhdGlvbiBiYXIKICAgICAgICAgICAgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhcnROb3JtYWwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzICh3aXRob3V0IGlubGluZSBhdHRhY2htZW50cykKICAgICAgICBteSBARXhpc3RpbmdBdHRhY2htZW50cyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBTaG93SW5saW5lID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY29weSBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMgdG8gdXBsb2FkIGNhY2hlCiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChARXhpc3RpbmdBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQgZGF0YQogICAgICAgICAgICBteSAlRmlsZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudC0+e0ZpbGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgY29udGVudCBkaXNwb3NpdGlvbiAoaWYgaXRzIGFuIGlubGluZSBhdHRhY2htZW50KQogICAgICAgICAgICBteSAkRGlzcG9zaXRpb24gPSAkQXR0YWNobWVudC0+e0lubGluZX0gPyAnaW5saW5lJyA6ICcnOwoKICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudCB0byB0aGUgdXBsb2FkIGNhY2hlCiAgICAgICAgICAgICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGV7RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpbGV7Q29udGVudH0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkRmlsZXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAkRGlzcG9zaXRpb24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhIGZyb20gdXBsb2FkIGNhY2hlCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICApOwoKICAgICAgICAjIHJld3JpdGUgb2xkIHN0eWxlIGlubGluZSBpbWFnZSBVUkxzCiAgICAgICAgRklFTEQ6CiAgICAgICAgZm9yIG15ICRGaWVsZCAocXcoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CgogICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uLCB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9fiBzewogICAgICAgICAgICAgICAgQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICAgICAgfXtBY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKCiAgICAgICAgICAgICMgZ2V0IEFwcHJvdmFsIHF1ZXVlIG5hbWUKICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFF1ZXVlJykgfHwgJyc7CgogICAgICAgICAgICAjIGNoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cwogICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZUlEID0gJFNlbGYtPntRdWV1ZU9iamVjdH0tPlF1ZXVlTG9va3VwKCBRdWV1ZSA9PiAkQXBwcm92YWxRdWV1ZSApOwoKICAgICAgICAgICAgIyBzaG93IG5vdGlmaWNhdGlvbiBpZiBBcHByb3ZhbCBxdWV1ZSBkb2VzIG5vdCBleGlzdHMKICAgICAgICAgICAgaWYgKCAhJEFwcHJvdmFsUXVldWVJRCApIHsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgICAgICBJbmZvICAgICA9PiAiRkFRIEFwcHJvdmFsIGlzIGVuYWJsZWQgYnV0IHF1ZXVlICckQXBwcm92YWxRdWV1ZScgZG9lcyBub3QgZXhpc3RzIiwKICAgICAgICAgICAgICAgICAgICBMaW5rICAgICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZG1pblN5c0NvbmZpZztTdWJhY3Rpb249RWRpdDsnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ1N5c0NvbmZpZ1N1Ykdyb3VwPUNvcmUlM0ElM0FBcHByb3ZhbDtTeXNDb25maWdHcm91cD1GQVEnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgQXR0YWNobWVudHMgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgU2NyZWVuVHlwZSAgPT4gJFNlbGYtPntTY3JlZW5UeXBlfSwKICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBhIHBvcHVwIHNjcmVlbiBmb290ZXIKICAgICAgICBpZiAoICRTZWxmLT57U2NyZWVuVHlwZX0gZXEgJ1BvcHVwJyApIHsKCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdFbmRTbWFsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CgogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGEgbm9ybWFsIGZvb3RlcgogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0VuZE5vcm1hbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzYXZlIHRoZSBmYXEKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkT3V0cHV0OwoKICAgICAgICAjIHNob3cgYSBwb3B1cCBzY3JlZW4KICAgICAgICBpZiAoICRTZWxmLT57U2NyZWVuVHlwZX0gZXEgJ1BvcHVwJyApIHsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgc21hbGwgcG9wdXAgc2NyZWVuIGhlYWRlcgogICAgICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0U21hbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGEgbm9ybWFsIHdpbmRvdwogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzaG93IHRoZSBub3JtYWwgc2NyZWVuIGhlYWRlciB3aXRoIG5hdmlnYXRpb24gYmFyCiAgICAgICAgICAgICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0Tm9ybWFsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoVGl0bGUgQ2F0ZWdvcnlJRCkpIHsKCiAgICAgICAgICAgICMgaWYgcmVxdWlyZWQgZmllbGQgaXMgbm90IGdpdmVuLCBhZGQgc2VydmVyIGVycm9yIGNsYXNzCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsgJFBhcmFtTmFtZSAuICdTZXJ2ZXJFcnJvcicgfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgYW4gYXR0YWNobWVudCBtdXN0IGJlIGRlbGV0ZWQKICAgICAgICBteSBAQXR0YWNobWVudElEcyA9IG1hcCB7CiAgICAgICAgICAgIG15ICgkSUQpID0gJF8gPX4gbXsgXEEgQXR0YWNobWVudERlbGV0ZSAoXGQrKSBceiB9eG1zOwogICAgICAgICAgICAkSUQgPyAkSUQgOiAoKTsKICAgICAgICB9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbU5hbWVzKCk7CgogICAgICAgIENPVU5UOgogICAgICAgIGZvciBteSAkQ291bnQgKCByZXZlcnNlIHNvcnQgQEF0dGFjaG1lbnRJRHMgKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSBkZWxldGUgYnV0dG9uIHdhcyBwcmVzc2VkIGZvciB0aGlzIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJERlbGV0ZSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gIkF0dGFjaG1lbnREZWxldGUkQ291bnQiICk7CgogICAgICAgICAgICAjIGNoZWNrIG5leHQgYXR0YWNobWVudCBpZiBpdCB3YXMgbm90IHByZXNzZWQKICAgICAgICAgICAgbmV4dCBDT1VOVCBpZiAhJERlbGV0ZTsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgdGhhdCB3ZSBuZWVkIHRvIHNob3cgdGhlIHBhZ2UgYWdhaW4KICAgICAgICAgICAgJEVycm9ye0F0dGFjaG1lbnR9ID0gMTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBhdHRhY2htZW50IGZyb20gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlEUmVtb3ZlRmlsZSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJENvdW50LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiB0aGVyZSB3YXMgYW4gYXR0YWNobWVudCB1cGxvYWQKICAgICAgICBpZiAoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0F0dGFjaG1lbnRVcGxvYWQnICkgKSB7CgogICAgICAgICAgICAjIHJlbWVtYmVyIHRoYXQgd2UgbmVlZCB0byBzaG93IHRoZSBwYWdlIGFnYWluCiAgICAgICAgICAgICRFcnJvcntBdHRhY2htZW50fSA9IDE7CgogICAgICAgICAgICAjIGdldCB0aGUgdXBsb2FkZWQgYXR0YWNobWVudAogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0VXBsb2FkQWxsKAogICAgICAgICAgICAgICAgUGFyYW0gID0+ICdGaWxlVXBsb2FkJywKICAgICAgICAgICAgICAgIFNvdXJjZSA9PiAnc3RyaW5nJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAlVXBsb2FkU3R1ZmYsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNlbmQgc2VydmVyIGVycm9yIGlmIGFueSByZXF1aXJlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZwogICAgICAgICMgb3IgYW4gYXR0YWNobWVudCB3YXMgZGVsZXRlZCBvciB1cGxvYWRlZAogICAgICAgIGlmICglRXJyb3IpIHsKCiAgICAgICAgICAgICMgaWYgdGhlcmUgd2FzIGFuIGF0dGFjaG1lbnQgZGVsZXRlIG9yIHVwbG9hZAogICAgICAgICAgICAjIHdlIGRvIG5vdCB3YW50IHRvIHNob3cgdmFsaWRhdGlvbiBlcnJvcnMgZm9yIG90aGVyIGZpZWxkcwogICAgICAgICAgICBpZiAoICRFcnJvcntBdHRhY2htZW50fSApIHsKICAgICAgICAgICAgICAgICVFcnJvciA9ICgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhCiAgICAgICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgQXBwcm92YWwgcXVldWUgbmFtZQogICAgICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFF1ZXVlJykgfHwgJyc7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBBcHByb3ZhbCBxdWV1ZSBleGlzdHMKICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlSUQgPSAkU2VsZi0+e1F1ZXVlT2JqZWN0fS0+UXVldWVMb29rdXAoIFF1ZXVlID0+ICRBcHByb3ZhbFF1ZXVlICk7CgogICAgICAgICAgICAgICAgIyBzaG93IG5vdGlmaWNhdGlvbiBpZiBBcHByb3ZhbCBxdWV1ZSBkb2VzIG5vdCBleGlzdHMKICAgICAgICAgICAgICAgIGlmICggISRBcHByb3ZhbFF1ZXVlSUQgKSB7CiAgICAgICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vdGlmeSgKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZBUSBBcHByb3ZhbCBpcyBlbmFibGVkIGJ1dCBxdWV1ZSAnJEFwcHJvdmFsUXVldWUnIGRvZXMgbm90IGV4aXN0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWRtaW5TeXNDb25maWc7U3ViYWN0aW9uPUVkaXQ7JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnU3lzQ29uZmlnU3ViR3JvdXA9Q29yZSUzQSUzQUFwcHJvdmFsO1N5c0NvbmZpZ0dyb3VwPUZBUScsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza05ldygKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzID0+IFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICAgICBTY3JlZW5UeXBlID0+ICRTZWxmLT57U2NyZWVuVHlwZX0sCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2hvdyBhIHBvcHVwIHNjcmVlbiBmb290ZXIKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1NjcmVlblR5cGV9IGVxICdQb3B1cCcgKSB7CgogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdFbmRTbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CgogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNob3cgYSBub3JtYWwgZm9vdGVyCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRW5kTm9ybWFsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdGhlIG5ldyBmYXEgYXJ0aWNsZQogICAgICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFVcGRhdGUoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3IgaWYgZmFxIGNvdWxkIG5vdCBiZSB1cGRhdGVkCiAgICAgICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgZnJvbSB1cGxvYWQgY2FjaGUKICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlER2V0QWxsRmlsZXNEYXRhKAogICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgYSBsb29rdXAgbG9va3VwIGhhc2ggb2YgdGhlIG5ldyBhdHRhY2htZW50cwogICAgICAgIG15ICVOZXdBdHRhY2htZW50OwogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIHRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lICsgZmlsZXNpemUgKyBjb250ZW50IHR5cGUKICAgICAgICAgICAgbXkgJEtleSA9ICRBdHRhY2htZW50LT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50LT57RmlsZXNpemV9CiAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9OwoKICAgICAgICAgICAgIyBhcHBlbmQgY29udGVudCBpZCBpZiBhdmFpbGFibGUgKGZvciBuZXcgaW5saW5lIGltYWdlcykKICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gKSB7CiAgICAgICAgICAgICAgICAkS2V5IC49ICRBdHRhY2htZW50LT57Q29udGVudElEfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzdG9yZSBhbGwgb2YgdGhlIG5ldyBhdHRhY2htZW50IGRhdGEKICAgICAgICAgICAgJE5ld0F0dGFjaG1lbnR7JEtleX0gPSAkQXR0YWNobWVudDsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGFsbCBleGlzdGluZyBhdHRhY2htZW50cywgd2l0aG91dCBpbmxpbmUgYXR0YWNobWVudHMKICAgICAgICBteSBARXhpc3RpbmdBdHRhY2htZW50cyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBTaG93SW5saW5lID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIHRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lICsgZmlsZXNpemUgKyBjb250ZW50IHR5cGUKICAgICAgICAgICAgIyAobm8gY29udGVudCBpZCwgYXMgZXhpc3RpbmcgYXR0YWNobWVudHMgZG9uJ3QgaGF2ZSBpdCkKICAgICAgICAgICAgbXkgJEtleSA9ICRBdHRhY2htZW50LT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50LT57RmlsZXNpemV9CiAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9OwoKICAgICAgICAgICAgIyBhdHRhY2htZW50IGlzIGFscmVhZHkgZXhpc3RpbmcsIHdlIGNhbiBkZWxldGUgaXQgZnJvbSB0aGUgbmV3IGF0dGFjaG1lbnQgaGFzaAogICAgICAgICAgICBpZiAoICROZXdBdHRhY2htZW50eyRLZXl9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICROZXdBdHRhY2htZW50eyRLZXl9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGV4aXN0aW5nIGF0dGFjaG1lbnQgaXMgbm8gbG9uZ2VyIGluIG5ldyBhdHRhY2htZW50cyBoYXNoCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIHRoZSBleGlzdGluZyBhdHRhY2htZW50CiAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2Vzc2Z1bCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2Vzc2Z1bCApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgd3JpdGUgdGhlIG5ldyBhdHRhY2htZW50cwogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggdmFsdWVzICVOZXdBdHRhY2htZW50ICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiBhdHRhY2htZW50IGlzIGFuIGlubGluZSBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICRJbmxpbmUgPSAwOwogICAgICAgICAgICBpZiAoICRBdHRhY2htZW50LT57Q29udGVudElEfSApIHsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRoYXQgaXQgaXMgaW5saW5lCiAgICAgICAgICAgICAgICAkSW5saW5lID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIGlmIHRoaXMgaW5saW5lIGF0dGFjaG1lbnQgaXMgdXNlZCBpbiBhbnkgZmFxIGFydGljbGUKICAgICAgICAgICAgICAgIG15ICRDb250ZW50SURGb3VuZDsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGFsbCBmaWVsZHMgZm9yIGNvbnRlbnQgaWQKICAgICAgICAgICAgICAgIEZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGZhcSBmaWVsZAogICAgICAgICAgICAgICAgICAgIG15ICRGaWVsZCA9ICRHZXRQYXJhbXsgJ0ZpZWxkJyAuICROdW1iZXIgfTsKCiAgICAgICAgICAgICAgICAgICAgIyBza2lwIGVtcHR5IGZpZWxkcwogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZDsKCiAgICAgICAgICAgICAgICAgICAgIyBza2lwIGZpZWxkcyB0aGF0IGRvIG5vdCBjb250YWluIHRoZSBjb250ZW50IGlkCiAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAkRmllbGQgIX4gbXsgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9IH14bXM7CgogICAgICAgICAgICAgICAgICAgICMgZm91bmQgdGhlIGNvbnRlbnQgaWQKICAgICAgICAgICAgICAgICAgICAkQ29udGVudElERm91bmQgPSAxOwoKICAgICAgICAgICAgICAgICAgICAjIHdlIGRvIG5vdCBuZWVkIHRvIHNlYXJjaCBmdXJ0aGVyCiAgICAgICAgICAgICAgICAgICAgbGFzdCBGSUVMRDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHdlIGRvIG5vdCB3YW50IHRvIGtlZXAgdGhpcyBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgIyBiZWNhdXNlIGl0IHdhcyBkZWxldGVkIGluIHRoZSByaWNodCB0ZXh0IGVkaXRvcgogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkQ29udGVudElERm91bmQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJEZpbGVJRCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgSW5saW5lID0+ICRJbmxpbmUsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgICAgICBpZiAoICEkRmlsZUlEICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRJbmxpbmU7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QnJvd3NlclJpY2hUZXh0fTsKCiAgICAgICAgICAgICMgcmV3cml0ZSB0aGUgVVJMcyBvZiB0aGUgaW5saW5lIGltYWdlcyBmb3IgdGhlIHVwbG9hZGVkIHBpY3R1cmVzCiAgICAgICAgICAgIG15ICRPayA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSgKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgICAgID0+ICRGaWxlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgaWYgKCAhJE9rICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSB0aGUgaW5saW5lIGltYWdlIFVSTHMgIgogICAgICAgICAgICAgICAgICAgICAgICAuICJmb3IgRkFRIEl0ZW0jICckR2V0UGFyYW17SXRlbUlEfSchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlEUmVtb3ZlKCBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9ICk7CgogICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaWYgd2UgbmVlZCB0byBjbG9zZSBhIHBvcHVwIHNjcmVlbiBvciBub3QKICAgICAgICBpZiAoICRTZWxmLT57U2NyZWVuVHlwZX0gZXEgJ1BvcHVwJyApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UG9wdXBDbG9zZSgKICAgICAgICAgICAgICAgIFVSTCA9PiAiQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEdldFBhcmFte0l0ZW1JRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEdldFBhcmFte0l0ZW1JRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KfQoKc3ViIF9NYXNrTmV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ICAgICAgICA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZExpc3QoKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgIG15ICVEYXRhOwoKICAgICMgYnVpbGQgdmFsaWQgc2VsZWN0aW9uCiAgICAkRGF0YXtWYWxpZE9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VmFsaWRJRH0gfHwgJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgKTsKCiAgICAjIGdldCBjYXRlZ29yaWVzICh3aXRoIGNhdGVnb3J5IGxvbmcgbmFtZXMpIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNldCBubyBzZXJ2ZXIgZXJyb3IgY2xhc3MgYXMgZGVmYXVsdAogICAgJFBhcmFte0NhdGVnb3J5SURTZXJ2ZXJFcnJvcn0gfHw9ICcnOwoKICAgICMgYnVpbGQgY2F0ZWdvcnkgc2VsZWN0aW9uCiAgICAkRGF0YXtDYXRlZ29yeU9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeUlEJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgJyAuICRQYXJhbXtDYXRlZ29yeUlEU2VydmVyRXJyb3J9LAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIFRyZWVWaWV3ICAgICA9PiAkVHJlZVZpZXcsCiAgICApOwoKICAgICMgZ2V0IHRoZSBsYW5ndWFnZSBsaXN0CiAgICBteSAlTGFuZ3VhZ2VzID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIHNlbGVjdGVkIGxhbmd1YWdlCiAgICBteSAkU2VsZWN0ZWRMYW5ndWFnZTsKICAgIGlmICggJFBhcmFte0xhbmd1YWdlSUR9ICYmICRMYW5ndWFnZXN7ICRQYXJhbXtMYW5ndWFnZUlEfSB9ICkgewoKICAgICAgICAjIGdldCBsYW5ndWFnZSBmcm9tIGdpdmVuIGxhbmd1YWdlIGlkCiAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2UgPSAkTGFuZ3VhZ2VzeyAkUGFyYW17TGFuZ3VhZ2VJRH0gfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIHVzZSB0aGUgdXNlciBsYW5ndWFnZSwgb3IgaWYgbm90IGZvdW5kICdlbicKICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJMYW5ndWFnZX0gfHwgJ2VuJzsKCiAgICAgICAgIyBnZXQgdXNlciBsYW5ndWFnZSBJRAogICAgICAgIG15ICRTZWxlY3RlZExhbmd1YWdlSUQgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTG9va3VwKCBOYW1lID0+ICRTZWxlY3RlZExhbmd1YWdlICk7CgogICAgICAgICMgY2hlY2sgaWYgTGFuZHVhZ2VJRCBkb2VzIG5vdCBleHNpdHMKICAgICAgICBpZiAoICEkU2VsZWN0ZWRMYW5ndWFnZUlEICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGxvd2VzdCBsYW5ndWFnZSBJRAogICAgICAgICAgICBteSBATGFuZ3VhZ2VJRHMgPSBzb3J0IGtleXMgJUxhbmd1YWdlczsKICAgICAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2VJRCA9ICRMYW5ndWFnZUlEc1swXTsKCiAgICAgICAgICAgICMgc2V0IHRoZSBsYW5ndWFnZSB3aXRoIGxvd2VzdCBsYW5ndWFnZSBJRCBhcyBzZWxlY3RlZCBsYW5ndWFnZQogICAgICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYW5ndWFnZXN7JFNlbGVjdGVkTGFuZ3VhZ2VJRH07CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgdGhlIGxhbmd1YWdlIHNlbGVjdGlvbgogICAgJERhdGF7TGFuZ3VhZ2VPcHRpb259ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlTGFuZ3VhZ2VzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0xhbmd1YWdlSUQnLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkTGFuZ3VhZ2UsCiAgICAgICAgVHJhbnNsYXRpb24gICA9PiAwLAogICAgKTsKCiAgICAjIGdldCB0aGUgc3RhdGVzIGxpc3QKICAgIG15ICVTdGF0ZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgc2VsZWN0ZWQgc3RhdGUKICAgIG15ICRTZWxlY3RlZFN0YXRlOwogICAgaWYgKCAkUGFyYW17U3RhdGVJRH0gJiYgJFN0YXRlc3sgJFBhcmFte1N0YXRlSUR9IH0gKSB7CgogICAgICAgICMgZ2V0IHN0YXRlIGZyb20gZ2l2ZW4gc3RhdGUgaWQKICAgICAgICAkU2VsZWN0ZWRTdGF0ZSA9ICRTdGF0ZXN7ICRQYXJhbXtTdGF0ZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IGRlZmF1bHQgc3RhdGUKICAgICAgICAkU2VsZWN0ZWRTdGF0ZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkRlZmF1bHQ6OlN0YXRlJykgfHwgJ2ludGVybmFsIChhZ2VudCknOwogICAgfQoKICAgICMgYnVpbGQgdGhlIHN0YXRlIHNlbGVjdGlvbgogICAgJERhdGF7U3RhdGVPcHRpb259ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU3RhdGVzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ1N0YXRlSUQnLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkU3RhdGUsCiAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgKTsKCiAgICBteSAkRmllbGRzZXRDbGFzcyA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1NjcmVlblR5cGV9IGVxICdQb3B1cCcgKSB7CiAgICAgICAgJEZpZWxkc2V0Q2xhc3MgPSAnRml4ZWRMYWJlbCc7CiAgICB9CgogICAgIyBzaG93IGZhcSBlZGl0IHNjcmVlbgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFFZGl0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgRmllbGRzZXRDbGFzcyA9PiAkRmllbGRzZXRDbGFzcywKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIGZpZWxkCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBhcHByb3ZhbCBmaWVsZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBmYXEgYXBwcm92YWwgZ3JvdXAgZnJvbSBjb25maWcKICAgICAgICBteSAkQXBwcm92YWxHcm91cCA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsR3JvdXAnKSB8fCAnJzsKCiAgICAgICAgIyBidWlsZCB0aGUgYXBwcm92YWwgc2VsZWN0aW9uIGlmIHVzZXIgaXMgaW4gdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgaWYgKCAkR3JvdXBzeyRBcHByb3ZhbEdyb3VwfSApIHsKCiAgICAgICAgICAgICREYXRhe0FwcHJvdmFsT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBcHByb3ZlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAwID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgMSA9PiAnWWVzJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtBcHByb3ZlZH0gfHwgMCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FwcHJvdmFsJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IHRoZSBhdHRhY2htZW50IHVwbG9hZCBidXR0b24KICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFVwbG9hZCcsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBzaG93IGF0dGFjaG1lbnRzCiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnRzfSB9ICkgewoKICAgICAgICAjIGRvIG5vdCBzaG93IGlubGluZSBpbWFnZXMgYXMgYXR0YWNobWVudHMKICAgICAgICAjICh0aGV5IGhhdmUgYSBjb250ZW50IGlkKQogICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICYmICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnQnLAogICAgICAgICAgICBEYXRhID0+ICRBdHRhY2htZW50LAogICAgICAgICk7CiAgICB9CgogICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvciBqYXZhc2NyaXB0CiAgICAjIG9ubHkgaWYgYWN0aXZhdGVkIGFuZCB0aGUgYnJvd3NlciBjYW4gaGFuZGxlIGl0CiAgICAjIG90aGVyd2lzZSBqdXN0IGEgdGV4dGFyZWEgaXMgc2hvd24KICAgIGlmICggJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyB1c2UgaGVpZ2h0L3dpZHRoIGRlZmluZWQgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgJFBhcmFte1JpY2hUZXh0SGVpZ2h0fSA9ICRTZWxmLT57Q29uZmlnfS0+e1JpY2hUZXh0SGVpZ2h0fSB8fCAwOwogICAgICAgICRQYXJhbXtSaWNoVGV4dFdpZHRofSAgPSAkU2VsZi0+e0NvbmZpZ30tPntSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmljaFRleHQnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IEZBUSBDb250ZW50CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBGQVFEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgaWYgKCAkU2VsZi0+e1NjcmVlblR5cGV9IG5lICdQb3B1cCcgKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRW5kTm9ybWFsJywKICAgICAgICApOwogICAgfQoKICAgIGlmICggJFNlbGYtPntTY3JlZW5UeXBlfSBlcSAnUG9wdXAnICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0VuZFNtYWxsJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUVkaXQnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0gLSBzaG93IHRoZSBmYXEgZXhwbG9yZXIKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QgVXNlck9iamVjdCBHcm91cE9iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICAkU2VsZi0+e1NlYXJjaExpbWl0fSA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaExpbWl0fSB8fCA1MDA7CiAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CiAgICAkU2VsZi0+e1ZpZXd9ICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApICAgfHwgJyc7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIGdldCBjYXRlZ29yeSBpZAogICAgbXkgJENhdGVnb3J5SUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeUlEJyApIHx8IDA7CgogICAgIyBjaGVjayBmb3Igbm9uIG51bWVyaWMgQ2F0ZWdvcnlJRAogICAgaWYgKCAkQ2F0ZWdvcnlJRCAhfiAvXGQrLyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRCA9IDA7CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcnkgYnkgbmFtZQogICAgbXkgJENhdGVnb3J5ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnknICkgfHwgJyc7CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBDYXRlZ29yeSBJRCBmcm9tIGNhdGVnb3J5IG5hbWUgaWYgbm8gQ2F0ZWdvcnkgSUQKICAgIGlmICggJENhdGVnb3J5ICYmICEkQ2F0ZWdvcnlJRCApIHsKCiAgICAgICAgIyBnZXQgdGhlIGNhdGVnb3J5IHRyZWUKICAgICAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgcmV2ZXJzZSB0aGUgaGFzIGZvciBlYXN5IGxvb2t1cAogICAgICAgIG15ICVSZXZlcnNlQ2F0ZWdvcnlUcmVlID0gcmV2ZXJzZSAleyRDYXRlZ29yeVRyZWV9OwoKICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSZXZlcnNlQ2F0ZWdvcnlUcmVleyRDYXRlZ29yeX0gfHwgMDsKICAgIH0KCiAgICAjIGdldCBuYXZpZ2F0aW9uIGJhciBvcHRpb24KICAgIG15ICROYXYgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYXYnICkgfHwgJyc7CgogICAgIyBzYXZlIGNhdGVnb3J5IGlkIHRvIHNlc3Npb24sIHRvIGJlIHVzZWQgaW4gRkFRIGFkZCBzY3JlZW4KICAgICRTZWxmLT57U2Vzc2lvbk9iamVjdH0tPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFZpZXdlZENhdGVnb3J5JywKICAgICAgICBWYWx1ZSAgICAgPT4gJENhdGVnb3J5SUQsCiAgICApOwoKICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4gKGZvciBiYWNrIG1lbnUgYWN0aW9uKQogICAgIyBidXQgb25seSBpZiB0aGUgRkFRIGV4cGxvcmVyIGlzIG5vdCBzaG93biBhcyBvdmVybGF5CiAgICBpZiAoICEkTmF2IHx8ICROYXYgbmUgJ05vbmUnICkgewoKICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO1NvcnRCeT0kU2VsZi0+e1NvcnRCeX0iCiAgICAgICAgICAgIC4gIjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEO05hdj0kTmF2IgogICAgICAgICAgICAuICI7T3JkZXJCeT0kU2VsZi0+e09yZGVyQnl9O1N0YXJ0SGl0PSRTZWxmLT57U3RhcnRIaXR9IjsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgfQoKICAgICMgdHJ5IHRvIGdldCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgbXkgJUNhdGVnb3J5RGF0YTsKICAgIGlmICgkQ2F0ZWdvcnlJRCkgewoKICAgICAgICAjIGdldCBjYXRlZ29yeSBkYXRhCiAgICAgICAgJUNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJUNhdGVnb3J5RGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJUaGUgQ2F0ZWdvcnlJRCAkQ2F0ZWdvcnlJRCBpcyBpbnZhbGlkLiIsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW4uJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgICAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE91dHB1dDsKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyIHNtYWxsIGFuZCBubyBOYXZiYXIKICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgb3V0cHV0IGhlYWRlciBhbmQgbmF2aWdhdGlvbiBiYXIKICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwogICAgfQoKICAgICMgc2hvdyBGQVEgcGF0aAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIE5hdiAgICAgICAgPT4gJE5hdiwKICAgICk7CgogICAgIyBnZXQgYWxsIGRpcmVjdCBzdWJjYXRlZ29yaWVzIG9mIHRoZSBzZWxlY3RlZCBjYXRlZ29yeQogICAgbXkgJENhdGVnb3J5SURzUmVmID0gJFNlbGYtPntGQVFPYmplY3R9LT5BZ2VudENhdGVnb3J5U2VhcmNoKAogICAgICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlELAogICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzaG93IHN1YmNhdGVnb3JpZXMgbGlzdAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnU3ViY2F0ZWdvcmllcycgKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JyApOwoKICAgICMgY2hlY2sgaWYgdGhlcmUgYXJlIHN1YmNhdGVnb3JpZXMKICAgIGlmICggJENhdGVnb3J5SURzUmVmICYmIHJlZiAkQ2F0ZWdvcnlJRHNSZWYgZXEgJ0FSUkFZJyAmJiBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICMgc2hvdyBkYXRhIGZvciBlYWNoIHN1YmNhdGVnb3J5CiAgICAgICAgZm9yIG15ICRTdWJDYXRlZ29yeUlEICggQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgbXkgJVN1YkNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIHN1YmNhdGVnb3JpZXMgb2YgdGhpcyBzdWJjYXRlZ29yeQogICAgICAgICAgICAkU3ViQ2F0ZWdvcnlEYXRhe1N1YkNhdGVnb3J5Q291bnR9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUNvdW50KAogICAgICAgICAgICAgICAgUGFyZW50SURzID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBmYXEgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeQogICAgICAgICAgICAkU3ViQ2F0ZWdvcnlEYXRhe0FydGljbGVDb3VudH0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUNvdW50KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBJdGVtU3RhdGVzICAgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICAgICAgT25seUFwcHJvdmVkID0+IDAsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5hdiA9PiAkTmF2LAogICAgICAgICAgICAgICAgICAgICVTdWJDYXRlZ29yeURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQKICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgICMgc2VhcmNoIGFsbCBGQVEgYXJ0aWNsZXMgd2l0aGluIHRoZSBnaXZlbiBjYXRlZ29yeQogICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbICRTZWxmLT57U29ydEJ5fSBdLAogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAkU2VsZi0+e09yZGVyQnl9IF0sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+IFskQ2F0ZWdvcnlJRF0sCiAgICApOwoKICAgICMgYnVpbGQgbmVjY2Vzc2FyeSBzdHVmZiBmb3IgdGhlIEZBUSBhcnRpY2xlIGxpc3QKICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAuICc7U29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgLiAnO0NhdGVnb3J5SUQ9JyAuICRDYXRlZ29yeUlECiAgICAgICAgLiAnOyc7CiAgICBteSAkTGlua1NvcnQgPSAnRmlsdGVyPScKICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAuICc7Vmlldz0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1ZpZXd9ICkKICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgLiAnO0NhdGVnb3J5SUQ9JyAuICRDYXRlZ29yeUlECiAgICAgICAgLiAnOyc7CiAgICBteSAkRmlsdGVyTGluayA9ICdTb3J0Qnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTb3J0Qnl9ICkKICAgICAgICAuICc7T3JkZXJCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e09yZGVyQnl9ICkKICAgICAgICAuICc7Vmlldz0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1ZpZXd9ICkKICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgLiAnO0NhdGVnb3J5SUQ9JyAuICRDYXRlZ29yeUlECiAgICAgICAgLiAnOyc7CgogICAgIyBmaW5kIG91dCB3aGljaCBjb2x1bW5zIHNob3VsZCBiZSBzaG93bgogICAgbXkgQFNob3dDb2x1bW5zOwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gKSB7CgogICAgICAgICMgZ2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnCiAgICAgICAgbXkgJVBvc3NpYmxlQ29sdW1uID0gJXsgJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICMgZ2V0IHRoZSBjb2x1bW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAlUG9zc2libGVDb2x1bW4gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFBvc3NpYmxlQ29sdW1ueyROYW1lfTsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgIH0KCiAgICAgICAgIyBlbmZvcmNlIEZBUSBudW1iZXIgY29sdW1uIHNpbmNlIGlzIHRoZSBsaW5rIE1hc3RlckFjdGlvbiBob29rCiAgICAgICAgaWYgKCAhJFBvc3NpYmxlQ29sdW1ueydOdW1iZXInfSApIHsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICdOdW1iZXInOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIHRoZSB0aXRsZSB2YWx1ZSAob24gdG9wIG9mIHRoZSBhcnRpY2xlIGxpc3QpCiAgICBteSAkVGl0bGUgPSAkQ2F0ZWdvcnlEYXRhe05hbWV9CiAgICAgICAgfHwgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6Um9vdENhdGVnb3J5TmFtZScpCiAgICAgICAgfHwgJyc7CgogICAgIyBidWlsZCB0aGUgaHRtbCBmb3IgdGhlIGxpc3Qgb2YgRkFRIGFydGljbGVzIGluIHRoZSBnaXZlbiBjYXRlZ29yeQogICAgbXkgJEZBUUl0ZW1MaXN0SFRNTCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRTGlzdFNob3coCiAgICAgICAgRkFRSURzICAgICA9PiBcQFZpZXdhYmxlRkFRSURzLAogICAgICAgIFRvdGFsICAgICAgPT4gc2NhbGFyIEBWaWV3YWJsZUZBUUlEcywKICAgICAgICBWaWV3ICAgICAgID0+ICRTZWxmLT57Vmlld30sCiAgICAgICAgRW52ICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgID0+ICRMaW5rUGFnZSwKICAgICAgICBMaW5rU29ydCAgID0+ICRMaW5rU29ydCwKICAgICAgICBMaW5rRmlsdGVyID0+ICRGaWx0ZXJMaW5rLAoKICAgICAgICBUaXRsZU5hbWUgID0+ICdGQVEgQXJ0aWNsZXMnLAogICAgICAgIFRpdGxlVmFsdWUgPT4gJFRpdGxlLAoKICAgICAgICBMaW1pdCAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICBGaWx0ZXIgICAgICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgRmlsdGVyTGluayAgPT4gJEZpbHRlckxpbmssCiAgICAgICAgT3JkZXJCeSAgICAgPT4gJFNlbGYtPntPcmRlckJ5fSwKICAgICAgICBTb3J0QnkgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0sCiAgICAgICAgU2hvd0NvbHVtbnMgPT4gXEBTaG93Q29sdW1ucywKICAgICAgICBPdXRwdXQgICAgICA9PiAxLAogICAgICAgIE5hdiAgICAgICAgID0+ICROYXYsCiAgICApOwoKICAgICMgc2hvdyB0aGUgRkFRIGFydGljbGUgbGlzdAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFJdGVtTGlzdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEZBUUl0ZW1MaXN0SFRNTCA9PiAkRkFRSXRlbUxpc3RIVE1MLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2V0IFF1aWNrU2VhcmNoIG1vZGUKICAgIG15ICRNb2RlID0gJ0FnZW50JzsKICAgIGlmICggJE5hdiBlcSAnTm9uZScgKSB7CiAgICAgICAgJE1vZGUgPSAnQWdlbnRTbWFsbCc7CiAgICB9CgogICAgIyBzaG93IFF1aWNrU2VhcmNoCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVNob3dRdWlja1NlYXJjaCgKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJE1vZGUsCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICROYXYsCiAgICApOwoKICAgIG15ICVJbmZvQm94UmVzdWx0czsKCiAgICAjIHNob3cgbGFzdCBhZGRlZCBhbmQgbGFzdCB1cGRhdGVkIGFydGljbGVzCiAgICBmb3IgbXkgJFR5cGUgKHF3KExhc3RDcmVhdGUgTGFzdENoYW5nZSkpIHsKCiAgICAgICAgbXkgJFNob3dPayA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRU2hvd0xhdGVzdE5ld3NCb3goCiAgICAgICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICROYXYsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIHRoZSBOZXdzQm94UmVzdWx0CiAgICAgICAgJEluZm9Cb3hSZXN1bHRzeyRUeXBlfSA9ICRTaG93T2s7CgogICAgfQoKICAgICMgc2hvdyB0b3AgdGVuIGFydGljbGVzCiAgICBteSAkU2hvd09rID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0FnZW50JywKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICROYXYsCiAgICApOwoKICAgICMgY2hlY2sgZXJyb3IKICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIHN0b3JlIHRoZSBOZXdzQm94UmVzdWx0CiAgICAkSW5mb0JveFJlc3VsdHN7VG9wMTB9ID0gJFNob3dPazsKCiAgICAjIHNldCB0aGUgU2lkZWJhciB3aWR0aAogICAgbXkgJFNpZGViYXJDbGFzcyA9ICdMYXJnZSc7CgogICAgIyBjaGVjayBpZiBhbGwgSW5mb0JveGVzIGFyZSBlbXB0eSBhbmQgaGlkZSB0aGUgU2lkZWJhcgogICAgaWYgKAogICAgICAgICRJbmZvQm94UmVzdWx0c3tMYXN0Q3JlYXRlfSBlcSAtMQogICAgICAgICYmICRJbmZvQm94UmVzdWx0c3tMYXN0Q2hhbmdlfSBlcSAtMQogICAgICAgICYmICRJbmZvQm94UmVzdWx0c3tUb3AxMH0gZXEgLTEKICAgICAgICApCiAgICB7CiAgICAgICAgJFNpZGViYXJDbGFzcyA9ICdIaWRkZW4nOwogICAgfQoKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkU2lkZWJhckNsYXNzID0gJ01lZGl1bSc7CiAgICB9CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUV4cGxvcmVyJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgU2lkZWJhckNsYXNzID0+ICRTaWRlYmFyQ2xhc3MsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgZm9vdGVyCiAgICBpZiAoICROYXYgJiYgJE5hdiBlcSAnTm9uZScgKSB7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CiAgICB9CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbSAtIHRoZSBGQVEgaGlzdG9yeSBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFIaXN0b3J5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IFVzZXJPYmplY3QgR3JvdXBPYmplY3QgQ29uZmlnT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgbmVlZGVkIEl0ZW0gaWQKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNhbid0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISIsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgIG15ICRQZXJtaXNzaW9uID0gJFNlbGYtPntGQVFPYmplY3R9LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGFydGljbGUgaGlzdG9yeQogICAgbXkgJEhpc3RvcnkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUhpc3RvcnlHZXQoCiAgICAgICAgSXRlbUlEID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgZm9yIG15ICRIaXN0b3J5RW50cnkgKCBAeyRIaXN0b3J5fSApIHsKCiAgICAgICAgIyByZXBsYWNlIElEIHRvIGZ1bGwgdXNlciBuYW1lIG9uIENyZWF0ZWRCeSBrZXkKICAgICAgICBteSAlVXNlciA9ICRTZWxmLT57VXNlck9iamVjdH0tPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJEhpc3RvcnlFbnRyeS0+e0NyZWF0ZWRCeX0sCiAgICAgICAgICAgIENhY2hlZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEhpc3RvcnlFbnRyeS0+e0NyZWF0ZWRCeX0gPSAiJFVzZXJ7VXNlckxvZ2lufSAoJFVzZXJ7VXNlckZpcnN0bmFtZX0gJFVzZXJ7VXNlckxhc3RuYW1lfSkiOwoKICAgICAgICAjIGNhbGwgUm93IGJsb2NrCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAleyRIaXN0b3J5RW50cnl9LAogICAgICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoCiAgICAgICAgVHlwZSAgPT4gJ1NtYWxsJywKICAgICAgICBUaXRsZSA9PiAnRkFRSGlzdG9yeScsCiAgICApOwoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFIaXN0b3J5JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbSAtIG1vZHVsZSBmb3IgRkFRIGpvdXJuYWwKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFKb3VybmFsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IEVuY29kZU9iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIGZvciBmcm9udGVuZAogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSA9IGludCggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgJFNlbGYtPntKb3VybmFsTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57Sm91cm5hbExpbWl0fSB8fCA1MDA7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEpvdXJuYWwgZW50cmllcwogICAgbXkgJEpvdXJuYWwgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkhpc3RvcnlHZXQoIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0gKTsKCiAgICAjIGZpbmQgb3V0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHNob3duCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgIyBnZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJE5hbWU7CiAgICAgICAgfQoKICAgICAgICAjIGVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2sKICAgICAgICBpZiAoICEkUG9zc2libGVDb2x1bW57J051bWJlcid9ICkgewogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgfQogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKAogICAgICAgIFZhbHVlID0+ICdGQVEgSm91cm5hbCcsCiAgICApOwogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIG91dG91dCBKb3VybmFsCiAgICAkT3V0cHV0IC49ICRTZWxmLT5fRkFRSm91cm5hbFNob3coCiAgICAgICAgSm91cm5hbCAgICAgPT4gJEpvdXJuYWwsCiAgICAgICAgVG90YWwgICAgICAgPT4gc2NhbGFyIEB7JEpvdXJuYWx9LAogICAgICAgIFRpdGxlTmFtZSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEgSm91cm5hbCcpLAogICAgICAgIExpbWl0ICAgICAgID0+ICRTZWxmLT57Sm91cm5hbExpbWl0fSwKICAgICAgICBTaG93Q29sdW1ucyA9PiBcQFNob3dDb2x1bW5zLAogICAgKTsKCiAgICAjIGJ1aWxkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX0ZBUUpvdXJuYWxTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICBpZiAoICEkUGFyYW17Vmlld30gJiYgJFNlbGYtPnsgJ1VzZXJGQVFKb3VybmFsT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFBhcmFte1ZpZXd9ID0gJFNlbGYtPnsgJ1VzZXJGQVFKb3VybmFsT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH07CiAgICB9CgogICAgIyBzZXQgZnJvbnRlbmQKICAgIG15ICRGcm9udGVuZCA9ICdBZ2VudCc7CgogICAgIyBzZXQgZGVmYXV0IHZpZXcgbW9kZSB0byAnc21hbGwnCiAgICBteSAkVmlldyA9ICRQYXJhbXtWaWV3fSB8fCAnU21hbGwnOwoKICAgICMgc3RvcmUgbGF0ZXN0IHZpZXcgbW9kZQogICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBWYWx1ZSAgICAgPT4gJFZpZXcsCiAgICApOwoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kcyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZyb250ZW5kOjpKb3VybmFsT3ZlcnZpZXcnKTsKICAgIGlmICggISRCYWNrZW5kcyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgaGFzaC1yZWYKICAgIGlmICggcmVmICRCYWNrZW5kcyBuZSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmIScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBjb25maWcga2V5CiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAiTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgJyRWaWV3JyEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBuYXYgYmFyCiAgICBteSAkU3RhcnRIaXQgPSBpbnQoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKCiAgICAjIGdldCBwZXJzb25hbCBwYWdlIHNob3duIGNvdW50CiAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnVXNlckZBUUpvdXJuYWxPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ0ZBUUpvdXJuYWxPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwoKICAgICMgY2hlY2sgc3RhcnQgb3B0aW9uLCBpZiBoaWdoZXIgdGhlbiBlbGVtZW50cyBhdmFpbGFibGUsIHNldAogICAgIyBpdCB0byB0aGUgbGFzdCBvdmVydmlldyBwYWdlIChUaGFua3MgdG8gU3RlZmFuIFNjaG1pZHQhKQogICAgaWYgKCAkU3RhcnRIaXQgPiAkUGFyYW17VG90YWx9ICkgewogICAgICAgIG15ICRQYWdlcyA9IGludCggKCAkUGFyYW17VG90YWx9IC8gJFBhZ2VTaG93biApICsgMC45OTk5OSApOwogICAgICAgICRTdGFydEhpdCA9ICggKCAkUGFnZXMgLSAxICkgKiAkUGFnZVNob3duICkgKyAxOwogICAgfQoKICAgICMgZ2V0IGRhdGEgc2VsZWN0aW9uCiAgICBteSAlRGF0YTsKICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgc2V0IHBhZ2UgbGltaXQgYW5kIGJ1aWxkIHBhZ2UgbmF2CiAgICBteSAkTGltaXQgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntBY3Rpb259LAogICAgICAgIExpbmsgICAgICA9PiAkUGFyYW17TGlua1BhZ2V9LAogICAgKTsKCiAgICAjIGJ1aWxkIHNob3duIGZhcSBhcnRpY2xlcyBvbiBhIHBhZ2UKICAgICRQYXJhbXtSZXF1ZXN0ZWRVUkx9ICAgID0gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iOwogICAgJFBhcmFte0dyb3VwfSAgICAgICAgICAgPSAkR3JvdXA7CiAgICAkUGFyYW17UHJlZmVyZW5jZXNLZXl9ICA9ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleTsKICAgICRQYXJhbXtQYWdlU2hvd25TdHJpbmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgID0+ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICA9PiBcJURhdGEsCiAgICApOwoKICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4gKGZvciBiYWNrIG1lbnUgYWN0aW9uKQogICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkUGFyYW17UmVxdWVzdGVkVVJMfSwKICAgICk7CiAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFBhcmFte1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgYnVpbGQgbmF2YmFyIGNvbnRlbnQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBsb29wIG92ZXIgY29uZmlndXJlZCBiYWNrZW5kcwogICAgZm9yIG15ICRCYWNrZW5kICggc29ydCBrZXlzICV7JEJhY2tlbmRzfSApIHsKCiAgICAgICAgIyBidWlsZCBuYXZiYXIgdmlldyBtb2RlCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjdXJyZW50IHZpZXcgaXMgY29uZmlndXJlZCBpbiBiYWNrZW5kCiAgICAgICAgaWYgKCAkVmlldyBlcSAkQmFja2VuZCApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyVmlld01vZGVTZWxlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICAgICAgRmlsdGVyID0+ICRQYXJhbXtGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBwYWdlIG5hdiBpcyBhdmFpbGFibGUKICAgIGlmICglUGFnZU5hdikgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhcicsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYWdlTmF2LAogICAgICAgICk7CgogICAgICAgICMgZG9uJ3Qgc2hvdyBjb250ZXh0IHNldHRpbmdzIGluIEFKQVggY2FzZSAoZS4gZy4gaW4gY3VzdG9tZXIgRkFRIGhpc3RvcnkpLAogICAgICAgICMgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRleHRTZXR0aW5ncycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIGh0bWwgY29udGVudAogICAgbXkgJE91dHB1dE5hdkJhciA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVmlldyA9PiAkVmlldywKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICMgY3JlYXRlIG91dHB1dAogICAgbXkgJE91dHB1dFJhdyAuPSAkT3V0cHV0TmF2QmFyOwoKICAgICMgbG9hZCBtb2R1bGUKICAgIGlmICggISRTZWxmLT57TWFpbk9iamVjdH0tPlJlcXVpcmUoICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgYmFja2VuZCBvYmplY3QKICAgIG15ICRPYmplY3QgPSAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9LT5uZXcoICV7JFNlbGZ9ICk7CiAgICByZXR1cm4gaWYgISRPYmplY3Q7CgogICAgIyBydW4gbW9kdWxlCiAgICBteSAkT3V0cHV0ID0gJE9iamVjdC0+UnVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBGcm9udGVuZCAgPT4gJEZyb250ZW5kLAogICAgKTsKCiAgICAkT3V0cHV0UmF3IC49ICRPdXRwdXQ7CgogICAgIyBjcmVhdGUgb3ZlcnZpZXcgbmF2IGJhcgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyByZXR1cm4gY29udGVudCBpZiBhdmFpbGFibGUKICAgIHJldHVybiAkT3V0cHV0UmF3Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0gLSB0aGUgZmFxIGxhbmd1YWdlIG1hbmFnZW1lbnQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRTGFuZ3VhZ2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0KSkgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyglUGFyYW0pOwoKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1J3fSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgJiYgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIExhbmd1YWdlSUQKICAgICAgICBteSAkTGFuZ3VhZ2VJRCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhbmd1YWdlSUQnICkgfHwgJyc7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRMYW5ndWFnZUlEICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsYW5ndWFnZSBkYXRhCiAgICAgICAgbXkgJUxhbmd1YWdlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBvdXRwdXQgY2hhbmdlIGxhbmd1YWdlIHNjcmVlbgogICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgQWN0aW9uID0+ICdDaGFuZ2UnLAogICAgICAgICAgICAlTGFuZ3VhZ2VEYXRhLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNoYW5nZSBhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2VBY3Rpb24nICYmICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGNoZWNrIGZvciBuYW1lIGFuZCBsYW5ndWFnZSBpZAogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhMYW5ndWFnZUlEIE5hbWUpKSB7CgogICAgICAgICAgICAjIHN0b3JlIG5lZWRlZCBwYXJhbWV0ZXJzIGluICVHZXRQYXJhbSB0byBtYWtlIGl0IHJlbG9hZGFibGUKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICAgICAgICAgTmFtZVNlcnZlckVycm9yICAgICAgICA9PiAnU2VydmVyRXJyb3InLAogICAgICAgICAgICAgICAgICAgIE5hbWVTZXJ2ZXJFcnJvck1lc3NhZ2UgPT4gJ1RoZSBuYW1lIGlzIHJlcXVpcmVkIScsCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBmb3IgZHVwbGljYXRlIGxhbmd1YWdlIG5hbWUKICAgICAgICBteSAkTGFuZ3VhZ2VFeGlzdHNBbHJlYWR5ID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUR1cGxpY2F0ZUNoZWNrKAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkR2V0UGFyYW17TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyB0aGUgZWRpdCBzY3JlZW4gYWdhaW4KICAgICAgICBpZiAoJExhbmd1YWdlRXhpc3RzQWxyZWFkeSkgewoKICAgICAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgICAgICAgICAgTmFtZVNlcnZlckVycm9yICAgICAgICA9PiAnU2VydmVyRXJyb3InLAogICAgICAgICAgICAgICAgTmFtZVNlcnZlckVycm9yTWVzc2FnZSA9PiAnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgbGFuZ3VhZ2UKICAgICAgICBteSAkTGFuZ3VhZ2VVcGRhdGVTdWNjZXNzZnVsID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZVVwZGF0ZSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VVcGRhdGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IG92ZXJ2aWV3CiAgICAgICAgJFNlbGYtPl9PdmVydmlldygpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgIEluZm8gPT4gJ0ZBUSBsYW5ndWFnZSB1cGRhdGVkIScsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhZGQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGQnICYmICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBuZXcgbmFtZQogICAgICAgICRHZXRQYXJhbXtOYW1lfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICk7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFkZCBhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICYmICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGdldCB0aGUgbmFtZQogICAgICAgICRHZXRQYXJhbXtOYW1lfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICk7CgogICAgICAgICMgY2hlY2sgZm9yIG5hbWUKICAgICAgICBpZiAoICEkR2V0UGFyYW17TmFtZX0gKSB7CgogICAgICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3IgICAgICAgID0+ICdTZXJ2ZXJFcnJvcicsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3JNZXNzYWdlID0+ICdUaGUgbmFtZSBpcyByZXF1aXJlZCEnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBkdXBsaWNhdGUgbGFuZ3VhZ2UgbmFtZQogICAgICAgIG15ICRMYW5ndWFnZUV4aXN0c0FscmVhZHkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlRHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgIE5hbWUgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHRoZSBlZGl0IHNjcmVlbiBhZ2FpbgogICAgICAgIGlmICgkTGFuZ3VhZ2VFeGlzdHNBbHJlYWR5KSB7CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3IgICAgICAgID0+ICdTZXJ2ZXJFcnJvcicsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3JNZXNzYWdlID0+ICJUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISIsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgYWRkIHRoZSBuZXcgbGFuZ3VhZ2UKICAgICAgICBteSAkTGFuZ3VhZ2VBZGRTdWNjZXNzZnVsID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUFkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VBZGRTdWNjZXNzZnVsICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IG92ZXJ2aWV3CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vdGlmeSgKICAgICAgICAgICAgSW5mbyA9PiAnRkFRIGxhbmd1YWdlIGFkZGVkIScsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBkZWxldGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEZWxldGUnICYmICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBMYW5ndWFnZUlECiAgICAgICAgbXkgJExhbmd1YWdlSUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdMYW5ndWFnZUlEJyApIHx8ICcnOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICdObyBMYW5ndWFnZUlEIGlzIGdpdmVuIScsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGFuZ3VhZ2UgZGF0YQogICAgICAgIG15ICVMYW5ndWFnZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlR2V0KAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElTGFuZ3VhZ2VEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgbXkgQEFmZmVjdGVkSXRlbXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVNlYXJjaCgKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gWyRMYW5ndWFnZUlEXSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNhbGwgRGVsZXRlIGJsb2NrCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVsZXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JUxhbmd1YWdlRGF0YX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgdGhlIGRpYWxvZyB0eXBlLiBBcyBkZWZhdWx0LCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgICAgICBteSAkRGlhbG9nVHlwZSA9ICdDb25maXJtYXRpb24nOwoKICAgICAgICAjIGRpc3BsYXkgbGlzdCBvZiBhZmZlY3RlZCBGQVEgYXJ0aWNsZXMKICAgICAgICBpZiAoQEFmZmVjdGVkSXRlbXMpIHsKCiAgICAgICAgICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZSB0byBoYXZlIG9ubHkgMSBidXR0b246IE9rCiAgICAgICAgICAgICREaWFsb2dUeXBlID0gJ01lc3NhZ2UnOwoKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkSXRlbXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIElURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBBZmZlY3RlZEl0ZW1zKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZmFxIGFydGljbGUKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmYXEgYXJ0aWNsZQogICAgICAgICAgICAgICAgbmV4dCBJVEVNSUQgaWYgISVGQVFEYXRhOwoKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtc1JvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0FmZmVjdGVkSXRlbXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUxhbmd1YWdlRGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG91dHB1dCBjb250ZW50CiAgICAgICAgbXkgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHt9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlCiAgICAgICAgbXkgJURhdGEgPSAoCiAgICAgICAgICAgIEhUTUwgICAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgRGlhbG9nVHlwZSA9PiAkRGlhbG9nVHlwZSwKICAgICAgICApOwoKICAgICAgICAjIHJldHVybiBKU09OLVN0cmluZyBiZWNhdXNlIG9mIEFKQVgtTW9kZQogICAgICAgIG15ICRPdXRwdXRKU09OID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57Q2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXRKU09OLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgZGVsZXRlIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZUFjdGlvbicgJiYgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIExhbmd1YWdlSUQKICAgICAgICBteSAkTGFuZ3VhZ2VJRCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhbmd1YWdlSUQnICkgfHwgJyc7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRMYW5ndWFnZUlEICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsYW5ndWFnZSBkYXRhCiAgICAgICAgbXkgJUxhbmd1YWdlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVMYW5ndWFnZURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UKICAgICAgICBteSAkQ291bGREZWxldGVMYW5ndWFnZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VEZWxldGUoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ291bGREZWxldGVMYW5ndWFnZSkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBleHBsb3Jlciwgd2hlbiB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc2hvdyBlcnJvciBtZXNzYWdlLCB3aGVuIGRlbGV0ZSBmYWlsZWQKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAkTGFuZ3VhZ2VJRCEiLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgb3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgJFNlbGYtPl9PdmVydmlldygpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgX0VkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkxpc3QnICk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdBY3Rpb25PdmVydmlldycgKTsKCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VXBkYXRlJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgc2hvd3MgaGVhZGVyCiAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICdDaGFuZ2UnICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0hlYWRlckVkaXQnICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdIZWFkZXJBZGQnICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfT3ZlcnZpZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0ID0gJyc7CgogICAgIyBvdXRwdXQgb3ZlcnZpZXcgYmxvY2tzCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdPdmVydmlldycgKTsKCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uTGlzdCcgKTsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdBY3Rpb25BZGQnICk7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHQnICk7CgogICAgICAgICMgZ2V0IGxhbmd1YWdlcyBsaXN0CiAgICAgICAgbXkgJUxhbmd1YWdlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIGFueSBsYW5ndWFnZXMsIHRoZXkgYXJlIHNob3duCiAgICAgICAgaWYgKCVMYW5ndWFnZXMpIHsKICAgICAgICAgICAgZm9yIG15ICRMYW5ndWFnZUlEICggc29ydCB7ICRMYW5ndWFnZXN7JGF9IGNtcCAkTGFuZ3VhZ2VzeyRifSB9IGtleXMgJUxhbmd1YWdlcyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBsYW5ndWFnZXMgcmVzdWx0CiAgICAgICAgICAgICAgICBteSAlTGFuZ3VhZ2VEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUdldCgKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjb3V0cHV0IHJlc3VsdHMKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHRSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVMYW5ndWFnZURhdGF9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1zZyBpcyBkaXNwbGF5ZWQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnTm9EYXRhRm91bmRNc2cnICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnRGlzYWJsZWQnICk7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0gLSBwcmludCBsYXlvdXQgZm9yIGFnZW50IGludGVyZmFjZQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudEZBUVByaW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHM7CnVzZSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpQREY7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBRdWV1ZU9iamVjdCBDb25maWdPYmplY3QgVXNlck9iamVjdCBNYWluT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntMaW5rT2JqZWN0fSAgICAgID0gS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntQREZPYmplY3R9ICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlBERi0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgZGVmYXVsdCBvcHRpb25zCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwogICAgJFNlbGYtPntWb3Rpbmd9ICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScsCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBJdGVtSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgIG15ICRQZXJtaXNzaW9uID0gJFNlbGYtPntGQVFPYmplY3R9LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbGlua2VkIG9iamVjdHMKICAgIG15ICRMaW5rTGlzdFdpdGhEYXRhID0gJFNlbGYtPntMaW5rT2JqZWN0fS0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICBPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdHlwZSBsaXN0CiAgICBteSAlTGlua1R5cGVMaXN0ID0gJFNlbGYtPntMaW5rT2JqZWN0fS0+VHlwZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIGxpbmsgZGF0YQogICAgbXkgJUxpbmtEYXRhOwogICAgaWYgKCAkTGlua0xpc3RXaXRoRGF0YSAmJiByZWYgJExpbmtMaXN0V2l0aERhdGEgZXEgJ0hBU0gnICYmICV7JExpbmtMaXN0V2l0aERhdGF9ICkgewogICAgICAgICVMaW5rRGF0YSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgICAgICBMaW5rTGlzdFdpdGhEYXRhID0+ICRMaW5rTGlzdFdpdGhEYXRhLAogICAgICAgICAgICBWaWV3TW9kZSAgICAgICAgID0+ICdTaW1wbGVSYXcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIGZpZWxkcyBkYXRhCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgbm8gcXVvdGluZyBpZiBodG1sIHZpZXcgaXMgZW5hYmxlZAogICAgICAgIG5leHQgRklFTEQgaWYgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICAgICAjIGh0bWwgcXVvdGluZwogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIE5ld0xpbmUgICAgICAgID0+IDAsCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgICAgIFZNYXggICAgICAgICAgID0+IDUwMDAsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VyIGluZm8gKENyZWF0ZWRCeSkKICAgIG15ICVVc2VySW5mbyA9ICRTZWxmLT57VXNlck9iamVjdH0tPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkRkFRRGF0YXtDcmVhdGVkQnl9CiAgICApOwogICAgJFBhcmFte0NyZWF0ZWRCeUxvZ2lufSA9ICRVc2VySW5mb3tVc2VyTG9naW59OwoKICAgICMgZ2V0IHVzZXIgaW5mbyAoQ2hhbmdlZEJ5KQogICAgJVVzZXJJbmZvID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRGQVFEYXRhe0NoYW5nZWRCeX0KICAgICk7CiAgICAkUGFyYW17Q2hhbmdlZEJ5TG9naW59ID0gJFVzZXJJbmZve1VzZXJMb2dpbn07CgogICAgIyBnZW5lcmF0ZSBwZGYgb3V0cHV0CiAgICBpZiAoICRTZWxmLT57UERGT2JqZWN0fSApIHsKICAgICAgICBteSAkUHJpbnRlZEJ5ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ3ByaW50ZWQgYnknKTsKICAgICAgICBteSAkVGltZSAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoIFRlbXBsYXRlID0+ICckRW52eyJUaW1lIn0nICk7CiAgICAgICAgbXkgJFVybCAgICAgICA9ICcgJzsKICAgICAgICBpZiAoICRFTlZ7UkVRVUVTVF9VUkl9ICkgewogICAgICAgICAgICAkVXJsID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0h0dHBUeXBlJykgLiAnOi8vJwogICAgICAgICAgICAgICAgLiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRlFETicpCiAgICAgICAgICAgICAgICAuICRFTlZ7UkVRVUVTVF9VUkl9OwogICAgICAgIH0KICAgICAgICBteSAlUGFnZTsKCiAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAkUGFnZXtNYXhQYWdlc30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgICAgIGlmICggISRQYWdle01heFBhZ2VzfSB8fCAkUGFnZXtNYXhQYWdlc30gPCAxIHx8ICRQYWdle01heFBhZ2VzfSA+IDEwMDAgKSB7CiAgICAgICAgICAgICRQYWdle01heFBhZ2VzfSA9IDEwMDsKICAgICAgICB9CiAgICAgICAgbXkgJEhlYWRlclJpZ2h0ICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKSAuICRGQVFEYXRhe051bWJlcn07CiAgICAgICAgbXkgJEhlYWRsaW5lTGVmdCA9ICRIZWFkZXJSaWdodDsKICAgICAgICBteSAkVGl0bGUgICAgICAgID0gJEhlYWRlclJpZ2h0OwogICAgICAgIGlmICggJEZBUURhdGF7VGl0bGV9ICkgewogICAgICAgICAgICAkSGVhZGxpbmVMZWZ0ID0gJEZBUURhdGF7VGl0bGV9OwogICAgICAgICAgICAkVGl0bGUgLj0gJyAvICcgLiAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgfQoKICAgICAgICAkUGFnZXtNYXJnaW5Ub3B9ICAgICA9IDMwOwogICAgICAgICRQYWdle01hcmdpblJpZ2h0fSAgID0gNDA7CiAgICAgICAgJFBhZ2V7TWFyZ2luQm90dG9tfSAgPSA0MDsKICAgICAgICAkUGFnZXtNYXJnaW5MZWZ0fSAgICA9IDQwOwogICAgICAgICRQYWdle0hlYWRlclJpZ2h0fSAgID0gJEhlYWRlclJpZ2h0OwogICAgICAgICRQYWdle0hlYWRsaW5lTGVmdH0gID0gJEhlYWRsaW5lTGVmdDsKICAgICAgICAkUGFnZXtIZWFkbGluZVJpZ2h0fSA9ICRQcmludGVkQnkgLiAnICcKICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJGaXJzdG5hbWV9IC4gJyAnCiAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyTGFzdG5hbWV9IC4gJyAoJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckVtYWlsfSAuICcpICcKICAgICAgICAgICAgLiAkVGltZTsKICAgICAgICAkUGFnZXtGb290ZXJMZWZ0fSA9ICRVcmw7CiAgICAgICAgJFBhZ2V7UGFnZVRleHR9ICAgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnUGFnZScpOwogICAgICAgICRQYWdle1BhZ2VDb3VudH0gID0gMTsKCiAgICAgICAgIyBjcmVhdGUgbmV3IHBkZiBkb2N1bWVudAogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+RG9jdW1lbnROZXcoCiAgICAgICAgICAgIFRpdGxlICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICAgICAgRW5jb2RlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJDaGFyc2V0fSwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBmaXJzdCBwZGYgcGFnZQogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgKTsKICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CgogICAgICAgICMgdHlwZSBvZiBwcmludCB0YWcKICAgICAgICBteSAkUHJpbnRUYWcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnRkFRIEFydGljbGUgUHJpbnQnKTsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRQcmludFRhZywKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gOSwKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkJywKICAgICAgICAgICAgQWxpZ24gICAgPT4gJ3JpZ2h0JywKICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC02LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGZhcSBpbmZvcm1hdGlvbgogICAgICAgICRTZWxmLT5fUERGT3V0cHV0RkFRSGVhZGVySW5mbygKICAgICAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CiAgICAgICAgICAgICRTZWxmLT5fUERGT3V0cHV0S2V5d29yZHMoCiAgICAgICAgICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X1BERk91cHV0RkFRQ29udGVudCgKICAgICAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgbGlua2VkIG9iamVjdHMKICAgICAgICBpZiAoJUxpbmtEYXRhKSB7CiAgICAgICAgICAgICRTZWxmLT5fUERGT3V0cHV0TGlua2VkT2JqZWN0cygKICAgICAgICAgICAgICAgIFBhZ2VEYXRhICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgICAgICBMaW5rRGF0YSAgICAgPT4gXCVMaW5rRGF0YSwKICAgICAgICAgICAgICAgIExpbmtUeXBlTGlzdCA9PiBcJUxpbmtUeXBlTGlzdCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmV0dXJuIHRoZSBwZGYgZG9jdW1lbnQKICAgICAgICBteSAkRmlsZW5hbWUgPSAnRkFRXycgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKSwKICAgICAgICApOwogICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICREID0gc3ByaW50ZiggIiUwMmQiLCAkRCApOwogICAgICAgICRoID0gc3ByaW50ZiggIiUwMmQiLCAkaCApOwogICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgIG15ICRQREZTdHJpbmcgPSAkU2VsZi0+e1BERk9iamVjdH0tPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFBERlN0cmluZywKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBodG1sIG91dHB1dAogICAgZWxzZSB7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEhlYWRlciggVmFsdWUgPT4gJEZBUURhdGF7TnVtYmVyfSApOwoKICAgICAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUUNvbnRlbnRTaG93KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBGQVFEYXRhICAgICAgICAgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJUxpbmtEYXRhKSB7CgogICAgICAgICAgICAjIG91dHB1dCBsaW5rIGRhdGEKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmsnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRMaW5rVHlwZUxpbmtEaXJlY3Rpb24gKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAlTGlua0RhdGEgKSB7CgogICAgICAgICAgICAgICAgIyBpbnZlc3RpZ2F0ZSBsaW5rIHR5cGUgbmFtZQogICAgICAgICAgICAgICAgbXkgQExpbmtEYXRhID0gc3BsaXQgcXs6On0sICRMaW5rVHlwZUxpbmtEaXJlY3Rpb247CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgbGluayB0eXBlIGRhdGEKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnTGlua1R5cGUnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZU5hbWUgPT4gJExpbmtUeXBlTGlzdHsgJExpbmtEYXRhWzBdIH0tPnsgJExpbmtEYXRhWzFdIC4gJ05hbWUnIH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IG9iamVjdCBsaXN0CiAgICAgICAgICAgICAgICBteSAkT2JqZWN0TGlzdCA9ICRMaW5rRGF0YXskTGlua1R5cGVMaW5rRGlyZWN0aW9ufTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7JE9iamVjdExpc3R9ICkgewoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkT2JqZWN0TGlzdC0+eyRPYmplY3R9IH0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG91dHB1dCBsaW5rIHR5cGUgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnTGlua1R5cGVSb3cnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua1N0cmcgPT4gJEl0ZW0tPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGZhcQogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9IVE1MTWFzaygKICAgICAgICAgICAgRkFRSUQgPT4gJEdldFBhcmFte0ZBUUlEfSwKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlVXNlckluZm8sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICk7CgogICAgICAgICMgYWRkIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEZvb3RlcigpOwoKICAgICAgICAjIHJldHVybiBvdXRwdXQKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9QREZPdXRwdXRGQVFIZWFkZXJJbmZvIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICAjIGNyZWF0ZSBsZWZ0IHRhYmxlCiAgICBteSAkVGFibGVMZWZ0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0NhdGVnb3J5JykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9ICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdTdGF0ZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7U3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgIyBsYW5ndWFnZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgIG15ICRSb3cgPSB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdMYW5ndWFnZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7TGFuZ3VhZ2V9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBhcHByb3ZhbCBzdGF0ZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CiAgICAgICAgJEZBUURhdGF7QXBwcm92YWx9ID0gJEZBUURhdGF7QXBwcm92ZWR9ID8gJ1llcycgOiAnTm8nOwogICAgICAgIG15ICRSb3cgPSB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdBcHByb3ZhbCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7QXBwcm92YWx9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBjcmVhdGUgcmlnaHQgdGFibGUKICAgIG15ICRUYWJsZVJpZ2h0OwoKICAgICMgdm90aW5nIHJvd3MsIGZlYXRyZSBpcyBlbmFibGVkCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkVGFibGVSaWdodCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1ZvdGVzJykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdSZXN1bHQnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9IC4gIiAlIiwKICAgICAgICAgICAgfSwKICAgICAgICBdOwogICAgfQoKICAgICMgbGFzdCB1cGRhdGUgcm93CiAgICBwdXNoIEB7JFRhYmxlUmlnaHR9LCB7CiAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0xhc3QgdXBkYXRlJykgLiAnOicsCiAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlID0+ICckVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifScsCiAgICAgICAgICAgIERhdGEgICAgID0+IFwlRkFRRGF0YSwKICAgICAgICApLAogICAgfTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0FBQUFBQSc7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JPZGR9ICA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFNlbGYtPntQREZPYmplY3R9LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0TGlua2VkT2JqZWN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgTGlua0RhdGEgTGlua1R5cGVMaXN0KSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZSAgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVHlwZUxpc3QgPSAleyAkUGFyYW17TGlua1R5cGVMaXN0fSB9OwogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICBmb3IgbXkgJExpbmtUeXBlTGlua0RpcmVjdGlvbiAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7ICRQYXJhbXtMaW5rRGF0YX0gfSApIHsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBsaW5rIHR5cGUgbmFtZQogICAgICAgIG15IEBMaW5rRGF0YSA9IHNwbGl0IHF7Ojp9LCAkTGlua1R5cGVMaW5rRGlyZWN0aW9uOwogICAgICAgIG15ICRMaW5rVHlwZU5hbWUgPSAkVHlwZUxpc3R7ICRMaW5rRGF0YVswXSB9LT57ICRMaW5rRGF0YVsxXSAuICdOYW1lJyB9OwogICAgICAgICRMaW5rVHlwZU5hbWUgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgkTGlua1R5cGVOYW1lKTsKCiAgICAgICAgIyBkZWZpbmUgaGVhZGxpbmUKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gPSAkTGlua1R5cGVOYW1lIC4gJzonOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAnJzsKCiAgICAgICAgIyBleHRyYWN0IG9iamVjdCBsaXN0CiAgICAgICAgbXkgJE9iamVjdExpc3QgPSAkUGFyYW17TGlua0RhdGF9LT57JExpbmtUeXBlTGlua0RpcmVjdGlvbn07CgogICAgICAgIGZvciBteSAkT2JqZWN0ICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJXskT2JqZWN0TGlzdH0gKSB7CgogICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkT2JqZWN0TGlzdC0+eyRPYmplY3R9IH0gKSB7CgogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9IHx8PSAnJzsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRJdGVtLT57VGl0bGV9IHx8ICcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnRpbnVlIHsKICAgICAgICAgICAgICAgICRSb3crKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQzMTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0xpbmtlZCBPYmplY3RzJyksCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRTZWxmLT57UERGT2JqZWN0fS0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dEtleXdvcmRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUYWJsZVBhcmFtOwoKICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVswXVswXXtDb250ZW50fSA9ICRGQVFEYXRhe0tleXdvcmRzfSB8fCAnJzsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDUxMTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0tleXdvcmRzJyksCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRTZWxmLT57UERGT2JqZWN0fS0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91cHV0RkFRQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgZ2V0IHRoZSBjb25maWcgb2YgRkFRIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgbXkgJUZpZWxkczsKICAgIEZJRUxEOgogICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBGQVEgZmllbGQKICAgICAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBza2lwIG92ZXIgbm90IHNob3duIGZpZWxkcwogICAgICAgIG5leHQgRklFTEQgaWYgISRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBzdG9yZSBvbmx5IHRoZSBjb25maWcgb2YgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgJEZpZWxkc3sgIkZpZWxkIiAuICROdW1iZXIgfSA9ICRDb25maWc7CiAgICB9CgogICAgIyBzb3J0IHNob3duIGZpZWxkcyBieSBwcmlvcml0eQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZAogICAgICAgIG15ICRTdGF0ZVR5cGVEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkRmllbGRzeyRGaWVsZH0tPntTaG93fSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSAlVGFibGVQYXJhbTsKCiAgICAgICAgIyBjb252ZXJ0IEhUTUwgdG8gYXNjaWkKICAgICAgICBteSAkQXNjaWlGaWVsZCA9ICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fS0+VG9Bc2NpaSggU3RyaW5nID0+ICRGQVFEYXRheyRGaWVsZH0gKTsKCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WzBdWzBde0NvbnRlbnR9ID0gJEFzY2lpRmllbGQgfHwgJyc7CiAgICAgICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gNTExOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtMTUsCiAgICAgICAgKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGZpZWxkIG5hbWUgYW5kIHN0YXRlCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRmllbGRzeyRGaWVsZH0tPnsnQ2FwdGlvbid9ICkKICAgICAgICAgICAgLiAnICgnCiAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRTdGF0ZVR5cGVEYXRhLT57TmFtZX0gKQogICAgICAgICAgICAuICcpJzsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFNlbGYtPntQREZPYmplY3R9LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfSFRNTE1hc2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNob3cgTGFuZ3VhZ2UKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgYXBwcm92YWwgc3RhdGUKICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewogICAgICAgICRQYXJhbXtBcHByb3ZhbH0gPSAkUGFyYW17QXBwcm92ZWR9ID8gJ1llcycgOiAnTm8nOwogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1ByaW50QXBwcm92YWwnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgcmF0aW5nCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSYXRpbmcnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVByaW50JywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0gLSB0byBoYW5kbGUgQUpBWCByZXF1ZXN0cyBmb3IgaW5zZXJ0aW5nIHRoZSByaWNodGV4dCBvZiBhbiBGQVEKIyBhcnRpY2xlIGludG8gYSB0aWNrZXQgYXJ0aWNsZQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudEZBUVJpY2hUZXh0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NCBxdygpOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXI7CnVzZSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzOwp1c2UgS2VybmVsOjpTeXN0ZW06OkpTT047CnVzZSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0KSkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIgKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0N1c3RvbWVyVXNlck9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fSAgICA9IEtlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntKU09OT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkpTT04tPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUtPm5ldyglUGFyYW0pOwoKICAgICMgZ2V0IGZvcm0gaWQKICAgICRTZWxmLT57Rm9ybUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKCiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoICEkU2VsZi0+e0Zvcm1JRH0gKSB7CiAgICAgICAgJFNlbGYtPntGb3JtSUR9ID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkS2V5IChxdyhJdGVtSUQpKSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkS2V5ICk7CiAgICAgICAgaWYgKCAhJEdldFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIk5vICRLZXkgaXMgZ2l2ZW4hIiwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aGUgcmVxdWVzdGVkIEZBUSBpdGVtCiAgICBteSAlRkFRSXRlbSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAkU2NyaXB0QWxpYXMgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnU2NyaXB0QWxpYXMnKSB8fCAnb3Rycy8nOwogICAgbXkgJFVSTFJlZ2V4ID0gJy8nIC4gJFNjcmlwdEFsaWFzIC4gJ2luZGV4LnBsXD9BY3Rpb249QWdlbnRGQVFab29tOycKICAgICAgICAuICdTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD0nIC4gJEdldFBhcmFte0l0ZW1JRH0gLiAnO0ZpbGVJRD1bMC05XSsnOwogICAgbXkgJEVsZW1SZWdleCA9ICdzcmM9IignIC4gJFVSTFJlZ2V4IC4gJykiJzsKCiAgICBteSBARmllbGRzOwoKICAgIG15ICRMb2FkZWQgPSAkU2VsZi0+e01haW5PYmplY3R9LT5SZXF1aXJlKAogICAgICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICk7CgogICAgaWYgKCAhJExvYWRlZCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ2FuIG5vdCBsb2FkIExhbmd1YWdlT2JqZWN0IScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEZBUUxhbmd1YWdlT2JqZWN0ID0gS2VybmVsOjpMYW5ndWFnZS0+bmV3KAogICAgICAgICV7JFNlbGZ9LAogICAgICAgIFVzZXJMYW5ndWFnZSA9PiAkRkFRSXRlbXtMYW5ndWFnZX0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVGlja2V0IENvbXBvc2UKICAgIG15ICRUaWNrZXRDb21wb3NlQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6VGlja2V0Q29tcG9zZScpOwoKICAgICMgZ2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0eXBlCiAgICBteSAkSW50ZXJuYWxTdGF0ZVR5cGUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgaW50ZXJuYWwgc3RhdGUgdHlwZSBJRAogICAgbXkgJEludGVybmFsU3RhdGVJRCA9ICRJbnRlcm5hbFN0YXRlVHlwZS0+e1N0YXRlSUR9OwoKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBkb24ndCB3YXN0ZSBhbnkgZnVydGhlciBwcm9jZXNzaW5nIHBvd2VyLCBpZiB0aGUgY3VycmVudCBmaWVsZCBkb2Vzbid0IGhhdmUgYW55IGNvbnRlbnQKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRSXRlbXsgJ0ZpZWxkJyAuICRGaWVsZCB9OwoKICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJEZBUUl0ZW17ICdGaWVsZCcgLiAkRmllbGQgfTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIGN1cnJlbnQgRkFRIGZpZWxkIGZyb20gU3lzQ29uZmlnCiAgICAgICAgbXkgJEZpZWxkQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICRGaWVsZCApOwoKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGRDb25maWc7CiAgICAgICAgbmV4dCBGSUVMRCBpZiByZWYgJEZpZWxkQ29uZmlnIG5lICdIQVNIJzsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBnZXQgdGhlIHN0YXRlIHR5cGUgZGF0YSBvZiB0aGlzIGZpZWxkCiAgICAgICAgbXkgJFN0YXRlVHlwZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRGaWVsZENvbmZpZy0+e1Nob3d9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgY3VycmVudCBmaWVsZCBpcyBpbnRlcm5hbAogICAgICAgIG15ICRJc0ludGVybmFsOwogICAgICAgIGlmICggJFN0YXRlVHlwZURhdGEtPntTdGF0ZUlEfSA9PSAkSW50ZXJuYWxTdGF0ZUlEICkgewogICAgICAgICAgICAkSXNJbnRlcm5hbCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgZmllbGQgc2hvdWxkIGJlIHZpc2libGUgdG8gdGhlIHB1YmxpYywgdGh1cyBiZSBpbnNlcnRlZCBpbnRvIGEKICAgICAgICAjIHJlc3BvbnNlIHRvIGEgY3VzdG9tZXIgb3Igbm90CiAgICAgICAgaWYgKCAhJFRpY2tldENvbXBvc2VDb25maWctPntJbmNsdWRlSW50ZXJuYWx9ICYmICRJc0ludGVybmFsICkgewogICAgICAgICAgICBuZXh0IEZJRUxEOwogICAgICAgIH0KCiAgICAgICAgIyBleHRyYWN0IGFsbCBVUkxzIHdoaWNoIHBvaW50IHRvIGFuIGVtYmVkZGVkIGltYWdlCiAgICAgICAgbXkgQE1hdGNoZWRVUkxzID0gKCAkRmllbGRDb250ZW50ID1+IG17JEVsZW1SZWdleH14Z21zICk7CiAgICAgICAgZm9yIG15ICRVUkwgKEBNYXRjaGVkVVJMcykgewoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBpZCBvZiB0aGUgYXR0YWNobWVudAogICAgICAgICAgICBteSAoJEZpbGVJRCkgPSAkVVJMID1+IG17IEZpbGVJRD0oWzAtOV0rKSB9bXN4OwoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmlsZUlEOiAkRmlsZUlEIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHRoZSBhdHRhY2htZW50IHRvIHdoaWNoIHRoZSBjdXJyZW50IFVSTCBwb2ludHMKICAgICAgICAgICAgbXkgJUF0dGFjaG1lbnQgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJEZpbGVJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAQXR0YWNobWVudE1ldGEgPSAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRGaWxlbmFtZVRtcCAgICA9ICRBdHRhY2htZW50e0ZpbGVuYW1lfTsKICAgICAgICAgICAgbXkgJFN1ZmZpeFRtcCAgICAgID0gMDsKICAgICAgICAgICAgbXkgJFVuaXF1ZUZpbGVuYW1lID0gJyc7CgogICAgICAgICAgICAjIGNyZWF0ZSBub3cgYW4gYXJ0aWNsZSBhdHRhY2htZW50IChpbmxpbmUpIGJhc2VkIG9uIHRoZSBkYXRhIG9mICVBdHRhY2htZW50IChGQVEpCiAgICAgICAgICAgIGlmICglQXR0YWNobWVudCkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgbmFtZSBhbHJlYWR5IGV4aXN0cwogICAgICAgICAgICAgICAgd2hpbGUgKCAhJFVuaXF1ZUZpbGVuYW1lICkgewogICAgICAgICAgICAgICAgICAgICRVbmlxdWVGaWxlbmFtZSA9ICRGaWxlbmFtZVRtcDsKICAgICAgICAgICAgICAgICAgICBORVdOQU1FOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIHJldmVyc2UgQEF0dGFjaG1lbnRNZXRhICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IE5FV05BTUUgaWYgJEZpbGVuYW1lVG1wIG5lICRBdHRhY2htZW50LT57RmlsZW5hbWV9OwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBuYW1lIGV4aXN0cyAtPiBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgKyskU3VmZml4VG1wOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRBdHRhY2htZW50e0ZpbGVuYW1lfSA9fiBte1xBICguKikgXC4gKC4rPykgXHp9bXN4ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpbGVuYW1lVG1wID0gIiQxLSRTdWZmaXhUbXAuJDIiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpbGVuYW1lVG1wID0gIiRBdHRhY2htZW50e0ZpbGVuYW1lfS0kU3VmZml4VG1wIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkVW5pcXVlRmlsZW5hbWUgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBORVdOQU1FOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQXR0YWNobWVudHtGaWxlbmFtZX0gPSAkRmlsZW5hbWVUbXA7CiAgICAgICAgICAgICAgICBkZWxldGUgJEF0dGFjaG1lbnR7Q29udGVudElEfTsKCiAgICAgICAgICAgICAgICAjIGFkZCB0aGUgYXR0YWNobWVudCB0byB0aGUgdXBsb2FkIGNhY2hlIG9mIHRoZSBjdXJyZW50IHRpY2tldAogICAgICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdpbmxpbmUnLAogICAgICAgICAgICAgICAgICAgICVBdHRhY2htZW50LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkblwndCBnZXQgRkFRIGF0dGFjaG1lbnQgJwogICAgICAgICAgICAgICAgICAgICAgICAuICIoSXRlbUlEOiAkR2V0UGFyYW17SXRlbUlEfSwgRmlsZUlEOiAkRmlsZUlEKSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IG5ldyBjb250ZW50IGlkCiAgICAgICAgICAgIG15ICRDb250ZW50SUROZXcgPSAnJzsKICAgICAgICAgICAgQEF0dGFjaG1lbnRNZXRhID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50TWV0YSkgewogICAgICAgICAgICAgICAgbmV4dCBpZiAkRmlsZW5hbWVUbXAgbmUgJEF0dGFjaG1lbnQtPntGaWxlbmFtZX07CiAgICAgICAgICAgICAgICAkQ29udGVudElETmV3ID0gJEF0dGFjaG1lbnQtPntDb250ZW50SUR9OwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkQ29udGVudElETmV3IGVxICcnICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGRuJ3QgZGV0ZXJtaW5lIGEgbmV3IENvbnRlbnRJRCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgYWN0dWFsIE1JTUUgdHlwZSBmcm9tIHRoZSBjb250ZW50dHlwZSwgd2hpY2ggYWxzbyBjb250YWlucyB0aGUgZmlsZW5hbWUKICAgICAgICAgICAgbXkgKCRNaW1lVHlwZSkgPSAkQXR0YWNobWVudHtDb250ZW50VHlwZX0gPX4gbXteKC4rLy4rKTsgWyBdIG5hbWU9LiskfXhtczsKCiAgICAgICAgICAgIG15ICRTZXNzaW9uID0gJyc7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntTZXNzaW9uSUR9ICYmICEkU2VsZi0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgICAgICAgICAkU2Vzc2lvbiA9ICcmJyAuICRTZWxmLT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJFNlbGYtPntTZXNzaW9uSUR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNyZWF0ZSB0aGUgbmV3IGlubGluZSBpbWFnZSBVUkwKICAgICAgICAgICAgbXkgJElubGluZUltYWdlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAuICJBY3Rpb249UGljdHVyZVVwbG9hZDtGb3JtSUQ9JFNlbGYtPntGb3JtSUR9O0NvbnRlbnRJRD0kQ29udGVudElETmV3JFNlc3Npb24iOwoKICAgICAgICAgICAgIyByZXBsYWNlIHRoZSBpbWFnZSBVUkwgd2l0aCB0aGUgaW5saW5lIGltYWdlCiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3tcUSRVUkxcRX17JElubGluZUltYWdlfXhtczsKICAgICAgICB9CgogICAgICAgICMgYWRkIHRoZSBuYW1lIG9mIHRoZSBmaWVsZCBhcyBoZWFkZXIKICAgICAgICBpZiAoICRGaWVsZENvbmZpZy0+e0NhcHRpb259ICYmICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0ZpZWxkTmFtZXN9ICkgewoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNhcHRpb24gdG8gdGhlIGxhbmd1YWdlIG9mIHRoZSBGQVEgaXRlbQogICAgICAgICAgICBteSAkVHJhbnNsYXRlZENhcHRpb24gPSAkRkFRTGFuZ3VhZ2VPYmplY3QtPkdldCggJEZpZWxkQ29uZmlnLT57Q2FwdGlvbn0gKTsKCiAgICAgICAgICAgIGlmICgkVHJhbnNsYXRlZENhcHRpb24pIHsKICAgICAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAnPGgyPicgLiAkVHJhbnNsYXRlZENhcHRpb24gLiAnOjwvaDI+JyAuICRGaWVsZENvbnRlbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHVzaCBARmllbGRzLCAkRmllbGRDb250ZW50OwogICAgfQoKICAgIG15ICRGQVFIVE1MID0gam9pbiggJzxiciAvPicsIEBGaWVsZHMgKTsKCiAgICAjIGdldCBhbGwgbm9uLWlubGluZSBhdHRhY2htZW50cyBvZiB0aGUgRkFRIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgU2hvd0lubGluZSA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBmb3IgbXkgJEF0dGFjaG1lbnREYXRhIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgIyBnZXQgdGhlIGF0dGFjaG1lbnQKICAgICAgICBteSAlQXR0YWNobWVudCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJUF0dGFjaG1lbnQpIHsKCiAgICAgICAgICAgICMgYWRkIHRoZSBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUgb2YgdGhlIGN1cnJlbnQgdGlja2V0CiAgICAgICAgICAgICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICVBdHRhY2htZW50LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkblwndCBnZXQgRkFRIGF0dGFjaG1lbnQgJwogICAgICAgICAgICAgICAgICAgIC4gIihJdGVtSUQ6ICRHZXRQYXJhbXtJdGVtSUR9LCBGaWxlSUQ6ICRBdHRhY2htZW50RGF0YS0+e0ZpbGVJRH0pISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2VuZCBhIGxpc3Qgb2YgYXR0YWNobWVudHMgaW4gdGhlIHVwbG9hZCBjYWNoZSBiYWNrIHRvIHRoZSBjbGllbnRzaWRlIEphdmFTY3JpcHQgd2hpY2ggcmVuZGVycwogICAgIyB0aGVuIHRoZSBsaXN0IG9mIGN1cnJlbnRseSB1cGxvYWRlZCBhdHRhY2htZW50cwogICAgbXkgQFRpY2tldEF0dGFjaG1lbnRzID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgKTsKCiAgICBteSBARmlsdGVyZWRUaWNrZXRBdHRhY2htZW50czsKCiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKSApIHsKCiAgICAgICAgIyByZW1vdmUgdGhlIGlubGluZS1hdHRhY2htZW50cyB3aGljaCBzaG91bGRuJ3QgYmUgc2hvd24gaW4gdGhlIHJlZ3VsYXIgYXR0YWNobWVudCBsaXN0CiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBUaWNrZXRBdHRhY2htZW50cykgewogICAgICAgICAgICBpZiAoIGRlZmluZWQgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICYmICRBdHRhY2htZW50LT57Q29udGVudElEfSA9fiBte1xBIGlubGluZX1tc3ggKSB7CiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBARmlsdGVyZWRUaWNrZXRBdHRhY2htZW50cywgJEF0dGFjaG1lbnQ7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgaWYgcmljaHRleHQgaXMgbm90IGFjdGl2ZSB0aGVuIHNldCBhbHNvIGlubGluZSBhdHRhY2htZW50cyBhcyByZWd1bGFyIGF0dGFjaG1lbnRzCiAgICAgICAgQEZpbHRlcmVkVGlja2V0QXR0YWNobWVudHMgPSBAVGlja2V0QXR0YWNobWVudHM7CiAgICB9CgogICAgIyBjcmVhdGUgYSBKU09OIHN0cmluZwogICAgbXkgJEpTT04gPSAkU2VsZi0+e0pTT05PYmplY3R9LT5FbmNvZGUoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEZBUVRpdGxlICAgICAgICAgID0+ICRGQVFJdGVte1RpdGxlfSwKICAgICAgICAgICAgRkFRQ29udGVudCAgICAgICAgPT4gJFNlbGYtPntIVE1MVXRpbHNPYmplY3R9LT5Ub0FzY2lpKCBTdHJpbmcgPT4gJEZBUUhUTUwgKSB8fCAnJywKICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgICAgPT4gJEZBUUhUTUwsCiAgICAgICAgICAgIFRpY2tldEF0dGFjaG1lbnRzID0+IFxARmlsdGVyZWRUaWNrZXRBdHRhY2htZW50cywKICAgICAgICAgICAgTG9jYWxpemF0aW9uICAgICAgPT4gewogICAgICAgICAgICAgICAgRGVsZXRlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdEZWxldGUnKSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgKTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtIC0gbW9kdWxlIGZvciBGQVEgc2VhcmNoCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CnVzZSBLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpDU1Y7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgVXNlck9iamVjdCBHcm91cE9iamVjdCBDb25maWdPYmplY3QgTWFpbk9iamVjdCBFbmNvZGVPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NTVk9iamVjdH0gICAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkNTVi0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgZm9yIGZyb250ZW5kCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBjb25maWcgZGF0YQogICAgJFNlbGYtPntTdGFydEhpdH0gPSBpbnQoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9IHx8IDUwMDsKICAgICRTZWxmLT57U29ydEJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwogICAgJFNlbGYtPntQcm9maWxlfSAgICAgICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdQcm9maWxlJyApICAgICAgICB8fCAnJzsKICAgICRTZWxmLT57U2F2ZVByb2ZpbGV9ICAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgICAgfHwgJyc7CiAgICAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rha2VMYXN0U2VhcmNoJyApIHx8ICcnOwogICAgJFNlbGYtPntTZWxlY3RUZW1wbGF0ZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWxlY3RUZW1wbGF0ZScgKSB8fCAnJzsKICAgICRTZWxmLT57RXJhc2VUZW1wbGF0ZX0gID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnRXJhc2VUZW1wbGF0ZScgKSAgfHwgJyc7CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IEZBUSBudW1iZXIKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlci54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBmdWxsdGV4dAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0LnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZWFyY2ggd2l0aCBhIHNhdmVkIHRlbXBsYXRlCiAgICBpZiAoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaFRlbXBsYXRlJyApICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7VGFrZUxhc3RTZWFyY2g9MTtTYXZlUHJvZmlsZT0xO1Byb2ZpbGU9JFNlbGYtPntQcm9maWxlfSIKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNpbmdsZSBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGxvYWQgcHJvZmlsZXMgc3RyaW5nIHBhcmFtcyAocHJlc3MgbG9hZCBwcm9maWxlKQogICAgaWYgKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTG9hZFByb2ZpbGUnICYmICRTZWxmLT57UHJvZmlsZX0gKSB8fCAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSApIHsKICAgICAgICAlR2V0UGFyYW0gPSAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlR2V0KAogICAgICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IHNjYWxhciBzZWFyY2ggcGFyYW1zCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgICAgICBxdyhOdW1iZXIgVGl0bGUgS2V5d29yZCBGdWxsdGV4dCBSZXN1bHRGb3JtIFZvdGVTZWFyY2ggVm90ZVNlYXJjaFR5cGUgUmF0ZVNlYXJjaAogICAgICAgICAgICBSYXRlU2VhcmNoVHlwZSBBcHByb3ZlZFNlYXJjaAogICAgICAgICAgICBUaW1lU2VhcmNoVHlwZSBDaGFuZ2VUaW1lU2VhcmNoVHlwZQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0IEl0ZW1DcmVhdGVUaW1lUG9pbnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0CiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RhcnQgSXRlbUNyZWF0ZVRpbWVTdGFydERheSBJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGgKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydFllYXIKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wIEl0ZW1DcmVhdGVUaW1lU3RvcERheSBJdGVtQ3JlYXRlVGltZVN0b3BNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3BZZWFyCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXQgSXRlbUNoYW5nZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdGFydCBJdGVtQ2hhbmdlVGltZVN0YXJ0RGF5IEl0ZW1DaGFuZ2VUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0b3AgSXRlbUNoYW5nZVRpbWVTdG9wRGF5IEl0ZW1DaGFuZ2VUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RvcFllYXIKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhcnJheSBzZWFyY2ggcGFyYW1zCiAgICAgICAgZm9yIG15ICRTZWFyY2hQYXJhbSAoCiAgICAgICAgICAgIHF3KENhdGVnb3J5SURzIExhbmd1YWdlSURzIFZhbGlkSURzIFN0YXRlSURzIENyZWF0ZWRVc2VySURzIExhc3RDaGFuZ2VkVXNlcklEcykKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAkU2VhcmNoUGFyYW0gKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGFwcHJvdmVkIG9wdGlvbgogICAgaWYgKCAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9ICYmICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gZXEgJ1llcycgKSB7CiAgICAgICAgJEdldFBhcmFte0FwcHJvdmVkfSA9IDE7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gJiYgJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSBlcSAnTm8nICkgewogICAgICAgICRHZXRQYXJhbXtBcHByb3ZlZH0gPSAwOwogICAgfQoKICAgICMgZ2V0IGNyZWF0ZSB0aW1lIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAxOwogICAgfQoKICAgICMgZ2V0IGNoYW5nZSB0aW1lIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Q2hhbmdlVGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAxOwogICAgfQoKICAgICMgc2V0IHJlc3VsdCBmb3JtIGVudgogICAgaWYgKCAhJEdldFBhcmFte1Jlc3VsdEZvcm19ICkgewogICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSA9ICcnOwogICAgfQoKICAgICMgc2hvdyByZXN1bHQgc2l0ZQogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlYXJjaCcgJiYgISRTZWxmLT57RXJhc2VUZW1wbGF0ZX0gKSB7CgogICAgICAgICMgZmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9IHx8ICEkU2VsZi0+e1NhdmVQcm9maWxlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgbXkgJFVSTCA9ICJBY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaCIKICAgICAgICAgICAgLiAiO1Byb2ZpbGU9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntQcm9maWxlfSApCiAgICAgICAgICAgIC4gIjtTb3J0Qnk9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTb3J0Qnl9ICkKICAgICAgICAgICAgLiAiO09yZGVyQnk9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgICAgIC4gIjtUYWtlTGFzdFNlYXJjaD0xIgogICAgICAgICAgICAuICI7U3RhcnRIaXQ9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTdGFydEhpdH0gKTsKCiAgICAgICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIHNlYXJjaCBwcm9maWxlICh1bmRlciBsYXN0LXNlYXJjaCBvciByZWFsIHByb2ZpbGUgbmFtZSkKICAgICAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSA9IDE7CgogICAgICAgICMgcmVtZW1iZXIgbGFzdCBzZWFyY2ggdmFsdWVzCiAgICAgICAgaWYgKCAkU2VsZi0+e1NhdmVQcm9maWxlfSAmJiAkU2VsZi0+e1Byb2ZpbGV9ICkgewoKICAgICAgICAgICAgIyByZW1vdmUgb2xkIHByb2ZpbGUgc3R1ZmYKICAgICAgICAgICAgJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgaW5zZXJ0IG5ldyBwcm9maWxlIHBhcmFtcwogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlQWRkKAogICAgICAgICAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRHZXRQYXJhbXskS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlVGltZU1hcCA9ICgKICAgICAgICAgICAgSXRlbUNyZWF0ZSA9PiAnVGltZScsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2UgPT4gJ0NoYW5nZVRpbWUnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCBzb3J0IGtleXMgJVRpbWVNYXAgKSB7CgogICAgICAgICAgICAjIGdldCBjcmVhdGUgdGltZSBzZXR0aW5ncwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcgd2l0aCB0aW1lIHN0dWZmCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KE1vbnRoIERheSkpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAyMzo1OTo1OSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21pbnV0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnaG91cicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdkYXknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd3ZWVrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogNzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21vbnRoJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd5ZWFyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzY1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdCZWZvcmUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtb3JlIHRoYW4gLi4uIGFnbwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ05leHQnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IC0kVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIGxhc3QgLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgZnVsbHRleHQgc2VhcmNoCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RnVsbHRleHR9ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Q29udGVudFNlYXJjaH0gPSAnT1InOwogICAgICAgICAgICAkR2V0UGFyYW17V2hhdH0gICAgICAgICAgPSAkR2V0UGFyYW17RnVsbHRleHR9OwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdmFsaWQgbGlzdAogICAgICAgIG15ICVWYWxpZExpc3QgICA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZExpc3QoKTsKICAgICAgICBteSBAQWxsVmFsaWRJRHMgPSBrZXlzICVWYWxpZExpc3Q7CgogICAgICAgICMgcHJlcGFyZSBzZWFyY2ggc3RhdGVzCiAgICAgICAgbXkgJFNlYXJjaFN0YXRlczsKICAgICAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtTdGF0ZUlEc30gKSApIHsKICAgICAgICAgICAgJFNlYXJjaFN0YXRlcyA9ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIFNUQVRFVFlQRUlEOgogICAgICAgICAgICBmb3IgbXkgJFN0YXRlVHlwZUlEICggQHsgJEdldFBhcmFte1N0YXRlSURzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBTVEFURVRZUEVJRCBpZiAhJFN0YXRlVHlwZUlEOwogICAgICAgICAgICAgICAgbmV4dCBTVEFURVRZUEVJRCBpZiAhJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LT57JFN0YXRlVHlwZUlEfTsKICAgICAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMtPnskU3RhdGVUeXBlSUR9ID0gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LT57JFN0YXRlVHlwZUlEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1ZvdGVTZWFyY2h9ICkgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlfSA9IHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCBVc2VyQ2F0ZWdvcnlHcm91cCBIYXNoCiAgICAgICAgIyBUaGlzIHJldHVybnMgYSBIYXNoIG9mIHRoZSBmb2xsb3dpbmcgc2FtcGxlIGRhdGEgc3RydWN0dXJlOgogICAgICAgICMKICAgICAgICAjICRVc2VyQ2F0R3JvdXAgPSB7CiAgICAgICAgIyAgICcxJyA9PiB7CiAgICAgICAgIyAgICAgICAgICAnMycgPT4gJ01pc2NTdWInCiAgICAgICAgIyAgICAgICAgfSwKICAgICAgICAjICAgJzMnID0+IHt9LAogICAgICAgICMgICAnMCcgPT4gewogICAgICAgICMgICAgICAgICAgICAnMScgPT4gJ01pc2MnLAogICAgICAgICMgICAgICAgICAgICAnMicgPT4gJ3NlY3JldCcKICAgICAgICAjICAgICAgICAgIH0sCiAgICAgICAgIyAgICcyJyA9PiB7fQogICAgICAgICMgfTsKICAgICAgICAjCiAgICAgICAgIyBLZXlzIG9mIHRoZSBvdXRlciBoYXNoIGluZm9ybSBhYm91dCBzdWJjYXRlZ29yaWVzCiAgICAgICAgIyAwIFNob3dzIHRvcCBsZXZlbCBDYXRlZ29yeUlEcy4KICAgICAgICAjIDEgU2hvd3MgdGhlIFN1YmNhdGVnb3J5SURzIG9mIENhdGVnb3J5IDEuCiAgICAgICAgIyAyIGFuZCAzIGFyZSBlbXB0eSBoYXNoZXMgYmVjYXVzZSB0aGVzZSBjYXRlZ29yaWVzIGRvbid0IGhhdmUgc3ViY2F0ZWdvcmllcy4KICAgICAgICAjCiAgICAgICAgIyBLZXlzIG9mIHRoZSBpbm5lciBoYXNoZXMgYXJlIENhdGVnb3J5SURzIGEgdXNlciBpcyBhbGxvd2VkIHRvIGhhdmUgcncgYWNjZXNzIHRvLgogICAgICAgICMgVmFsdWVzIGFyZSB0aGUgQ2F0ZWdvcnkgbmFtZXMuCgogICAgICAgIG15ICRVc2VyQ2F0R3JvdXAgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkdldFVzZXJDYXRlZ29yaWVzKAogICAgICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIEZpbmQgQ2F0ZWdvcnlJRHMgdGhlIGN1cnJlbnQgVXNlciBpcyBhbGxvd2VkIHRvIHZpZXcKICAgICAgICBteSAlQWxsb3dlZENhdGVnb3J5SURzID0gKCk7CgogICAgICAgIGlmICggJFVzZXJDYXRHcm91cCAmJiByZWYgJFVzZXJDYXRHcm91cCBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAjIFNvIG5vdyB3ZSBoYXZlIHRvIGV4dHJhY3QgYWxsIENhdGVnb3J5IElEJ3Mgb2YgdGhlICJpbm5lciBoYXNoZXMiLgogICAgICAgICAgICAjIC0+IExvb3AgdGhyb3VnaCB0aGUgb3V0ZXIgY2F0ZWdvcnkgSUQncwogICAgICAgICAgICBmb3IgbXkgJExldmVsICggc29ydCBrZXlzICV7JFVzZXJDYXRHcm91cH0gKSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgVmFsdWUgb2YgdGhlIGN1cnJlbnQgaGFzaCBrZXkgaXMgYSBoYXNoIHJlZgogICAgICAgICAgICAgICAgaWYgKCAkVXNlckNhdEdyb3VwLT57JExldmVsfSAmJiByZWYgJFVzZXJDYXRHcm91cC0+eyRMZXZlbH0gZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgICAgICAgICAjIE1hcCB0aGUga2V5cyBvZiB0aGUgaW5uZXIgaGFzaCB0byBhIFRlbXBJRHMgaGFzaAogICAgICAgICAgICAgICAgICAgICMgT3JpZ2luYWwgRGF0YXN0cnVjdHVyZToKICAgICAgICAgICAgICAgICAgICAjIHsKICAgICAgICAgICAgICAgICAgICAjICAnMScgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgICAgICMgICcyJyA9PiAnc2VjcmV0JwogICAgICAgICAgICAgICAgICAgICMgfQogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIGFmdGVyIG1hcHBpbmc6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgewogICAgICAgICAgICAgICAgICAgICMgICcxJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICMgICcyJyA9PiAxJwogICAgICAgICAgICAgICAgICAgICMgfQoKICAgICAgICAgICAgICAgICAgICBteSAlVGVtcElEcyA9IG1hcCB7ICRfID0+IDEgfSBrZXlzICV7ICRVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9IH07CgogICAgICAgICAgICAgICAgICAgICMgUHV0IHRoZSBUZW1wSURzIG92ZXIgdGhlIGZvcm1hbGx5IGZvdW5kIEFsbG93ZWRDYXRlZ29yeXMKICAgICAgICAgICAgICAgICAgICAjIHRvIHByb2R1Y2UgYSBoYXNoIHRoYXQgaG9sZHMgYWxsIENhdGVnb3J5SUQgYXMga2V5cwogICAgICAgICAgICAgICAgICAgICMgYW5kIHRoZSBudW1iZXIgMSBhcyB2YWx1ZXMuCiAgICAgICAgICAgICAgICAgICAgJUFsbG93ZWRDYXRlZ29yeUlEcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgJUFsbG93ZWRDYXRlZ29yeUlEcywKICAgICAgICAgICAgICAgICAgICAgICAgJVRlbXBJRHMKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEZvciB0aGUgZGF0YWJhc2UgcXVlcnkgaXQncyBuZWNlc3NhcnkgdG8gaGF2ZSBhbiBhcnJheQogICAgICAgICMgb2YgQ2F0ZWdvcnlJRHMKICAgICAgICBteSBAQ2F0ZWdvcnlJRHMgPSAoKTsKCiAgICAgICAgaWYgKCVBbGxvd2VkQ2F0ZWdvcnlJRHMpIHsKICAgICAgICAgICAgQENhdGVnb3J5SURzID0gc29ydCBrZXlzICVBbGxvd2VkQ2F0ZWdvcnlJRHM7CiAgICAgICAgfQoKICAgICAgICAjIENhdGVnb3JpZXMgZ290IGZyb20gdGhlIHdlYiByZXF1ZXN0IGNvdWxkIGluY2x1ZGUgYSBub3QgYWxsb3dlZCBjYXRlZ29yeSBpZiB0aGUgdXNlcgogICAgICAgICMgICAgdGVtcGVyIHdpdGggdGhlIGNhdGVnb3JpZXMgZHJvcGJveCwgYSBjaGVjayBpcyBuZWVkZWQuCiAgICAgICAgIwogICAgICAgICMgIk1hcCIgY29weSBmcm9tIG9uZSBhcnJheSB0byBhbm90aGVyLCB3aGlsZSAiZ3JlcCIgd2lsbCBvbmx5IGxldCBwYXNzIHRoZSBjYXRlZ29yaWVzCiAgICAgICAgIyAgICB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSAlQWxsb3dlZENhdGVnb3J5SURzIGhhc2gKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte0NhdGVnb3J5SURzfSApICkgewogICAgICAgICAgICBAeyAkR2V0UGFyYW17Q2F0ZWdvcnlJRHN9IH0gPSBtYXAgeyRffSBncmVwIHsgJEFsbG93ZWRDYXRlZ29yeUlEc3skX30gfSBAeyAkR2V0UGFyYW17Q2F0ZWdvcnlJRHN9IH07CiAgICAgICAgfQoKICAgICAgICAjIEp1c3Qgc2VhcmNoIGlmIHdlIGRvIGhhdmUgY2F0ZWdvcmllcywgd2UgaGF2ZSBhY2Nlc3MgdG8uCiAgICAgICAgIyBJZiB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBhbnkgY2F0ZWdvcnksIGEgc2VhcmNoIHdpdGggbm8gQ2F0ZWdvcnlJRHMKICAgICAgICAjIHdvdWxkIHJlc3VsdCBpbiBmaW5kaW5nIGFsbCBjYXRlZ29yaWVzLgogICAgICAgICMKICAgICAgICAjIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgRkFRJ3Mgd2l0aG91dCBjYXRlZ29yaWVzCiAgICAgICAgIyBzbyBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkgaGFzIHRvIGJlIHByZXNlbnQKCiAgICAgICAgbXkgQFZpZXdhYmxlRkFRSURzID0gKCk7CgogICAgICAgIGlmIChAQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgICAgICMgcGVyZm9ybSBGQVEgc2VhcmNoCiAgICAgICAgICAgICMgZGVmYXVsdCBzZWFyY2ggb24gYWxsIHZhbGlkIGlkcywgdGhpcyBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgJUdldFBhcmFtCiAgICAgICAgICAgIEBWaWV3YWJsZUZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICA9PiBbICRTZWxmLT57U29ydEJ5fSBdLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0YXRlcyAgICAgICAgICAgICAgPT4gJFNlYXJjaFN0YXRlcywKICAgICAgICAgICAgICAgIEludGVyZmFjZSAgICAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgICAgICAgICAgQ29udGVudFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgICAgICBDb250ZW50U2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICAgICAgICAgIFZhbGlkSURzICAgICAgICAgICAgPT4gXEBBbGxWYWxpZElEcywKICAgICAgICAgICAgICAgIENhdGVnb3J5SURzICAgICAgICAgPT4gXEBDYXRlZ29yeUlEcywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQ1NWIG91dHB1dAogICAgICAgIGlmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdDU1YnICkgewogICAgICAgICAgICBteSBAQ1NWSGVhZDsKICAgICAgICAgICAgbXkgQENTVkRhdGE7CgogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJENoYW5nZWQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnJFRpbWVMb25neyIkRGF0YXsiQ2hhbmdlZCJ9In0nLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgID0+IFwlRkFRRGF0YSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBnZXQgaW5mbyBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgbXkgJUNTVkluZm8gPSAoCiAgICAgICAgICAgICAgICAgICAgRkFRTnVtYmVyID0+ICRGQVFEYXRhe051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeSAgPT4gJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfSwKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSAgPT4gJEZBUURhdGF7TGFuZ3VhZ2V9LAogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAkRkFRRGF0YXtTdGF0ZX0sCiAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZCAgID0+ICRDaGFuZ2VkLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNzdiBxdW90ZQogICAgICAgICAgICAgICAgaWYgKCAhQENTVkhlYWQgKSB7CiAgICAgICAgICAgICAgICAgICAgQENTVkhlYWQgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbnNlcnQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAnTGFuZ3VhZ2UnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgcXcoU3RhdGUgQ2hhbmdlZCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBpbnNzZXJ0IGRhdGEKICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBDU1ZIZWFkKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97JEhlYWRlcn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAnTGFuZ3VhZ2UnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsIHF3KFN0YXRlIENoYW5nZWQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSBoZWFkZXJzCiAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICMgcmVwbGFjZSBGQVFOdW1iZXIgaGVhZGVyIHdpdGggdGhlIGN1cnJlbnQgRkFRSG9vayBmcm9tIGNvbmZpZwogICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYXNzYWJsZSBDU1YgZGF0YQogICAgICAgICAgICBteSAkQ1NWID0gJFNlbGYtPntDU1ZPYmplY3R9LT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICBIZWFkICAgICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgRGF0YSAgICAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkU2VsZi0+e1VzZXJDU1ZTZXBhcmF0b3J9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZXR1cm4gY3N2IHRvIGRvd25sb2FkCiAgICAgICAgICAgIG15ICRDU1ZGaWxlID0gJ0ZBUV9zZWFyY2gnOwogICAgICAgICAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTSA9IHNwcmludGYoICIlMDJkIiwgJE0gKTsKICAgICAgICAgICAgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREICk7CiAgICAgICAgICAgICRoID0gc3ByaW50ZiggIiUwMmQiLCAkaCApOwogICAgICAgICAgICAkbSA9IHNwcmludGYoICIlMDJkIiwgJG0gKTsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRDU1ZGaWxlIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5jc3YiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ1NWLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewoKICAgICAgICAgICAgbXkgQFBERkRhdGE7CiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBQREZPYmplY3QKICAgICAgICAgICAgICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6UERGOwogICAgICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlBERi0+bmV3KCAleyRTZWxmfSApOwoKICAgICAgICAgICAgICAgICMgc2V0IGNoYW5nZSBkYXRlIHRvIGxvbmcgZm9ybWF0CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57UERGT2JqZWN0fSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnJFRpbWVMb25neyIkRGF0YXsiQ2hhbmdlZCJ9In0nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgUERGIFJvd3MKICAgICAgICAgICAgICAgICAgICBteSBAUERGUm93OwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7TnVtYmVyfTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe0NhdGVnb3J5TmFtZX07CgogICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGxhbmd1YWdlIHJvdwogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtMYW5ndWFnZX07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICAkRkFRRGF0YXtTdGF0ZX07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAgJENoYW5nZWQ7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGRGF0YSwgXEBQREZSb3c7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGFibGUgYmxvY2sKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUERGIE91dHB1dAogICAgICAgICAgICBpZiAoICRTZWxmLT57UERGT2JqZWN0fSApIHsKICAgICAgICAgICAgICAgIG15ICRUaXRsZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEnKSAuICcgJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1NlYXJjaCcpOwogICAgICAgICAgICAgICAgbXkgJFByaW50ZWRCeSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdwcmludGVkIGJ5Jyk7CiAgICAgICAgICAgICAgICBteSAkUGFnZSAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1BhZ2UnKTsKICAgICAgICAgICAgICAgIG15ICRUaW1lICAgICAgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCggVGVtcGxhdGUgPT4gJyRFbnZ7IlRpbWUifScgKTsKICAgICAgICAgICAgICAgIG15ICRVcmwgICAgICAgPSAnJzsKICAgICAgICAgICAgICAgIGlmICggJEVOVntSRVFVRVNUX1VSSX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFVybCA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdIdHRwVHlwZScpIC4gJzovLycKICAgICAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRlFETicpCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEVOVntSRVFVRVNUX1VSSX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAgICAgICAgIG15ICRNYXhQYWdlcyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgICAgICAgICBpZiAoICEkTWF4UGFnZXMgfHwgJE1heFBhZ2VzIDwgMSB8fCAkTWF4UGFnZXMgPiAxMDAwICkgewogICAgICAgICAgICAgICAgICAgICRNYXhQYWdlcyA9IDEwMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgaGVhZGVyCiAgICAgICAgICAgICAgICBteSAkQ2VsbERhdGE7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Q29udGVudH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnVGl0bGUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMV0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMl0tPntDb250ZW50fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdDYXRlZ29yeScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIGNvcnJlY3QgaGVhZGVyIGluZGV4CiAgICAgICAgICAgICAgICBteSAkTmV4dEhlYWRlckluZGV4ID0gMzsKCiAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Q29udGVudH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnTGFuZ3VhZ2UnKTsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAgICAgJE5leHRIZWFkZXJJbmRleCAgICAgICAgICAgICAgID0gNDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyROZXh0SGVhZGVySW5kZXhdLT57Q29udGVudH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnU3RhdGUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bJE5leHRIZWFkZXJJbmRleF0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyAkTmV4dEhlYWRlckluZGV4ICsgMSBdLT57Q29udGVudH0KICAgICAgICAgICAgICAgICAgICA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdDaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyAkTmV4dEhlYWRlckluZGV4ICsgMSBdLT57Rm9udH0gPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgdGhlIGNvbnRlbnQgYXJyYXkKICAgICAgICAgICAgICAgIG15ICRDb3VudGVyUm93ID0gMTsKICAgICAgICAgICAgICAgIGZvciBteSAkUm93IChAUERGRGF0YSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDb3VudGVyQ29sdW1uID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbnRlbnQgKCBAeyRSb3d9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlskQ291bnRlclJvd10tPlskQ291bnRlckNvbHVtbl0tPntDb250ZW50fSA9ICRDb250ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAkQ291bnRlckNvbHVtbisrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ291bnRlclJvdysrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgb3V0cHV0ICdObyBSZXN1bHQnLCBpZiBubyBjb250ZW50IHdhcyBnaXZlbgogICAgICAgICAgICAgICAgaWYgKCAhJENlbGxEYXRhLT5bMF0tPlswXSApIHsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnTm8gUmVzdWx0IScpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcGFnZSBwYXJhbXMKICAgICAgICAgICAgICAgIG15ICVQYWdlUGFyYW07CiAgICAgICAgICAgICAgICAkUGFnZVBhcmFte1BhZ2VPcmllbnRhdGlvbn0gPSAnbGFuZHNjYXBlJzsKICAgICAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luVG9wfSAgICAgICA9IDMwOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5SaWdodH0gICAgID0gNDA7CiAgICAgICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkJvdHRvbX0gICAgPSA0MDsKICAgICAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luTGVmdH0gICAgICA9IDQwOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtIZWFkZXJSaWdodH0gICAgID0gJFRpdGxlOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtGb290ZXJMZWZ0fSAgICAgID0gJFVybDsKICAgICAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGxpbmVMZWZ0fSAgICA9ICRUaXRsZTsKICAgICAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGxpbmVSaWdodH0gICA9ICRQcmludGVkQnkgLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckZpcnN0bmFtZX0gLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckxhc3RuYW1lfSAuICcgKCcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckVtYWlsfSAuICcpICcKICAgICAgICAgICAgICAgICAgICAuICRUaW1lOwoKICAgICAgICAgICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgICAgICAgICBteSAlVGFibGVQYXJhbTsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfSAgICAgICAgICAgID0gJENlbGxEYXRhOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgID0gMDsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNBQUFBQUEnOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yT2RkfSAgPSAnI0RERERERCc7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgbmV3IHBkZiBkb2N1bWVudAogICAgICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5Eb2N1bWVudE5ldygKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgRW5jb2RlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzdGFydCB0YWJsZSBvdXRwdXQKICAgICAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdlIC4gJyAxJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBmb3IgKCAyIC4uICRNYXhQYWdlcyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBhbm90aGVyIHBhZ2UKICAgICAgICAgICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYWdlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgJyAuICRfLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJldHVybiB0aGUgcGRmIGRvY3VtZW50CiAgICAgICAgICAgICAgICBteSAkRmlsZW5hbWUgPSAnRkFRX3NlYXJjaCc7CiAgICAgICAgICAgICAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkTSA9IHNwcmludGYoICIlMDJkIiwgJE0gKTsKICAgICAgICAgICAgICAgICREID0gc3ByaW50ZiggIiUwMmQiLCAkRCApOwogICAgICAgICAgICAgICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAgICAgICAgICAgICAkbSA9IHNwcmludGYoICIlMDJkIiwgJG0gKTsKICAgICAgICAgICAgICAgIG15ICRQREZTdHJpbmcgPSAkU2VsZi0+e1BERk9iamVjdH0tPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0ucGRmIiwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdhdHRhY2htZW50JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEhlYWRlciggV2lkdGggPT4gODAwICk7CiAgICAgICAgICAgICAgICBpZiAoIHNjYWxhciBAVmlld2FibGVGQVFJRHMgPT0gJFNlbGYtPntTZWFyY2hMaW1pdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFte1dhcm5pbmd9ID0gJyRUZXh0eyJSZWFjaGVkIG1heC4gY291bnQgb2YgJXMgc2VhcmNoIGhpdHMhIiwgIicKICAgICAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e1NlYXJjaExpbWl0fSAuICcifSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBmb290ZXIKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEZvb3RlcigpOwoKICAgICAgICAgICAgICAgICMgcmV0dXJuIG91dHB1dAogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHN0YXJ0IGh0bWwgcGFnZQogICAgICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludCggT3V0cHV0ID0+IFwkT3V0cHV0ICk7CiAgICAgICAgICAgICRPdXRwdXQgPSAnJzsKCiAgICAgICAgICAgICRTZWxmLT57RmlsdGVyfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgICAgICAgICAgJFNlbGYtPntWaWV3fSAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnVmlldycgKSAgIHx8ICcnOwoKICAgICAgICAgICAgIyBzaG93IEZBUSdzCiAgICAgICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57RmlsdGVyfSApCiAgICAgICAgICAgICAgICAuICc7Vmlldz0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1ZpZXd9ICkKICAgICAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTb3J0Qnl9ICkKICAgICAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57T3JkZXJCeX0gKQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntQcm9maWxlfSApCiAgICAgICAgICAgICAgICAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgICAgIG15ICRMaW5rU29ydCA9ICdGaWx0ZXI9JwogICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57RmlsdGVyfSApCiAgICAgICAgICAgICAgICAuICc7Vmlldz0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1ZpZXd9ICkKICAgICAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57UHJvZmlsZX0gKQogICAgICAgICAgICAgICAgLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJzsnOwogICAgICAgICAgICBteSAkTGlua0ZpbHRlciA9ICdUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2g7UHJvZmlsZT0nCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntQcm9maWxlfSApCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtCYWNrID0gJ1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztUYWtlTGFzdFNlYXJjaD0xOyc7CgogICAgICAgICAgICBteSAkRmlsdGVyTGluayA9ICdTb3J0Qnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTb3J0Qnl9ICkKICAgICAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57T3JkZXJCeX0gKQogICAgICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7JzsKCiAgICAgICAgICAgICMgZmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24KICAgICAgICAgICAgbXkgQFNob3dDb2x1bW5zOwogICAgICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBhbGwgcG9zc2libGUgY29sdW1ucyBmcm9tIGNvbmZpZwogICAgICAgICAgICAgICAgbXkgJVBvc3NpYmxlQ29sdW1uID0gJXsgJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgICAgICAgICAgQ09MVU1OTkFNRToKICAgICAgICAgICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAlUG9zc2libGVDb2x1bW4gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAkTmFtZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2sKICAgICAgICAgICAgICAgIGlmICggISRQb3NzaWJsZUNvbHVtbnsnTnVtYmVyJ30gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICdOdW1iZXInOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRTGlzdFNob3coCiAgICAgICAgICAgICAgICBGQVFJRHMgPT4gXEBWaWV3YWJsZUZBUUlEcywKICAgICAgICAgICAgICAgIFRvdGFsICA9PiBzY2FsYXIgQFZpZXdhYmxlRkFRSURzLAoKICAgICAgICAgICAgICAgIFZpZXcgPT4gJFNlbGYtPntWaWV3fSwKCiAgICAgICAgICAgICAgICBFbnYgICAgICAgID0+ICRTZWxmLAogICAgICAgICAgICAgICAgTGlua1BhZ2UgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgICAgICAgICBMaW5rU29ydCAgID0+ICRMaW5rU29ydCwKICAgICAgICAgICAgICAgIExpbmtGaWx0ZXIgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW5rQmFjayAgID0+ICRMaW5rQmFjaywKICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKCiAgICAgICAgICAgICAgICBUaXRsZU5hbWUgPT4gJ1NlYXJjaCBSZXN1bHQnLAogICAgICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAoKICAgICAgICAgICAgICAgIEZpbHRlciAgICAgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgICAgICAgICAgRmlsdGVyTGluayA9PiAkRmlsdGVyTGluaywKCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRTZWxmLT57T3JkZXJCeX0sCiAgICAgICAgICAgICAgICBTb3J0QnkgID0+ICRTZWxmLT57U29ydEJ5fSwKCiAgICAgICAgICAgICAgICBTaG93Q29sdW1ucyA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBidWlsZCBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CiAgICB9CgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhQcm9maWxlRGVsZXRlJyApIHsKICAgICAgICBteSAkUHJvZmlsZSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICk7CgogICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgKTsKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5KU09ORW5jb2RlKAogICAgICAgICAgICBEYXRhID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWCcgKSB7CgogICAgICAgICMgY3JlYXRlIG91dHB1dAogICAgICAgIG15ICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDaGFyc2V0ICAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGRlZmF1bHQgc2VhcmNoIHNjcmVlbgogICAgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWFyY2gnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0OwoKfQoKc3ViIF9NYXNrRm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxpc3QgdHlwZQogICAgbXkgJFRyZWVWaWV3ID0gMDsKICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgbXkgJFByb2ZpbGUgPSAkU2VsZi0+e1Byb2ZpbGV9OwogICAgbXkgJEVtcHR5U2VhcmNoID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnRW1wdHlTZWFyY2gnICk7CiAgICBpZiAoICEkUHJvZmlsZSApIHsKICAgICAgICAkRW1wdHlTZWFyY2ggPSAxOwogICAgfQoKICAgIG15ICVHZXRQYXJhbSA9ICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKCiAgICAjIGlmIG5vIHByb2ZpbGUgaXMgdXNlZCwgc2V0IGRlZmF1bHQgcGFyYW1zIG9mIGRlZmF1bHQgYXR0cmlidXRlcwogICAgaWYgKCAhJFByb2ZpbGUgKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0c30gKSB7CiAgICAgICAgICAgIEFUVFJJQlVURToKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJFNlbGYtPntDb25maWd9LT57RGVmYXVsdHN9LT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gPSAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0c30tPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBhdHRyaWJ1dGVzIHN0cmluZwogICAgbXkgQEF0dHJpYnV0ZXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0ZBUSBOdW1iZXInLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRnVsbHRleHQnLAogICAgICAgICAgICBWYWx1ZSA9PiAnRnVsbHRleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnVGl0bGUnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnS2V5d29yZCcsCiAgICAgICAgICAgIFZhbHVlID0+ICdLZXl3b3JkJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgTGFuZ3VhZ2VzIGF0dHJpYnV0ZQogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnVmFsaWRJRHMnLAogICAgICAgICAgICBWYWx1ZSA9PiAnVmFsaWRpdHknLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnU3RhdGVJRHMnLAogICAgICAgICAgICBWYWx1ZSA9PiAnU3RhdGUnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnVm90ZXMnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnUmF0ZVNlYXJjaFR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnUmF0ZScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdBcHByb3ZlZFNlYXJjaCcsCiAgICAgICAgICAgIFZhbHVlID0+ICdBcHByb3ZlZCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDcmVhdGVkVXNlcklEcycsCiAgICAgICAgICAgIFZhbHVlID0+ICdDcmVhdGVkIGJ5JywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0xhc3RDaGFuZ2VkVXNlcklEcycsCiAgICAgICAgICAgIFZhbHVlID0+ICdMYXN0IENoYW5nZWQgYnknLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludCcsCiAgICAgICAgICAgIFZhbHVlID0+ICdGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJdGVtQ3JlYXRlVGltZVNsb3QnLAogICAgICAgICAgICBWYWx1ZSA9PiAnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lUG9pbnQnLAogICAgICAgICAgICBWYWx1ZSA9PiAnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSXRlbUNoYW5nZVRpbWVTbG90JywKICAgICAgICAgICAgVmFsdWUgPT4gJ0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKScsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBkcm9wZG93biBtZW51IGZvciAnYXR0cmlidXRlcycKICAgICRQYXJhbXtBdHRyaWJ1dGVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgID0+IFxAQXR0cmlidXRlcywKICAgICAgICBOYW1lICAgICA9PiAnQXR0cmlidXRlJywKICAgICAgICBNdWx0aXBsZSA9PiAwLAogICAgKTsKICAgICRQYXJhbXtBdHRyaWJ1dGVzT3JpZ1N0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgTmFtZSAgICAgPT4gJ0F0dHJpYnV0ZU9yaWcnLAogICAgICAgIE11bHRpcGxlID0+IDAsCiAgICApOwoKICAgICMgZ2V0IGxhbmd1YWdlcyBsaXN0CiAgICBteSAlTGFuZ3VhZ2VzID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBkcm9wZG93biBtZW51IGZvciAnbGFuZ3VhZ2VzJwogICAgJFBhcmFte0xhbmd1YWdlc1NlbGVjdGlvblN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlTGFuZ3VhZ2VzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0xhbmd1YWdlSURzfSB8fCBbXSwKICAgICk7CgogICAgIyBnZXQgY2F0ZWdvcmllcyAod2l0aCBjYXRlZ29yeSBsb25nIG5hbWVzKSB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIG15ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCB0aGUgY2F0ZWdvcnkgc2VsZWN0aW9uCiAgICAkUGFyYW17Q2F0ZWdvcmllc1NlbGVjdGlvblN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0NhdGVnb3J5SURzJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17Q2F0ZWdvcnlJRHN9IHx8IFtdLAogICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIFRyZWVWaWV3ICAgID0+ICRUcmVlVmlldywKICAgICk7CgogICAgIyBnZXQgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZExpc3QoKTsKCiAgICAjIGJ1aWxkIHRoZSB2YWxpZCBzZWxlY3Rpb24KICAgICRQYXJhbXtWYWxpZFNlbGVjdGlvblN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgICA9PiAnVmFsaWRJRHMnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtWYWxpZElEc30gfHwgW10sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwoKICAgICMgY3JlYXRlIGEgbWl4IG9mIHN0YXRlIGFuZCBzdGF0ZSB0eXBlcyBoYXNoIGluIG9yZGVyIHRvIGhhdmUgdGhlIHN0YXRlIHR5cGUgSURzIHdpdGggc3RhdGUKICAgICMgbmFtZXMKICAgIG15ICVTdGF0ZUxpc3QgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAlU3RhdGVzOwogICAgZm9yIG15ICRTdGF0ZUlEICggc29ydCBrZXlzICVTdGF0ZUxpc3QgKSB7CiAgICAgICAgbXkgJVN0YXRlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVHZXQoCiAgICAgICAgICAgIFN0YXRlSUQgPT4gJFN0YXRlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFN0YXRlc3sgJFN0YXRlRGF0YXtUeXBlSUR9IH0gPSAkU3RhdGVEYXRhe05hbWV9CiAgICB9CgogICAgJFBhcmFte1N0YXRlU2VsZWN0aW9uU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlU3RhdGVzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdTdGF0ZUlEcycsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte1N0YXRlSURzfSB8fCBbXSwKICAgICAgICBTaXplICAgICAgICA9PiAzLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CgogICAgbXkgJVZvdGluZ09wZXJhdG9ycyA9ICgKICAgICAgICBFcXVhbHMgICAgICAgICAgICA9PiAnRXF1YWxzJywKICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAnR3JlYXRlclRoYW4nLAogICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+ICdHcmVhdGVyVGhhbkVxdWFscycsCiAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gJ1NtYWxsZXJUaGFuJywKICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAnU21hbGxlclRoYW5FcXVhbHMnLAogICAgKTsKCiAgICAkUGFyYW17Vm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1ZvdGVTZWFyY2hUeXBlJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgKTsKCiAgICAkUGFyYW17UmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2hUeXBlJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgKTsKICAgICRQYXJhbXtSYXRlU2VhcmNoU2VsZWN0aW9uU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAwICAgPT4gJzAlJywKICAgICAgICAgICAgMjUgID0+ICcyNSUnLAogICAgICAgICAgICA1MCAgPT4gJzUwJScsCiAgICAgICAgICAgIDc1ICA9PiAnNzUlJywKICAgICAgICAgICAgMTAwID0+ICcxMDAlJywKICAgICAgICB9LAogICAgICAgIFNvcnQgICAgICAgID0+ICdOdW1lcmljS2V5JywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9IHx8ICcnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgKTsKCiAgICAkUGFyYW17QXBwcm92ZWRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE5vICA9PiAnTm8nLAogICAgICAgICAgICBZZXMgPT4gJ1llcycsCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgICA9PiAnQXBwcm92ZWRTZWFyY2gnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gfHwgJ1llcycsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgKTsKCiAgICAjIGdldCBhIGxpc3Qgb2YgYWxsIHVzZXJzIHRvIGRpc3BsYXkKICAgIG15ICVTaG93blVzZXJzID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+VXNlckxpc3QoCiAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZ2V0IHRoZSBVc2VySURzIGZyb20gZmFxIGFuZCBmYXFfYWRtaW4gbWVtYmVycwogICAgbXkgJUdyb3VwVXNlcnM7CiAgICBmb3IgbXkgJEdyb3VwIChxdyhmYXEgZmFxX2FkbWluKSkgewogICAgICAgIG15ICRHcm91cElEID0gJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTG9va3VwKCBHcm91cCA9PiAkR3JvdXAgKTsKICAgICAgICBteSAlVXNlcnMgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICBHcm91cElEID0+ICRHcm91cElELAogICAgICAgICAgICBUeXBlICAgID0+ICdydycsCiAgICAgICAgICAgIFJlc3VsdCAgPT4gJ0hBU0gnLAogICAgICAgICk7CiAgICAgICAgJUdyb3VwVXNlcnMgPSAoICVHcm91cFVzZXJzLCAlVXNlcnMgKTsKICAgIH0KCiAgICAjIHJlbW92ZSBhbGwgdXNlcnMgdGhhdCBhcmUgbm90IGluIHRoZSBmYXEgb3IgZmFxX2FkbWluIGdyb3VwcwogICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVNob3duVXNlcnMgKSB7CiAgICAgICAgaWYgKCAhJEdyb3VwVXNlcnN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkU2hvd25Vc2Vyc3skVXNlcklEfTsKICAgICAgICB9CiAgICB9CiAgICAkUGFyYW17Q3JlYXRlZFVzZXJTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ3JlYXRlZFVzZXJJRHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17Q3JlYXRlZFVzZXJJRHN9LAogICAgKTsKICAgICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTGFzdENoYW5nZWRVc2VySURzJywKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30sCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJ0xhc3QnICAgPT4gJ3dpdGhpbiB0aGUgbGFzdCAuLi4nLAogICAgICAgICAgICAnQmVmb3JlJyA9PiAnbW9yZSB0aGFuIC4uLiBhZ28nLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+ICdtaW51dGUocyknLAogICAgICAgICAgICBob3VyICAgPT4gJ2hvdXIocyknLAogICAgICAgICAgICBkYXkgICAgPT4gJ2RheShzKScsCiAgICAgICAgICAgIHdlZWsgICA9PiAnd2VlayhzKScsCiAgICAgICAgICAgIG1vbnRoICA9PiAnbW9udGgocyknLAogICAgICAgICAgICB5ZWFyICAgPT4gJ3llYXIocyknLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBQcmVmaXggICA9PiAnSXRlbUNyZWF0ZVRpbWVTdGFydCcsCiAgICAgICAgRm9ybWF0ICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgRGlmZlRpbWUgPT4gLSggKCA2MCAqIDYwICogMjQgKSAqIDMwICksCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJUdldFBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNyZWF0ZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJ0xhc3QnICAgPT4gJ3dpdGhpbiB0aGUgbGFzdCAuLi4nLAogICAgICAgICAgICAnQmVmb3JlJyA9PiAnbW9yZSB0aGFuIC4uLiBhZ28nLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+ICdtaW51dGUocyknLAogICAgICAgICAgICBob3VyICAgPT4gJ2hvdXIocyknLAogICAgICAgICAgICBkYXkgICAgPT4gJ2RheShzKScsCiAgICAgICAgICAgIHdlZWsgICA9PiAnd2VlayhzKScsCiAgICAgICAgICAgIG1vbnRoICA9PiAnbW9udGgocyknLAogICAgICAgICAgICB5ZWFyICAgPT4gJ3llYXIocyknLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lU3RhcnRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBQcmVmaXggICA9PiAnSXRlbUNoYW5nZVRpbWVTdGFydCcsCiAgICAgICAgRm9ybWF0ICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgRGlmZlRpbWUgPT4gLSggKCA2MCAqIDYwICogMjQgKSAqIDMwICksCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lU3RvcFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJUdldFBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNoYW5nZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgIG15ICVQcm9maWxlcyA9ICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVMaXN0KAogICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKICAgIGRlbGV0ZSAkUHJvZmlsZXN7Jyd9OwogICAgZGVsZXRlICRQcm9maWxlc3snbGFzdC1zZWFyY2gnfTsKICAgIGlmICgkRW1wdHlTZWFyY2gpIHsKICAgICAgICAkUHJvZmlsZXN7Jyd9ID0gJy0nOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFByb2ZpbGVzeydsYXN0LXNlYXJjaCd9ID0gJy0nOwogICAgfQogICAgJFBhcmFte1Byb2ZpbGVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVQcm9maWxlcywKICAgICAgICBOYW1lICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICBJRCAgICAgICAgID0+ICdTZWFyY2hQcm9maWxlJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQcm9maWxlLAogICAgKTsKCiAgICAkUGFyYW17UmVzdWx0Rm9ybVN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm9ybWFsID0+ICdOb3JtYWwnLAogICAgICAgICAgICBQcmludCAgPT4gJ1ByaW50JywKICAgICAgICAgICAgQ1NWICAgID0+ICdDU1YnLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnUmVzdWx0Rm9ybScsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gfHwgJ05vcm1hbCcsCiAgICApOwoKICAgICMgaHRtbCBzZWFyY2ggbWFzayBvdXRwdXQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VhcmNoQUpBWCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBFbXB0eVNlYXJjaCA9PiAkRW1wdHlTZWFyY2gsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IGF0dHJpYnV0ZXMKICAgIG15ICVBbHJlYWR5U2hvd247CiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtIChAQXR0cmlidXRlcykgewogICAgICAgIG15ICRLZXkgPSAkSXRlbS0+e0tleX07CiAgICAgICAgbmV4dCBJVEVNIGlmICEkS2V5OwogICAgICAgIG5leHQgSVRFTSBpZiAhZGVmaW5lZCAkR2V0UGFyYW17JEtleX07CiAgICAgICAgbmV4dCBJVEVNIGlmICRHZXRQYXJhbXskS2V5fSBlcSAnJzsKCiAgICAgICAgbmV4dCBJVEVNIGlmICRBbHJlYWR5U2hvd257JEtleX07CiAgICAgICAgJEFscmVhZHlTaG93bnskS2V5fSA9IDE7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQUpBWFNob3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkS2V5LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBpZiBubyBhdHRyaWJ1dGUgaXMgc2hvd24sIHNob3cgZnVsbHRleHQgc2VhcmNoCiAgICBpZiAoICEkUHJvZmlsZSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRzfSApIHsKICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0c30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRBbHJlYWR5U2hvd257JEtleX07CiAgICAgICAgICAgICAgICAkQWxyZWFkeVNob3dueyRLZXl9ID0gMTsKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQUpBWFNob3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEFKQVhTaG93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAnRnVsbHRleHQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCBvdXRwdXQKICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRU2VhcmNoJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoU21hbGwucG0gLSBtb2R1bGUgZm9yIEZBUSBzZWFyY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFTZWFyY2hTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgVXNlck9iamVjdCBHcm91cE9iamVjdCBDb25maWdPYmplY3QgTWFpbk9iamVjdCBFbmNvZGVPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgZm9yIGZyb250ZW5kCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2giKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSA9IGludCggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0gfHwgNTAwOwogICAgJFNlbGYtPntTb3J0Qnl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgICRTZWxmLT57T3JkZXJCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CiAgICAkU2VsZi0+e1Byb2ZpbGV9ICAgICAgICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgICAgIHx8ICcnOwogICAgJFNlbGYtPntTYXZlUHJvZmlsZX0gICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTYXZlUHJvZmlsZScgKSAgICB8fCAnJzsKICAgICRTZWxmLT57VGFrZUxhc3RTZWFyY2h9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnVGFrZUxhc3RTZWFyY2gnICkgfHwgJyc7CiAgICAkU2VsZi0+e1NlbGVjdFRlbXBsYXRlfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlbGVjdFRlbXBsYXRlJyApIHx8ICcnOwogICAgJFNlbGYtPntFcmFzZVRlbXBsYXRlfSAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdFcmFzZVRlbXBsYXRlJyApICB8fCAnJzsKICAgIG15ICROYXYgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYXYnICkgfHwgJyc7CgogICAgIyBzZWFyY2ggd2l0aCBhIHNhdmVkIHRlbXBsYXRlCiAgICBpZiAoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaFRlbXBsYXRlJyApICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPUFnZW50RkFRU2VhcmNoU21hbGw7U3ViYWN0aW9uPVNlYXJjaDtUYWtlTGFzdFNlYXJjaD0xO1NhdmVQcm9maWxlPTE7UHJvZmlsZT0kU2VsZi0+e1Byb2ZpbGV9O05hdj0kTmF2IgogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwoKICAgICMgbG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zIChwcmVzcyBsb2FkIHByb2ZpbGUpCiAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdMb2FkUHJvZmlsZScgJiYgJFNlbGYtPntQcm9maWxlfSApIHx8ICRTZWxmLT57VGFrZUxhc3RTZWFyY2h9ICkgewogICAgICAgICVHZXRQYXJhbSA9ICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgc2NhbGFyIHNlYXJjaCBwYXJhbXMKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiAgICAgICAgICAgIHF3KE51bWJlciBUaXRsZSBLZXl3b3JkIEZ1bGx0ZXh0IFJlc3VsdEZvcm0gVm90ZVNlYXJjaCBWb3RlU2VhcmNoVHlwZSBWb3RlU2VhcmNoT3B0aW9uCiAgICAgICAgICAgIFJhdGVTZWFyY2ggUmF0ZVNlYXJjaFR5cGUgUmF0ZVNlYXJjaE9wdGlvbiBBcHByb3ZlZFNlYXJjaAogICAgICAgICAgICBUaW1lU2VhcmNoVHlwZSBDaGFuZ2VUaW1lU2VhcmNoVHlwZQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0IEl0ZW1DcmVhdGVUaW1lUG9pbnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0CiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RhcnQgSXRlbUNyZWF0ZVRpbWVTdGFydERheSBJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGgKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydFllYXIKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wIEl0ZW1DcmVhdGVUaW1lU3RvcERheSBJdGVtQ3JlYXRlVGltZVN0b3BNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3BZZWFyCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXQgSXRlbUNoYW5nZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdGFydCBJdGVtQ2hhbmdlVGltZVN0YXJ0RGF5IEl0ZW1DaGFuZ2VUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0b3AgSXRlbUNoYW5nZVRpbWVTdG9wRGF5IEl0ZW1DaGFuZ2VUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RvcFllYXIKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhcnJheSBzZWFyY2ggcGFyYW1zCiAgICAgICAgZm9yIG15ICRTZWFyY2hQYXJhbSAoCiAgICAgICAgICAgIHF3KENhdGVnb3J5SURzIExhbmd1YWdlSURzIFZhbGlkSURzIFN0YXRlSURzIENyZWF0ZWRVc2VySURzIExhc3RDaGFuZ2VkVXNlcklEcykKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAkU2VhcmNoUGFyYW0gKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGFwcHJvdmVkIG9wdGlvbgogICAgaWYgKCAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9ICYmICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gZXEgJ1llcycgKSB7CiAgICAgICAgJEdldFBhcmFte0FwcHJvdmVkfSA9IDE7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gJiYgJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSBlcSAnTm8nICkgewogICAgICAgICRHZXRQYXJhbXtBcHByb3ZlZH0gPSAwOwogICAgfQoKICAgICMgZ2V0IHZvdGUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgJEdldFBhcmFteydWb3RlU2VhcmNoT3B0aW9uOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gZXEgJ1ZvdGVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydWb3RlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBnZXQgcmF0ZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSBlcSAnUmF0ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIGdldCBjcmVhdGUgdGltZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIGdldCBjaGFuZ2UgdGltZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtDaGFuZ2VUaW1lU2VhcmNoVHlwZX0gKSB7CiAgICAgICAgJEdldFBhcmFteydDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtDaGFuZ2VUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIHNldCByZXN1bHQgZm9ybSBlbnYKICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KCiAgICAjIHNob3cgcmVzdWx0IHNpdGUKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2gnICYmICEkU2VsZi0+e0VyYXNlVGVtcGxhdGV9ICkgewoKICAgICAgICAjIGZpbGwgdXAgcHJvZmlsZSBuYW1lIChlLmcuIHdpdGggbGFzdC1zZWFyY2gpCiAgICAgICAgaWYgKCAhJFNlbGYtPntQcm9maWxlfSB8fCAhJFNlbGYtPntTYXZlUHJvZmlsZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gPSAnbGFzdC1zZWFyY2gnOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUFnZW50RkFRU2VhcmNoU21hbGw7U3ViYWN0aW9uPVNlYXJjaCIKICAgICAgICAgICAgLiAiO1Byb2ZpbGU9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntQcm9maWxlfSApCiAgICAgICAgICAgIC4gIjtTb3J0Qnk9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTb3J0Qnl9ICkKICAgICAgICAgICAgLiAiO09yZGVyQnk9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgICAgIC4gIjtUYWtlTGFzdFNlYXJjaD0xIgogICAgICAgICAgICAuICI7U3RhcnRIaXQ9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTdGFydEhpdH0gKQogICAgICAgICAgICAuICI7TmF2PSROYXYiOwoKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgc2VhcmNoIHByb2ZpbGUgKHVuZGVyIGxhc3Qtc2VhcmNoIG9yIHJlYWwgcHJvZmlsZSBuYW1lKQogICAgICAgICRTZWxmLT57U2F2ZVByb2ZpbGV9ID0gMTsKCiAgICAgICAgIyByZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBpZiAoICRTZWxmLT57U2F2ZVByb2ZpbGV9ICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBpbnNlcnQgbmV3IHByb2ZpbGUgcGFyYW1zCiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVHZXRQYXJhbSApIHsKICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEdldFBhcmFteyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2b3RlcyBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHJhdGUgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJVRpbWVNYXAgPSAoCiAgICAgICAgICAgIEl0ZW1DcmVhdGUgPT4gJ1RpbWUnLAogICAgICAgICAgICBJdGVtQ2hhbmdlID0+ICdDaGFuZ2VUaW1lJywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRpbWVUeXBlICggc29ydCBrZXlzICVUaW1lTWFwICkgewoKICAgICAgICAgICAgIyBnZXQgY3JlYXRlIHRpbWUgc2V0dGluZ3MKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nIHdpdGggdGltZSBzdHVmZgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyhNb250aCBEYXkpKSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0JyAuICRLZXkgfQogICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0JyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfQogICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0TW9udGgnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlckRhdGUnIH0gPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0TW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMjM6NTk6NTknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtaW51dGUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2hvdXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnZGF5JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnd2VlaycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtb250aCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDMwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAneWVhcicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDM2NTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnQmVmb3JlJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbW9yZSB0aGFuIC4uLiBhZ28KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdOZXh0JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAtJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiBsYXN0IC4uLgogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIGZ1bGx0ZXh0IHNlYXJjaAogICAgICAgIGlmICggJEdldFBhcmFte0Z1bGx0ZXh0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte0NvbnRlbnRTZWFyY2h9ID0gJ09SJzsKICAgICAgICAgICAgJEdldFBhcmFte1doYXR9ICAgICAgICAgID0gJEdldFBhcmFte0Z1bGx0ZXh0fTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgICAgICBteSAlVmFsaWRMaXN0ICAgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRMaXN0KCk7CiAgICAgICAgbXkgQEFsbFZhbGlkSURzID0ga2V5cyAlVmFsaWRMaXN0OwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoIHN0YXRlcwogICAgICAgIG15ICRTZWFyY2hTdGF0ZXM7CiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17U3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMgPSAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc307CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBTVEFURVRZUEVJRDoKICAgICAgICAgICAgZm9yIG15ICRTdGF0ZVR5cGVJRCAoIEB7ICRHZXRQYXJhbXtTdGF0ZUlEc30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgU1RBVEVUWVBFSUQgaWYgISRTdGF0ZVR5cGVJRDsKICAgICAgICAgICAgICAgIG5leHQgU1RBVEVUWVBFSUQgaWYgISRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfS0+eyRTdGF0ZVR5cGVJRH07CiAgICAgICAgICAgICAgICAkU2VhcmNoU3RhdGVzLT57JFN0YXRlVHlwZUlEfSA9ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfS0+eyRTdGF0ZVR5cGVJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2b3RlcyBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHJhdGUgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgVXNlckNhdGVnb3J5R3JvdXAgSGFzaAogICAgICAgICMgVGhpcyByZXR1cm5zIGEgSGFzaCBvZiB0aGUgZm9sbG93aW5nIHNhbXBsZSBkYXRhIHN0cnVjdHVyZToKICAgICAgICAjCiAgICAgICAgIyAkVXNlckNhdEdyb3VwID0gewogICAgICAgICMgICAnMScgPT4gewogICAgICAgICMgICAgICAgICAgJzMnID0+ICdNaXNjU3ViJwogICAgICAgICMgICAgICAgIH0sCiAgICAgICAgIyAgICczJyA9PiB7fSwKICAgICAgICAjICAgJzAnID0+IHsKICAgICAgICAjICAgICAgICAgICAgJzEnID0+ICdNaXNjJywKICAgICAgICAjICAgICAgICAgICAgJzInID0+ICdzZWNyZXQnCiAgICAgICAgIyAgICAgICAgICB9LAogICAgICAgICMgICAnMicgPT4ge30KICAgICAgICAjIH07CiAgICAgICAgIwogICAgICAgICMgS2V5cyBvZiB0aGUgb3V0ZXIgaGFzaCBpbmZvcm0gYWJvdXQgc3ViY2F0ZWdvcmllcwogICAgICAgICMgMCBTaG93cyB0b3AgbGV2ZWwgQ2F0ZWdvcnlJRHMuCiAgICAgICAgIyAxIFNob3dzIHRoZSBTdWJjYXRlZ29yeUlEcyBvZiBDYXRlZ29yeSAxLgogICAgICAgICMgMiBhbmQgMyBhcmUgZW1wdHkgaGFzaGVzIGJlY2F1c2UgdGhlc2UgY2F0ZWdvcmllcyBkb24ndCBoYXZlIHN1YmNhdGVnb3JpZXMuCiAgICAgICAgIwogICAgICAgICMgS2V5cyBvZiB0aGUgaW5uZXIgaGFzaGVzIGFyZSBDYXRlZ29yeUlEcyBhIHVzZXIgaXMgYWxsb3dlZCB0byBoYXZlIHJ3IGFjY2VzcyB0by4KICAgICAgICAjIFZhbHVlcyBhcmUgdGhlIENhdGVnb3J5IG5hbWVzLgoKICAgICAgICBteSAkVXNlckNhdEdyb3VwID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBGaW5kIENhdGVnb3J5SURzIHRoZSBjdXJyZW50IFVzZXIgaXMgYWxsb3dlZCB0byB2aWV3CiAgICAgICAgbXkgJUFsbG93ZWRDYXRlZ29yeUlEcyA9ICgpOwoKICAgICAgICBpZiAoICRVc2VyQ2F0R3JvdXAgJiYgcmVmICRVc2VyQ2F0R3JvdXAgZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgIyBTbyBub3cgd2UgaGF2ZSB0byBleHRyYWN0IGFsbCBDYXRlZ29yeSBJRCdzIG9mIHRoZSAiaW5uZXIgaGFzaGVzIi4KICAgICAgICAgICAgIyAtPiBMb29wIHRocm91Z2ggdGhlIG91dGVyIGNhdGVnb3J5IElEJ3MKICAgICAgICAgICAgZm9yIG15ICRMZXZlbCAoIHNvcnQga2V5cyAleyRVc2VyQ2F0R3JvdXB9ICkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIFZhbHVlIG9mIHRoZSBjdXJyZW50IGhhc2gga2V5IGlzIGEgaGFzaCByZWYKICAgICAgICAgICAgICAgIGlmICggJFVzZXJDYXRHcm91cC0+eyRMZXZlbH0gJiYgcmVmICRVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9IGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBNYXAgdGhlIGtleXMgb2YgdGhlIGlubmVyIGhhc2ggdG8gYSBUZW1wSURzIGhhc2gKICAgICAgICAgICAgICAgICAgICAjIE9yaWdpbmFsIERhdGFzdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgICAgIyB7CiAgICAgICAgICAgICAgICAgICAgIyAgJzEnID0+ICdNaXNjJywKICAgICAgICAgICAgICAgICAgICAjICAnMicgPT4gJ3NlY3JldCcKICAgICAgICAgICAgICAgICAgICAjIH0KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBhZnRlciBtYXBwaW5nOgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIHsKICAgICAgICAgICAgICAgICAgICAjICAnMScgPT4gMSwKICAgICAgICAgICAgICAgICAgICAjICAnMicgPT4gMScKICAgICAgICAgICAgICAgICAgICAjIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJVRlbXBJRHMgPSBtYXAgeyAkXyA9PiAxIH0ga2V5cyAleyAkVXNlckNhdEdyb3VwLT57JExldmVsfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIFB1dCB0aGUgVGVtcElEcyBvdmVyIHRoZSBmb3JtYWxseSBmb3VuZCBBbGxvd2VkQ2F0ZWdvcnlzCiAgICAgICAgICAgICAgICAgICAgIyB0byBwcm9kdWNlIGEgaGFzaCB0aGF0IGhvbGRzIGFsbCBDYXRlZ29yeUlEIGFzIGtleXMKICAgICAgICAgICAgICAgICAgICAjIGFuZCB0aGUgbnVtYmVyIDEgYXMgdmFsdWVzLgogICAgICAgICAgICAgICAgICAgICVBbGxvd2VkQ2F0ZWdvcnlJRHMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICVBbGxvd2VkQ2F0ZWdvcnlJRHMsCiAgICAgICAgICAgICAgICAgICAgICAgICVUZW1wSURzCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBGb3IgdGhlIGRhdGFiYXNlIHF1ZXJ5IGl0J3MgbmVjZXNzYXJ5IHRvIGhhdmUgYW4gYXJyYXkKICAgICAgICAjIG9mIENhdGVnb3J5SURzCiAgICAgICAgbXkgQENhdGVnb3J5SURzID0gKCk7CgogICAgICAgIGlmICglQWxsb3dlZENhdGVnb3J5SURzKSB7CiAgICAgICAgICAgIEBDYXRlZ29yeUlEcyA9IHNvcnQga2V5cyAlQWxsb3dlZENhdGVnb3J5SURzOwogICAgICAgIH0KCiAgICAgICAgIyBDYXRlZ29yaWVzIGdvdCBmcm9tIHRoZSB3ZWIgcmVxdWVzdCBjb3VsZCBpbmNsdWRlIGEgbm90IGFsbG93ZWQgY2F0ZWdvcnkgaWYgdGhlIHVzZXIKICAgICAgICAjICAgIHRlbXBlciB3aXRoIHRoZSBjYXRlZ29yaWVzIGRyb3Bib3gsIGEgY2hlY2sgaXMgbmVlZGVkLgogICAgICAgICMKICAgICAgICAjICJNYXAiIGNvcHkgZnJvbSBvbmUgYXJyYXkgdG8gYW5vdGhlciwgd2hpbGUgImdyZXAiIHdpbGwgb25seSBsZXQgcGFzcyB0aGUgY2F0ZWdvcmllcwogICAgICAgICMgICAgdGhhdCBhcmUgZGVmaW5lZCBpbiB0aGUgJUFsbG93ZWRDYXRlZ29yeUlEcyBoYXNoCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gKSApIHsKICAgICAgICAgICAgQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9ID0gbWFwIHskX30gZ3JlcCB7ICRBbGxvd2VkQ2F0ZWdvcnlJRHN7JF99IH0gQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBKdXN0IHNlYXJjaCBpZiB3ZSBkbyBoYXZlIGNhdGVnb3JpZXMsIHdlIGhhdmUgYWNjZXNzIHRvLgogICAgICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYW55IGNhdGVnb3J5LCBhIHNlYXJjaCB3aXRoIG5vIENhdGVnb3J5SURzCiAgICAgICAgIyB3b3VsZCByZXN1bHQgaW4gZmluZGluZyBhbGwgY2F0ZWdvcmllcy4KICAgICAgICAjCiAgICAgICAgIyBJdCBpcyBub3QgcG9zc2libGUgdG8gY3JlYXRlIEZBUSdzIHdpdGhvdXQgY2F0ZWdvcmllcwogICAgICAgICMgc28gYXQgbGVhc3Qgb25lIGNhdGVnb3J5IGhhcyB0byBiZSBwcmVzZW50CgogICAgICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICgpOwoKICAgICAgICBpZiAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgICAgICAgICAjIGRlZmF1bHQgc2VhcmNoIG9uIGFsbCB2YWxpZCBpZHMsIHRoaXMgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5ICVHZXRQYXJhbQogICAgICAgICAgICBAVmlld2FibGVGQVFJRHMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVNlYXJjaCgKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyAkU2VsZi0+e1NvcnRCeX0gXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgPT4gWyAkU2VsZi0+e09yZGVyQnl9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgICAgID0+ICRTZWFyY2hTdGF0ZXMsCiAgICAgICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICAgICAgICAgIENvbnRlbnRTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICAgICAgQ29udGVudFNlYXJjaFN1ZmZpeCA9PiAnKicsCiAgICAgICAgICAgICAgICBWYWxpZElEcyAgICAgICAgICAgID0+IFxAQWxsVmFsaWRJRHMsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgICAgICAgID0+IFxAQ2F0ZWdvcnlJRHMsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IGh0bWwgcGFnZQogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludCggT3V0cHV0ID0+IFwkT3V0cHV0ICk7CiAgICAgICAgJE91dHB1dCA9ICcnOwoKICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CiAgICAgICAgJFNlbGYtPntWaWV3fSAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnVmlldycgKSAgIHx8ICcnOwoKICAgICAgICAjIHNob3cgRkFRJ3MKICAgICAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57RmlsdGVyfSApCiAgICAgICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57T3JkZXJCeX0gKQogICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgICAgICAuICc7JzsKICAgICAgICBteSAkTGlua1NvcnQgPSAnRmlsdGVyPScKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57RmlsdGVyfSApCiAgICAgICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgLiAnO05hdj0nIC4gJE5hdgoKICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgbXkgJExpbmtGaWx0ZXIgPSAnVGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoO1Byb2ZpbGU9JwogICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntQcm9maWxlfSApCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgbXkgJExpbmtCYWNrID0gJ1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtQcm9maWxlPScKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57UHJvZmlsZX0gKQogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgICAgIC4gJztUYWtlTGFzdFNlYXJjaD0xOyc7CgogICAgICAgIG15ICRGaWx0ZXJMaW5rID0gJ1NvcnRCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1NvcnRCeX0gKQogICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e09yZGVyQnl9ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57UHJvZmlsZX0gKQogICAgICAgICAgICAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgICAgIC4gJzsnOwoKICAgICAgICAjIGZpbmQgb3V0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHNob3duCiAgICAgICAgbXkgQFNob3dDb2x1bW5zOwogICAgICAgIGlmICggJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICAgICAgbXkgJVBvc3NpYmxlQ29sdW1uID0gJXsgJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICAgICAjIGdldCB0aGUgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAlUG9zc2libGVDb2x1bW4gKSB7CiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRQb3NzaWJsZUNvbHVtbnskTmFtZX07CiAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJE5hbWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZW5mb3JjZSBGQVEgbnVtYmVyIGNvbHVtbiBzaW5jZSBpcyB0aGUgbGluayBNYXN0ZXJBY3Rpb24gaG9vawogICAgICAgICAgICBpZiAoICEkUG9zc2libGVDb2x1bW57J051bWJlcid9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICdOdW1iZXInOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRTGlzdFNob3coCiAgICAgICAgICAgIEZBUUlEcyA9PiBcQFZpZXdhYmxlRkFRSURzLAogICAgICAgICAgICBUb3RhbCAgPT4gc2NhbGFyIEBWaWV3YWJsZUZBUUlEcywKCiAgICAgICAgICAgIFZpZXcgPT4gJFNlbGYtPntWaWV3fSwKCiAgICAgICAgICAgIEVudiAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICBMaW5rU29ydCAgID0+ICRMaW5rU29ydCwKICAgICAgICAgICAgTGlua0ZpbHRlciA9PiAkTGlua0ZpbHRlciwKICAgICAgICAgICAgTGlua0JhY2sgICA9PiAkTGlua0JhY2ssCiAgICAgICAgICAgIFByb2ZpbGUgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKCiAgICAgICAgICAgIFRpdGxlTmFtZSA9PiAnU2VhcmNoIFJlc3VsdCcsCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKCiAgICAgICAgICAgIEZpbHRlciAgICAgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgICAgICBGaWx0ZXJMaW5rID0+ICRGaWx0ZXJMaW5rLAoKICAgICAgICAgICAgT3JkZXJCeSA9PiAkU2VsZi0+e09yZGVyQnl9LAogICAgICAgICAgICBTb3J0QnkgID0+ICRTZWxmLT57U29ydEJ5fSwKCiAgICAgICAgICAgIFNob3dDb2x1bW5zID0+IFxAU2hvd0NvbHVtbnMsCiAgICAgICAgICAgIE5hdiAgICAgICAgID0+ICROYXYsCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwoKICAgICAgICAjIGNyZWF0ZSBvdXRwdXQKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza0Zvcm0oCiAgICAgICAgICAgIE5hdiA9PiAkTmF2LAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBfTWFza0Zvcm0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpMaXN0VHlwZScpIGVxICd0cmVlJyApIHsKICAgICAgICAkVHJlZVZpZXcgPSAxOwogICAgfQoKICAgICMgZ2V0IHByb2ZpbGVzIGxpc3QKICAgIG15ICVQcm9maWxlcyA9ICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVMaXN0KAogICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKCiAgICAjIGJ1aWxkIHByb2ZpbGVzIG91dHB1dCBsaXN0CiAgICAkUGFyYW17UHJvZmlsZXNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUHJvZmlsZXN9LAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnUHJvZmlsZScsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICk7CgogICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGRyb3Bkb3duIG1lbnUgZm9yICdsYW5ndWFnZXMnCiAgICAkUGFyYW17TGFuZ3VhZ2VzU2VsZWN0aW9uU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVMYW5ndWFnZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTGFuZ3VhZ2VJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17TGFuZ3VhZ2VJRHN9IHx8IFtdLAogICAgKTsKCiAgICAjIGdldCBjYXRlZ29yaWVzICh3aXRoIGNhdGVnb3J5IGxvbmcgbmFtZXMpIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIHRoZSBjYXRlZ29yeSBzZWxlY3Rpb24KICAgICRQYXJhbXtDYXRlZ29yaWVzU2VsZWN0aW9uU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcywKICAgICAgICBOYW1lICAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtDYXRlZ29yeUlEc30gfHwgW10sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgVHJlZVZpZXcgICAgPT4gJFRyZWVWaWV3LAogICAgKTsKCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkTGlzdCgpOwoKICAgICMgYnVpbGQgdGhlIHZhbGlkIHNlbGVjdGlvbgogICAgJFBhcmFte1ZhbGlkU2VsZWN0aW9uU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVmFsaWRMaXN0LAogICAgICAgIE5hbWUgICAgICAgID0+ICdWYWxpZElEcycsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1ZhbGlkSURzfSB8fCBbXSwKICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBtaXggb2Ygc3RhdGUgYW5kIHN0YXRlIHR5cGVzIGhhc2ggaW4gb3JkZXIgdG8gaGF2ZSB0aGUgc3RhdGUgdHlwZSBJRHMgd2l0aCBzdGF0ZQogICAgIyBuYW1lcwogICAgbXkgJVN0YXRlTGlzdCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVTdGF0ZXM7CiAgICBmb3IgbXkgJFN0YXRlSUQgKCBzb3J0IGtleXMgJVN0YXRlTGlzdCApIHsKICAgICAgICBteSAlU3RhdGVEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZUdldCgKICAgICAgICAgICAgU3RhdGVJRCA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkU3RhdGVzeyAkU3RhdGVEYXRhe1R5cGVJRH0gfSA9ICRTdGF0ZURhdGF7TmFtZX0KICAgIH0KCiAgICAkUGFyYW17U3RhdGVTZWxlY3Rpb25TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVTdGF0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1N0YXRlSURzJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17U3RhdGVJRHN9IHx8IFtdLAogICAgICAgIFNpemUgICAgICAgID0+IDMsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgKTsKCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+ICdFcXVhbHMnLAogICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+ICdHcmVhdGVyVGhhbicsCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJ0dyZWF0ZXJUaGFuRXF1YWxzJywKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnU21hbGxlclRoYW4nLAogICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+ICdTbWFsbGVyVGhhbkVxdWFscycsCiAgICApOwoKICAgICRQYXJhbXtWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICApOwoKICAgICRQYXJhbXtSYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaFR5cGUnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICApOwogICAgJFBhcmFte1JhdGVTZWFyY2hTZWxlY3Rpb25TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIDAgICA9PiAnMCUnLAogICAgICAgICAgICAyNSAgPT4gJzI1JScsCiAgICAgICAgICAgIDUwICA9PiAnNTAlJywKICAgICAgICAgICAgNzUgID0+ICc3NSUnLAogICAgICAgICAgICAxMDAgPT4gJzEwMCUnLAogICAgICAgIH0sCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNLZXknLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaH0gfHwgJycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICApOwoKICAgICRQYXJhbXtBcHByb3ZlZFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm8gID0+ICdObycsCiAgICAgICAgICAgIFllcyA9PiAnWWVzJywKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQXBwcm92ZWRTZWFyY2gnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17QXBwcm92ZWRTZWFyY2h9IHx8ICcnLAogICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgKTsKCiAgICAjIGdldCBhIGxpc3Qgb2YgYWxsIHVzZXJzIHRvIGRpc3BsYXkKICAgIG15ICVTaG93blVzZXJzID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+VXNlckxpc3QoCiAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZ2V0IHRoZSBVc2VySURzIGZyb20gZmFxIGFuZCBmYXFfYWRtaW4gbWVtYmVycwogICAgbXkgJUdyb3VwVXNlcnM7CiAgICBmb3IgbXkgJEdyb3VwIChxdyhmYXEgZmFxX2FkbWluKSkgewogICAgICAgIG15ICRHcm91cElEID0gJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTG9va3VwKCBHcm91cCA9PiAkR3JvdXAgKTsKICAgICAgICBteSAlVXNlcnMgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICBHcm91cElEID0+ICRHcm91cElELAogICAgICAgICAgICBUeXBlICAgID0+ICdydycsCiAgICAgICAgICAgIFJlc3VsdCAgPT4gJ0hBU0gnLAogICAgICAgICk7CiAgICAgICAgJUdyb3VwVXNlcnMgPSAoICVHcm91cFVzZXJzLCAlVXNlcnMgKTsKICAgIH0KCiAgICAjIHJlbW92ZSBhbGwgdXNlcnMgdGhhdCBhcmUgbm90IGluIHRoZSBmYXEgb3IgZmFxX2FkbWluIGdyb3VwcwogICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVNob3duVXNlcnMgKSB7CiAgICAgICAgaWYgKCAhJEdyb3VwVXNlcnN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkU2hvd25Vc2Vyc3skVXNlcklEfTsKICAgICAgICB9CiAgICB9CiAgICAkUGFyYW17Q3JlYXRlZFVzZXJTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ3JlYXRlZFVzZXJJRHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q3JlYXRlZFVzZXJJRHN9LAogICAgKTsKICAgICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTGFzdENoYW5nZWRVc2VySURzJywKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30sCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJ0xhc3QnICAgPT4gJ3dpdGhpbiB0aGUgbGFzdCAuLi4nLAogICAgICAgICAgICAnQmVmb3JlJyA9PiAnbW9yZSB0aGFuIC4uLiBhZ28nLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+ICdtaW51dGUocyknLAogICAgICAgICAgICBob3VyICAgPT4gJ2hvdXIocyknLAogICAgICAgICAgICBkYXkgICAgPT4gJ2RheShzKScsCiAgICAgICAgICAgIHdlZWsgICA9PiAnd2VlayhzKScsCiAgICAgICAgICAgIG1vbnRoICA9PiAnbW9udGgocyknLAogICAgICAgICAgICB5ZWFyICAgPT4gJ3llYXIocyknLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmVmaXggICA9PiAnSXRlbUNyZWF0ZVRpbWVTdGFydCcsCiAgICAgICAgRm9ybWF0ICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgRGlmZlRpbWUgPT4gLSggKCA2MCAqIDYwICogMjQgKSAqIDMwICksCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNyZWF0ZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJ0xhc3QnICAgPT4gJ3dpdGhpbiB0aGUgbGFzdCAuLi4nLAogICAgICAgICAgICAnQmVmb3JlJyA9PiAnbW9yZSB0aGFuIC4uLiBhZ28nLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+ICdtaW51dGUocyknLAogICAgICAgICAgICBob3VyICAgPT4gJ2hvdXIocyknLAogICAgICAgICAgICBkYXkgICAgPT4gJ2RheShzKScsCiAgICAgICAgICAgIHdlZWsgICA9PiAnd2VlayhzKScsCiAgICAgICAgICAgIG1vbnRoICA9PiAnbW9udGgocyknLAogICAgICAgICAgICB5ZWFyICAgPT4gJ3llYXIocyknLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lU3RhcnRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmVmaXggICA9PiAnSXRlbUNoYW5nZVRpbWVTdGFydCcsCiAgICAgICAgRm9ybWF0ICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgRGlmZlRpbWUgPT4gLSggKCA2MCAqIDYwICogMjQgKSAqIDMwICksCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lU3RvcFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNoYW5nZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgICMgaHRtbCBzZWFyY2ggbWFzayBvdXRwdXQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VhcmNoJywKICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIHNlbGVjdAogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgaHRtbCBzZWFyY2ggbWFzayBvdXRwdXQKICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRU2VhcmNoU21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbSAtIHRvIGdldCBhIGNsb3NlciB2aWV3CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RkFRWm9vbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCBVc2VyT2JqZWN0IEdyb3VwT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgICRTZWxmLT57TGlua09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdC0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBkZWZhdWx0IG9wdGlvbnMKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICAkU2VsZi0+e1ZvdGluZ30gICAgICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Vm90aW5nJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CiAgICAkR2V0UGFyYW17UmF0ZX0gICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JhdGUnICk7CgogICAgIyBnZXQgbmF2aWdhdGlvbiBiYXIgb3B0aW9uCiAgICBteSAkTmF2ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnTmF2JyApIHx8ICcnOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTm8gSXRlbUlEIGlzIGdpdmVuIScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW0gZGF0YQogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICApOwoKICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICRGaWVsZCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gIkZpZWxkIiApOwoKICAgICAgICAjIG5lZWRlZCBwYXJhbXMKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoIEl0ZW1JRCBGaWVsZCApKSB7CiAgICAgICAgICAgIGlmICggISROZWVkZWQgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIFBhcmFtOiAkTmVlZGVkISIsCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSBGaWVsZCBjb250ZW50CiAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uLCB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgfXtBY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CgogICAgICAgICMgYnVpbGQgYmFzZSB1cmwgZm9yIGlubGluZSBpbWFnZXMKICAgICAgICBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgaWYgKCAkU2VsZi0+e1Nlc3Npb25JRH0gJiYgISRTZWxmLT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAgICAgJFNlc3Npb25JRCA9ICc7JyAuICRTZWxmLT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJFNlbGYtPntTZXNzaW9uSUR9OwogICAgICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgICAgICAoQWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD1cZCs7RmlsZUlEPVxkKykKICAgICAgICAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICB9CgogICAgICAgICMgZGV0ZWN0IGFsbCBwbGFpbiB0ZXh0IGxpbmtzIGFuZCBwdXQgdGhlbSBpbnRvIGFuIEhUTUwgPGE+IHRhZwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntIVE1MVXRpbHNPYmplY3R9LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRmllbGRDb250ZW50LAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRhcmdldD0iX2JsYW5rIiBhdHRyaWJ1dGUgdG8gYWxsIEhUTUwgPGE+IHRhZ3MKICAgICAgICAjIHRoZSBMaW5rUXVvdGUgZnVuY3Rpb24gbmVlZHMgdG8gYmUgY2FsbGVkIGFnYWluCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0hUTUxVdGlsc09iamVjdH0tPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIFRhcmdldEFkZCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57SFRNTFV0aWxzT2JqZWN0fS0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gY29tcGxldGUgSFRNTCBhcyBhbiBhdHRhY2htZW50CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgRG93bmxvYWRBdHRhY2htZW50IFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIG1hbmFnZSBwYXJhbWV0ZXJzCiAgICAgICAgJEdldFBhcmFte0ZpbGVJRH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWxlSUQnICk7CgogICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFte0ZpbGVJRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gJ05lZWQgRmlsZUlEJyApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXR0YWNobWVudHMKICAgICAgICBteSAlRmlsZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEdldFBhcmFte0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJUZpbGUpIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCglRmlsZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRHZXRQYXJhbXtGaWxlSUR9KSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkT3V0cHV0OwogICAgaWYgKCAkTmF2IGVxICdOb25lJyApIHsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyIHNtYWxsIGFuZCBubyBOYXZiYXIKICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgb3V0cHV0IGhlYWRlciBhbmQgbmF2aWdhdGlvbiBiYXIKICAgICAgICAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoCiAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICB9CgogICAgIyBnZXQgRkFRIHZvdGUgaW5mb3JtYXRpb24KICAgIG15ICRWb3RlRGF0YTsKICAgIGlmICggJFNlbGYtPntWb3Rpbmd9ICkgewogICAgICAgICRWb3RlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Vm90ZUdldCgKICAgICAgICAgICAgQ3JlYXRlQnkgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgICAgIEludGVyZmFjZSA9PiAkU2VsZi0+e0ludGVyZmFjZX0tPntTdGF0ZUlEfSwKICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHVzZXIgYWxyZWFkeSB2b3RlZCB0aGlzIEZBUSBpdGVtCiAgICBteSAkQWxyZWFkeVZvdGVkOwogICAgaWYgKCRWb3RlRGF0YSkgewoKICAgICAgICAjIGl0ZW0vY2hhbmdlX3RpbWUgPiB2b3RpbmcvY3JlYXRlX3RpbWUKICAgICAgICBteSAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRkFRRGF0YXtDaGFuZ2VkfSB8fCAnJywKICAgICAgICApOwogICAgICAgIG15ICRWb3RlQ3JlYXRlZFN5c3RlbVRpbWUgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5UaW1lU3RhbXAyU3lzdGVtVGltZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRWb3RlRGF0YS0+e0NyZWF0ZWR9IHx8ICcnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lIDw9ICRWb3RlQ3JlYXRlZFN5c3RlbVRpbWUgKSB7CiAgICAgICAgICAgICRBbHJlYWR5Vm90ZWQgPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBWb3RlIFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdWb3RlJyApIHsKCiAgICAgICAgIyB1c2VyIGNhbid0IHVzZSB0aGlzIHN1YmFjdGlvbiBpZiBpcyBub3QgZW5ibGVkCiAgICAgICAgaWYgKCAhJFNlbGYtPntWb3Rpbmd9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIlRoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISIgKTsKICAgICAgICB9CgogICAgICAgICMgdXNlciBjYW4gdm90ZSBvbmx5IG9uY2UgcGVyIEZBUSByZXZpc2lvbgogICAgICAgIGlmICgkQWxyZWFkeVZvdGVkKSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gJ1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSB2b3RlIGlmIGFueQogICAgICAgIGVsc2lmICggZGVmaW5lZCAkR2V0UGFyYW17UmF0ZX0gKSB7CgogICAgICAgICAgICAjIGdldCByYXRlcyBjb25maWcKICAgICAgICAgICAgbXkgJFZvdGluZ1JhdGVzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcycpOwogICAgICAgICAgICBteSAkUmF0ZSAgICAgICAgPSAkR2V0UGFyYW17UmF0ZX07CgogICAgICAgICAgICAjIHNlbmQgZXJyb3IgaWYgcmF0ZSBpcyBub3QgZGVmaW5lZCBpbiBjb25maWcKICAgICAgICAgICAgaWYgKCAhJFZvdGluZ1JhdGVzLT57JFJhdGV9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISIgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgYWRkIHRoZSB2b3RlCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntGQVFPYmplY3R9LT5Wb3RlQWRkKAogICAgICAgICAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIElQICAgICAgICA9PiAkRU5WeydSRU1PVEVfQUREUid9LAogICAgICAgICAgICAgICAgICAgIEludGVyZmFjZSA9PiAkU2VsZi0+e0ludGVyZmFjZX0tPntTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBSYXRlICAgICAgPT4gJEdldFBhcmFte1JhdGV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZG8gbm90IHNob3cgdGhlIHZvdGluZyBmb3JtCiAgICAgICAgICAgICAgICAkQWxyZWFkeVZvdGVkID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlZnJlc2ggRkFRIGl0ZW0gZGF0YQogICAgICAgICAgICAgICAgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoIEluZm8gPT4gJ1RoYW5rcyBmb3IgeW91ciB2b3RlIScgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB1c2VyIGlzIGFibGUgdG8gdm90ZSBidXQgbm8gcmF0ZSBoYXMgYmVlbiBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm90aWZ5KAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgIEluZm8gICAgID0+ICdObyByYXRlIHNlbGVjdGVkIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YSAoU3RpbGwgbmVlZGVkIGZvciBQbGFpblRleHQpCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbiwgdGFrZSBjYXJlIG9mIG9sZCBzdHlsZSBiZWZvcmUgRkFRIDIuMC54CiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9fiBzewogICAgICAgICAgICBBY3Rpb249QWdlbnRGQVEgWyZdKGFtcDspPyBTdWJhY3Rpb249RG93bmxvYWQgWyZdKGFtcDspPwogICAgICAgIH17QWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O31neG1zOwoKICAgICAgICAjIG5vIHF1b3RpbmcgaWYgaHRtbCB2aWV3IGlzIGVuYWJsZWQKICAgICAgICBuZXh0IEZJRUxEIGlmICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBodG1sIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXNlciBpbmZvIChDcmVhdGVkQnkpCiAgICBteSAlVXNlckluZm8gPSAkU2VsZi0+e1VzZXJPYmplY3R9LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJEZBUURhdGF7Q3JlYXRlZEJ5fQogICAgKTsKICAgICRQYXJhbXtDcmVhdGVkQnlVc2VyfSA9ICIkVXNlckluZm97VXNlckZpcnN0bmFtZX0gJFVzZXJJbmZve1VzZXJMYXN0bmFtZX0iOwoKICAgICMgZ2V0IHVzZXIgaW5mbyAoQ2hhbmdlZEJ5KQogICAgJVVzZXJJbmZvID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRGQVFEYXRhe0NoYW5nZWRCeX0KICAgICk7CiAgICAkUGFyYW17Q2hhbmdlZEJ5VXNlcn0gPSAiJFVzZXJJbmZve1VzZXJGaXJzdG5hbWV9ICRVc2VySW5mb3tVc2VyTGFzdG5hbWV9IjsKCiAgICAjIHNldCB2b3RpbmcgcmVzdWx0cwogICAgJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+R2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvcigKICAgICAgICBSYXRlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9LAogICAgKTsKCiAgICBpZiAoICEkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9IHx8ICRGQVFEYXRhe1ZvdGVzfSBlcSAnMCcgKSB7CiAgICAgICAgJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSA9ICdHcmF5JzsKICAgIH0KCiAgICBpZiAoICROYXYgbmUgJ05vbmUnICkgewoKICAgICAgICAjIHJ1biBmYXEgbWVudSBtb2R1bGVzCiAgICAgICAgaWYgKCByZWYgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgIG15ICVNZW51cyAgID0gJXsgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKSB9OwogICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgICAgIGZvciBteSAkTWVudSAoIHNvcnQga2V5cyAlTWVudXMgKSB7CgogICAgICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e01haW5PYmplY3R9LT5SZXF1aXJlKCAkTWVudXN7JE1lbnV9LT57TW9kdWxlfSApICkgewogICAgICAgICAgICAgICAgICAgIG15ICRPYmplY3QgPSAkTWVudXN7JE1lbnV9LT57TW9kdWxlfS0+bmV3KAogICAgICAgICAgICAgICAgICAgICAgICAleyRTZWxmfSwKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgY2xhc3NlcwogICAgICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9IGVxICdQb3BVcCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57Q2xhc3N9ID0gJ0FzUG9wdXAnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0JhY2snICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e0NsYXNzfSA9ICdIaXN0b3J5QmFjayc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkTWVudXN7JE1lbnV9LT57VGFyZ2V0fSBlcSAnQ29uZmlybWF0aW9uRGlhbG9nJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntDbGFzc30gPSAnQXNDb25maXJtYXRpb25EaWFsb2cnOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBydW4gbW9kdWxlCiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXIgPSAkT2JqZWN0LT5SdW4oCiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgRkFRSXRlbSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyID0+ICRDb3VudGVyLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWcgID0+ICRNZW51c3skTWVudX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVJRCAgPT4gJ01lbnUnIC4gJE1lbnUsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCBhcHByb3ZhbCBzdGF0ZQogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CiAgICAgICAgJFBhcmFte0FwcHJvdmFsfSA9ICRGQVFEYXRhe0FwcHJvdmVkfSA/ICdZZXMnIDogJ05vJzsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdWaWV3QXBwcm92YWwnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CgogICAgICAgICMgb3V0cHV0IHZvdGVzIG51bWJlciBpZiBhbnkKICAgICAgICBpZiAoICRGQVFEYXRhe1ZvdGVzfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1ZpZXdWb3RlcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBkaXNwbGF5IGEgTm8gVm90ZXMgZm91bmQgbWVzc2FnZQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdWaWV3Tm9Wb3RlcycgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IEZBUSBwYXRoCiAgICBteSAkU2hvd0ZBUVBhdGggPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgTmF2ICAgICAgICA9PiAkTmF2LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFQYXRoSXRlbUVsZW1lbnQnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgIE5hdiAgPT4gJE5hdiwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBrZXl3b3JkcyBhcyBzZWFyY2ggbGlua3MKICAgIGlmICggJEZBUURhdGF7S2V5d29yZHN9ICkgewoKICAgICAgICAjIHJlcGxhY2UgY29tbWFzIGFuZCBzZW1pY29sb25zCiAgICAgICAgJEZBUURhdGF7S2V5d29yZHN9ID1+IHMvLC8gL2c7CiAgICAgICAgJEZBUURhdGF7S2V5d29yZHN9ID1+IHMvOy8gL2c7CgogICAgICAgIG15IEBLZXl3b3JkcyA9IHNwbGl0IC9ccysvLCAkRkFRRGF0YXtLZXl3b3Jkc307CiAgICAgICAgZm9yIG15ICRLZXl3b3JkIChAS2V5d29yZHMpIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0tleXdvcmRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgbGFuZ3VhZ2VzCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgcmF0aW5nIHN0YXJzCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggJE5hdiBuZSAnTm9uZScgKSB7CgogICAgICAgICMgb3V0cHV0IGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRJbmRleCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBTaG93SW5saW5lID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRlciBhbmQgYWxsIGF0dGFjaG1lbnRzCiAgICAgICAgaWYgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgIG15ICRGQVFCb2R5ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFDb250ZW50U2hvdygKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IHslRkFRRGF0YX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBSZXR1cm5Db250ZW50ICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAkTmF2IG5lICdOb25lJyApIHsKCiAgICAgICAgIyBzaG93IEZBUSBWb3RpbmcKICAgICAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHZvdGluZyBjb25maWcKICAgICAgICAgICAgbXkgJFNob3dWb3RpbmdDb25maWcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpWb3Rpbmc6OlNob3cnKTsKICAgICAgICAgICAgaWYgKCAkU2hvd1ZvdGluZ0NvbmZpZy0+eyAkU2VsZi0+e0ludGVyZmFjZX0tPntOYW1lfSB9ICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgYWxyZWFkeSB2b3RlZCBhZnRlciBsYXN0IGNoYW5nZQogICAgICAgICAgICAgICAgaWYgKCAhJEFscmVhZHlWb3RlZCApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0ZBUVZvdGluZyggRkFRRGF0YSA9PiB7JUZBUURhdGF9ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IGxpbmtlZCBvYmplY3RzCiAgICAgICAgbXkgJExpbmtMaXN0V2l0aERhdGEgPSAkU2VsZi0+e0xpbmtPYmplY3R9LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgICAgICBPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgICAgIEtleSAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgbGluayB0YWJsZSB2aWV3IG1vZGUKICAgICAgICBteSAkTGlua1RhYmxlVmlld01vZGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnTGlua09iamVjdDo6Vmlld01vZGUnKTsKCiAgICAgICAgIyBjcmVhdGUgdGhlIGxpbmsgdGFibGUKICAgICAgICBteSAkTGlua1RhYmxlU3RyZyA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgICAgICBMaW5rTGlzdFdpdGhEYXRhID0+ICRMaW5rTGlzdFdpdGhEYXRhLAogICAgICAgICAgICBWaWV3TW9kZSAgICAgICAgID0+ICRMaW5rVGFibGVWaWV3TW9kZSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB0aGUgbGluayB0YWJsZQogICAgICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnTGlua1RhYmxlJyAuICRMaW5rVGFibGVWaWV3TW9kZSwKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExpbmtUYWJsZVN0cmcgPT4gJExpbmtUYWJsZVN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGxvZyBhY2Nlc3MgdG8gdGhpcyBGQVEgaXRlbQogICAgJFNlbGYtPntGQVFPYmplY3R9LT5GQVFMb2dBZGQoCiAgICAgICAgSXRlbUlEICAgID0+ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKSwKICAgICAgICBJbnRlcmZhY2UgPT4gJFNlbGYtPntJbnRlcmZhY2V9LT57TmFtZX0sCiAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKCiAgICAgICAgIyBvbmx5IGNvbnZlcnQgaHRtbCB0byBwbGFpbiB0ZXh0IGlmIHJpY2ggdGV4dCBlZGl0b3IgaXMgbm90IHVzZWQKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKSApIHsKICAgICAgICAgICAgJEZBUURhdGF7RnVsbEJvZHl9ID0gJEZBUUJvZHk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkRkFRRGF0YXtGdWxsQm9keX0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntIVE1MVXRpbHNPYmplY3R9LT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRGQVFCb2R5LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIHB1YmxpYyBzdGF0ZSB0eXBlCiAgICAgICAgbXkgJFB1YmxpY1N0YXRlVHlwZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1vdmUgaW5saW5lIGltYWdlIGxpbmtzIHRvIGZhcSBpbWFnZXMKICAgICAgICAkRkFRRGF0YXtGdWxsQm9keX0KICAgICAgICAgICAgPX4gc3sgPGltZyBbXjw+XSsgQWN0aW9uPShBZ2VudHxDdXN0b21lcnxQdWJsaWMpRkFRIFtePD5dKyA+IH17fWd4bXM7CgogICAgICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVGlja2V0IENvbXBvc2UKICAgICAgICBteSAkVGlja2V0Q29tcG9zZUNvbmZpZyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlRpY2tldENvbXBvc2UnKTsKCiAgICAgICAgbXkgJFNob3dPckJsb2NrOwoKICAgICAgICAjIHNob3cgIkluc2VydCBUZXh0IiBidXR0b24KICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0luc2VydFRleHRCdXR0b259ICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBkZWZpbmVkICRUaWNrZXRDb21wb3NlQ29uZmlnLT57SW5zZXJ0TWV0aG9kfQogICAgICAgICAgICAgICAgJiYgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9IGVxICdGdWxsJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydEZ1bGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbnNlcnRUZXh0JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNob3dPckJsb2NrID0gMTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgRkFRIGFydGljbGUgaXMgcHVibGljCiAgICAgICAgaWYgKCAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gPT0gJFB1YmxpY1N0YXRlVHlwZS0+e1N0YXRlSUR9ICkgewoKICAgICAgICAgICAgbXkgJEhUVFBUeXBlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0h0dHBUeXBlJyk7CiAgICAgICAgICAgIG15ICRGUUROICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGUUROJyk7CiAgICAgICAgICAgIG15ICRCYXNlbGluayA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jhc2VsaW5rfTsKCiAgICAgICAgICAgICMgcmV3cml0ZSBoYW5kbGUKICAgICAgICAgICAgJEJhc2VsaW5rCiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSB9e3B1YmxpYy5wbD99Z3htczsKCiAgICAgICAgICAgICRGQVFEYXRhe1B1YmxpY2xpbmt9ID0gJEhUVFBUeXBlIC4gJzovLycgLiAkRlFETiAuICRCYXNlbGluawogICAgICAgICAgICAgICAgLiAiQWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPSRGQVFEYXRhe0l0ZW1JRH0iOwoKICAgICAgICAgICAgIyBzaG93ICJJbnNlcnQgTGluayIgYnV0dG9uCiAgICAgICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntTaG93SW5zZXJ0TGlua0J1dHRvbn0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydExpbmsnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNob3dPckJsb2NrID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG93ICJJbnNlcnQgVGV4dCBhbmQgTGluayIgYnV0dG9uCiAgICAgICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntTaG93SW5zZXJ0VGV4dEFuZExpbmtCdXR0b259ICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9CiAgICAgICAgICAgICAgICAgICAgJiYgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9IGVxICdGdWxsJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbnNlcnRGdWxsQW5kTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydFRleHRBbmRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFNob3dPckJsb2NrID0gMQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQ2FuY2VsQnV0dG9uQ2xhc3MgPSAnWm9vbVNtYWxsQnV0dG9uJzsKCiAgICAgICAgIyBzaG93IHRoZSAiT3IiIGJsb2NrIGJldHdlZW4gdGhlIGJ1dHRvbnMgYW5kIHRoZSBDYW5jZWwgJiBjbG9zZSB3aW5kb3cgbGFiZWwKICAgICAgICBpZiAoJFNob3dPckJsb2NrKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlICRDYW5jZWxCdXR0b25DbGFzcyB0byAnJzsKICAgICAgICAgICAgJENhbmNlbEJ1dHRvbkNsYXNzID0gJyc7CiAgICAgICAgfQoKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRWm9vbVNtYWxsJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ2FuY2VsQnV0dG9uQ2xhc3MgPT4gJENhbmNlbEJ1dHRvbkNsYXNzIHx8ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRWm9vbScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgYWRkIGZvb3RlcgogICAgaWYgKCAkTmF2ICYmICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwogICAgfQoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX0ZBUVZvdGluZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CgogICAgIyBvdXB1dCB2b3RpbmcgYmxvY2sKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRVm90aW5nJywKICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICApOwoKICAgICMgZ2V0IFZvdGluZyByYXRlcyBzZXR0aW5nCiAgICBteSAkVm90aW5nUmF0ZXMgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpWb3Rpbmc6OlJhdGVzJyk7CiAgICBmb3IgbXkgJFJhdGVWYWx1ZSAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7JFZvdGluZ1JhdGVzfSApIHsKCiAgICAgICAgIyBjcmVhdGUgZGF0YSBzdHJ1Y3VyZSBmb3Igb3V0cHV0CiAgICAgICAgbXkgJURhdGEgPSAoCiAgICAgICAgICAgIFZhbHVlID0+ICRSYXRlVmFsdWUsCiAgICAgICAgICAgIFRpdGxlID0+ICRWb3RpbmdSYXRlcy0+eyRSYXRlVmFsdWV9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHZvdGUgcmF0aW5nIHJvdyBibG9jawogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUVZvdGluZ1JhdGVSb3cnLAogICAgICAgICAgICBEYXRhID0+IHslRGF0YX0sCiAgICAgICAgKTsKICAgIH0KfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRRXhwbG9yZXIucG0gLSBjdXN0b21lciBGQVEgZXhwbG9yZXIKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSA9IGludCggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gICAgID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9ICAgICB8fCAyMDA7CiAgICAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hQYWdlU2hvd259IHx8IDM7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyBnZXQgY2F0ZWdvcnkgaWQKICAgIG15ICRDYXRlZ29yeUlEID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgY2hlY2sgZm9yIG5vbiBudW1lcmljIENhdGVnb3J5SUQKICAgIGlmICggJENhdGVnb3J5SUQgIX4gL1xkKy8gKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAwOwogICAgfQoKICAgICMgZ2V0IGNhdGVnb3J5IGJ5IG5hbWUKICAgIG15ICRDYXRlZ29yeSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5JyApIHx8ICcnOwoKICAgICMgdHJ5IHRvIGdldCB0aGUgQ2F0ZWdvcnkgSUQgZnJvbSBjYXRlZ29yeSBuYW1lIGlmIG5vIENhdGVnb3J5IElECiAgICBpZiAoICRDYXRlZ29yeSAmJiAhJENhdGVnb3J5SUQgKSB7CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSB0cmVlCiAgICAgICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHJldmVyc2UgdGhlIGhhcyBmb3IgZWFzeSBsb29rdXAKICAgICAgICBteSAlUmV2ZXJzZUNhdGVnb3J5VHJlZSA9IHJldmVyc2UgJXskQ2F0ZWdvcnlUcmVlfTsKCiAgICAgICAgJENhdGVnb3J5SUQgPSAkUmV2ZXJzZUNhdGVnb3J5VHJlZXskQ2F0ZWdvcnl9IHx8IDA7CiAgICB9CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICBteSAlQ2F0ZWdvcnlEYXRhOwogICAgaWYgKCRDYXRlZ29yeUlEKSB7CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICAlQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgICAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHN0b3JlIHRoZSBsYXN0IHNjcmVlbiBvdmVydmlldyBpbiBzZXNzaW9uCiAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckhlYWRlcigKICAgICAgICBWYWx1ZSA9PiAnJywKICAgICk7CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBzaG93IEZBUSBwYXRoCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGFsbCBkaXJlY3Qgc3ViY2F0ZWdvcmllcyBvZiB0aGUgc2VsZWN0ZWQgY2F0ZWdvcnkKICAgIG15ICRDYXRlZ29yeUlEc1JlZiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q3VzdG9tZXJDYXRlZ29yeVNlYXJjaCgKICAgICAgICBQYXJlbnRJRCAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBNb2RlICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgc3ViY2F0ZWdvcmllcyBsaXN0CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdTdWJjYXRlZ29yaWVzJyApOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHQnICk7CgogICAgIyBjaGVjayBpZiB0aGVyZSBhcmUgc3ViY2F0ZWdvcmllcwogICAgaWYgKCAkQ2F0ZWdvcnlJRHNSZWYgJiYgcmVmICRDYXRlZ29yeUlEc1JlZiBlcSAnQVJSQVknICYmIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgIyBzaG93IGRhdGEgZm9yIGVhY2ggc3ViY2F0ZWdvcnkKICAgICAgICBmb3IgbXkgJFN1YkNhdGVnb3J5SUQgKCBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICBteSAlU3ViQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBudW1iZXIgb2Ygc3ViY2F0ZWdvcmllcyBvZiB0aGlzIHN1YmNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7U3ViQ2F0ZWdvcnlDb3VudH0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5Q291bnQoCiAgICAgICAgICAgICAgICBQYXJlbnRJRHMgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIGZhcSBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7QXJ0aWNsZUNvdW50fSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRQ291bnQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgICAgICBPbmx5QXBwcm92ZWQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JVN1YkNhdGVnb3J5RGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZAogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9DYXRlZ29yeURhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlYXJjaCBhbGwgRkFRIGFydGljbGVzIHdpdGhpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyAkU2VsZi0+e1NvcnRCeX0gXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJFNlbGYtPntPcmRlckJ5fSBdLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICA9PiBbJENhdGVnb3J5SURdLAogICAgKTsKCiAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzCiAgICBteSAkU29ydENsYXNzOwoKICAgICMgdGhpcyBzZXRzIHRoZSBvcHBvc2l0IHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgaWYgKCAkU2VsZi0+e09yZGVyQnl9IGVxICdEb3duJyApIHsKICAgICAgICAkU29ydENsYXNzID0gJ1NvcnRBc2NlbmRpbmcnOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e09yZGVyQnl9IGVxICdVcCcgKSB7CiAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICB9CgogICAgIyBzZXQgdGhlIFNvcnRCeSBDbGFzcyB0byB0aGUgY29ycmVjdCBmaWVsZAogICAgbXkgJUNTU1NvcnQ7CiAgICBteSAkU29ydEJ5ID0gJFNlbGYtPntTb3J0Qnl9IC4gJ1NvcnQnOwogICAgJENTU1NvcnR7JFNvcnRCeX0gPSAkU29ydENsYXNzOwoKICAgIG15ICVOZXdPcmRlciA9ICgKICAgICAgICBEb3duID0+ICdVcCcsCiAgICAgICAgVXAgICA9PiAnRG93bicsCiAgICApOwoKICAgICMgc2hvdyB0aGUgRkFRIGFydGljbGUgbGlzdAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFJdGVtTGlzdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICBPcmRlciA9PiAkTmV3T3JkZXJ7ICRTZWxmLT57T3JkZXJCeX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2UgaGVhZGVyCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICAlQ1NTU29ydCwKICAgICAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnsgJFNlbGYtPntPcmRlckJ5fSB9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAwOwogICAgaWYgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAjIGJ1aWxkIHNlYXJjaCByZXN1bHQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFNlbGYtPntTdGFydEhpdH0KICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKyAkU2VsZi0+e1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgYmxvY2tzIHRvIHRlbXBsYXRlCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQKICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRkFRRGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRMaW5rID0gJ1NvcnRCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1NvcnRCeX0gKSAuICc7JzsKICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e09yZGVyQnl9ICkgLiAnOyc7CgogICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgIG15ICVQYWdlTmF2ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICBTdGFydEhpdCAgPT4gJFNlbGYtPntTdGFydEhpdH0sCiAgICAgICAgUGFnZVNob3duID0+ICRTZWxmLT57U2VhcmNoUGFnZVNob3dufSwKICAgICAgICBBbGxIaXRzICAgPT4gJENvdW50ZXIsCiAgICAgICAgQWN0aW9uICAgID0+ICJBY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEIiwKICAgICAgICBMaW5rICAgICAgPT4gJExpbmssCiAgICAgICAgSURQcmVmaXggID0+ICJDdXN0b21lckZBUUV4cGxvcmVyIiwKICAgICk7CgogICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBRdWlja1NlYXJjaAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgQ3VzdG9tZXJVc2VyICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzaG93IGxhc3QgYWRkZWQgYW5kIGxhc3QgdXBkYXRlZCBhcnRpY2xlcwogICAgZm9yIG15ICRUeXBlIChxdyhMYXN0Q3JlYXRlIExhc3RDaGFuZ2UpKSB7CgogICAgICAgIG15ICRTaG93T2sgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJFR5cGUsCiAgICAgICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBDdXN0b21lclVzZXIgICAgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyB0b3AgdGVuIGFydGljbGVzCiAgICBteSAkU2hvd09rID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICBDdXN0b21lclVzZXIgICAgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBlcnJvcgogICAgaWYgKCAhJFNob3dPayApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFFeHBsb3JlcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAlQ2F0ZWdvcnlEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0gLSBwcmludCBsYXlvdXQgZm9yIGFnZW50IGludGVyZmFjZQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpDdXN0b21lckZBUVByaW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHM7CnVzZSBLZXJuZWw6OlN5c3RlbTo6UERGOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0IE1haW5PYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntIVE1MVXRpbHNPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscy0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1BERk9iamVjdH0gICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6UERGLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyglUGFyYW0pOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBkZWZhdWx0IG9wdGlvbnMKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICAkU2VsZi0+e1ZvdGluZ30gICAgICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Vm90aW5nJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBJdGVtSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbm8gcGVybWlzc2lvbiBlcnJvcgogICAgaWYgKAogICAgICAgICEkUGVybWlzc2lvbgogICAgICAgIHx8ICEkRkFRRGF0YXtBcHByb3ZlZH0KICAgICAgICB8fCAhJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LT57ICRGQVFEYXRhe1N0YXRlVHlwZUlEfSB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgIyBwcmVwYXJlIGZpZWxkcyBkYXRhCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIGN1c3RvbWVyIGFuZCBwdWJsaWMgaW50ZXJmYWNlCiAgICAgICAgaWYgKCAkU2VsZi0+e0ludGVyZmFjZX17TmFtZX0gZXEgJ2V4dGVybmFsJyApIHsKICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfQogICAgICAgICAgICAgICAgPX4gc3sgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRWm9vbSB9e2N1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVpvb219Z3htczsKICAgICAgICB9CgogICAgICAgICMgbm8gcXVvdGluZyBpZiBodG1sIHZpZXcgaXMgZW5hYmxlZAogICAgICAgIG5leHQgRklFTEQgaWYgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICAgICAjIGh0bWwgcXVvdGluZwogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIE5ld0xpbmUgICAgICAgID0+IDAsCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgICAgIFZNYXggICAgICAgICAgID0+IDUwMDAsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdlbmVyYXRlIHBkZiBvdXRwdXQKICAgIGlmICggJFNlbGYtPntQREZPYmplY3R9ICkgewogICAgICAgIG15ICRQcmludGVkQnkgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgncHJpbnRlZCBieScpOwogICAgICAgIG15ICRUaW1lICAgICAgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCggVGVtcGxhdGUgPT4gJyRFbnZ7IlRpbWUifScgKTsKICAgICAgICBteSAkVXJsICAgICAgID0gJyAnOwogICAgICAgIGlmICggJEVOVntSRVFVRVNUX1VSSX0gKSB7CiAgICAgICAgICAgICRVcmwgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnSHR0cFR5cGUnKSAuICc6Ly8nCiAgICAgICAgICAgICAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGUUROJykKICAgICAgICAgICAgICAgIC4gJEVOVntSRVFVRVNUX1VSSX07CiAgICAgICAgfQogICAgICAgIG15ICVQYWdlOwoKICAgICAgICAjIGdldCBtYXhpbXVtIG51bWJlciBvZiBwYWdlcwogICAgICAgICRQYWdle01heFBhZ2VzfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgaWYgKCAhJFBhZ2V7TWF4UGFnZXN9IHx8ICRQYWdle01heFBhZ2VzfSA8IDEgfHwgJFBhZ2V7TWF4UGFnZXN9ID4gMTAwMCApIHsKICAgICAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgICAgIH0KICAgICAgICBteSAkSGVhZGVyUmlnaHQgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpIC4gJEZBUURhdGF7TnVtYmVyfTsKICAgICAgICBteSAkSGVhZGxpbmVMZWZ0ID0gJEhlYWRlclJpZ2h0OwogICAgICAgIG15ICRUaXRsZSAgICAgICAgPSAkSGVhZGVyUmlnaHQ7CiAgICAgICAgaWYgKCAkRkFRRGF0YXtUaXRsZX0gKSB7CiAgICAgICAgICAgICRIZWFkbGluZUxlZnQgPSAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgICAgICRUaXRsZSAuPSAnIC8gJyAuICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICB9CgogICAgICAgICRQYWdle01hcmdpblRvcH0gICAgID0gMzA7CiAgICAgICAgJFBhZ2V7TWFyZ2luUmlnaHR9ICAgPSA0MDsKICAgICAgICAkUGFnZXtNYXJnaW5Cb3R0b219ICA9IDQwOwogICAgICAgICRQYWdle01hcmdpbkxlZnR9ICAgID0gNDA7CiAgICAgICAgJFBhZ2V7SGVhZGVyUmlnaHR9ICAgPSAkSGVhZGVyUmlnaHQ7CiAgICAgICAgJFBhZ2V7SGVhZGxpbmVMZWZ0fSAgPSAkSGVhZGxpbmVMZWZ0OwogICAgICAgICRQYWdle0hlYWRsaW5lUmlnaHR9ID0gJFByaW50ZWRCeSAuICcgJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckZpcnN0bmFtZX0gLiAnICcKICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJMYXN0bmFtZX0gLiAnICgnCiAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRW1haWx9IC4gJykgJwogICAgICAgICAgICAuICRUaW1lOwogICAgICAgICRQYWdle0Zvb3RlckxlZnR9ID0gJFVybDsKICAgICAgICAkUGFnZXtQYWdlVGV4dH0gICA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdQYWdlJyk7CiAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSAgPSAxOwoKICAgICAgICAjIGNyZWF0ZSBuZXcgcGRmIGRvY3VtZW50CiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5Eb2N1bWVudE5ldygKICAgICAgICAgICAgVGl0bGUgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQcm9kdWN0JykgLiAnOiAnIC4gJFRpdGxlLAogICAgICAgICAgICBFbmNvZGUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57VXNlckNoYXJzZXR9LAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGZpcnN0IHBkZiBwYWdlCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICApOwogICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKCiAgICAgICAgIyB0eXBlIG9mIHByaW50IHRhZwogICAgICAgIG15ICRQcmludFRhZyA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEgQXJ0aWNsZSBQcmludCcpOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJFByaW50VGFnLAogICAgICAgICAgICBIZWlnaHQgICA9PiA5LAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGQnLAogICAgICAgICAgICBBbGlnbiAgICA9PiAncmlnaHQnLAogICAgICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgZmFxIGluZm9ybWF0aW9uCiAgICAgICAgJFNlbGYtPl9QREZPdXRwdXRGQVFIZWFkZXJJbmZvKAogICAgICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKICAgICAgICAgICAgJFNlbGYtPl9QREZPdXRwdXRLZXl3b3JkcygKICAgICAgICAgICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICAgICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5fUERGT3VwdXRGQVFDb250ZW50KAogICAgICAgICAgICBQYWdlRGF0YSAgICAgICAgPT4gXCVQYWdlLAogICAgICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICk7CgogICAgICAgICMgcmV0dXJuIHRoZSBwZGYgZG9jdW1lbnQKICAgICAgICBteSAkRmlsZW5hbWUgPSAnRkFRXycgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKSwKICAgICAgICApOwogICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICREID0gc3ByaW50ZiggIiUwMmQiLCAkRCApOwogICAgICAgICRoID0gc3ByaW50ZiggIiUwMmQiLCAkaCApOwogICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgIG15ICRQREZTdHJpbmcgPSAkU2VsZi0+e1BERk9iamVjdH0tPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFBERlN0cmluZywKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBodG1sIG91dHB1dAogICAgZWxzZSB7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEhlYWRlciggVmFsdWUgPT4gJEZBUURhdGF7TnVtYmVyfSApOwoKICAgICAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUUNvbnRlbnRTaG93KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBGQVFEYXRhICAgICAgICAgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZmFxCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X0hUTUxNYXNrKAogICAgICAgICAgICBGQVFJRCA9PiAkR2V0UGFyYW17RkFRSUR9LAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICk7CgogICAgICAgICMgYWRkIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEZvb3RlcigpOwoKICAgICAgICAjIHJldHVybiBvdXRwdXQKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9QREZPdXRwdXRGQVFIZWFkZXJJbmZvIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICAjIGNyZWF0ZSBsZWZ0IHRhYmxlCiAgICBteSAkVGFibGVMZWZ0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0NhdGVnb3J5JykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9ICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdTdGF0ZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7U3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgIyBsYW5ndWFnZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgIG15ICRSb3cgPSB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdMYW5ndWFnZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7TGFuZ3VhZ2V9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBjcmVhdGUgcmlnaHQgdGFibGUKICAgIG15ICRUYWJsZVJpZ2h0OwoKICAgICMgdm90aW5nIHJvd3MsIGZlYXRyZSBpcyBlbmFibGVkCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkVGFibGVSaWdodCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1ZvdGVzJykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdSZXN1bHQnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9IC4gIiAlIiwKICAgICAgICAgICAgfSwKICAgICAgICBdOwogICAgfQoKICAgICMgbGFzdCB1cGRhdGUgcm93CiAgICBwdXNoIEB7JFRhYmxlUmlnaHR9LCB7CiAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0xhc3QgdXBkYXRlJykgLiAnOicsCiAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlID0+ICckVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifScsCiAgICAgICAgICAgIERhdGEgICAgID0+IFwlRkFRRGF0YSwKICAgICAgICApLAogICAgfTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0FBQUFBQSc7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JPZGR9ICA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFNlbGYtPntQREZPYmplY3R9LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0S2V5d29yZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwogICAgbXkgJVRhYmxlUGFyYW07CgogICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WzBdWzBde0NvbnRlbnR9ID0gJEZBUURhdGF7S2V5d29yZHN9IHx8ICcnOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gNTExOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRTZWxmLT57UERGT2JqZWN0fS0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnS2V5d29yZHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFNlbGYtPntQREZPYmplY3R9LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3VwdXRGQVFDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgIyBnZXQgdGhlIGNvbmZpZyBvZiBGQVEgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICBteSAlRmllbGRzOwogICAgRklFTEQ6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEZBUSBmaWVsZAogICAgICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJE51bWJlciApOwoKICAgICAgICAjIHNraXAgb3ZlciBub3Qgc2hvd24gZmllbGRzCiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJENvbmZpZy0+e1Nob3d9OwoKICAgICAgICAjIHN0b3JlIG9ubHkgdGhlIGNvbmZpZyBvZiBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICAkRmllbGRzeyAiRmllbGQiIC4gJE51bWJlciB9ID0gJENvbmZpZzsKICAgIH0KCiAgICAjIHNvcnQgc2hvd24gZmllbGRzIGJ5IHByaW9yaXR5CiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKCBzb3J0IHsgJEZpZWxkc3skYX0tPntQcmlvfSA8PT4gJEZpZWxkc3skYn0tPntQcmlvfSB9IGtleXMgJUZpZWxkcyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHN0YXRlIHR5cGUgZGF0YSBvZiB0aGlzIGZpZWxkCiAgICAgICAgbXkgJFN0YXRlVHlwZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRGaWVsZHN7JEZpZWxkfS0+e1Nob3d9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IHNob3cgZmllbGRzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSBnaXZlbiBpbnRlcmZhY2UKICAgICAgICBuZXh0IEZJRUxEIGlmICEkUGFyYW17SW50ZXJmYWNlU3RhdGVzfS0+eyAkU3RhdGVUeXBlRGF0YS0+e1N0YXRlSUR9IH07CgogICAgICAgIG15ICVUYWJsZVBhcmFtOwoKICAgICAgICAjIGNvbnZlcnQgSFRNTCB0byBhc2NpaQogICAgICAgIG15ICRBc2NpaUZpZWxkID0gJFNlbGYtPntIVE1MVXRpbHNPYmplY3R9LT5Ub0FzY2lpKCBTdHJpbmcgPT4gJEZBUURhdGF7JEZpZWxkfSApOwoKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkQXNjaWlGaWVsZCB8fCAnJzsKICAgICAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC0xNSwKICAgICAgICApOwoKICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgZmllbGQgbmFtZSBhbmQgc3RhdGUKICAgICAgICBteSAkRmllbGROYW1lID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRGaWVsZHN7JEZpZWxkfS0+eydDYXB0aW9uJ30gKQogICAgICAgICAgICAuICcgKCcKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJFN0YXRlVHlwZURhdGEtPntOYW1lfSApCiAgICAgICAgICAgIC4gJyknOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC00LAogICAgICAgICk7CgogICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgICAgICMgb3V0cHV0IHRhYmxlCiAgICAgICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9IVE1MTWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2hvdyBMYW5ndWFnZQogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHJhdGluZwogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmF0aW5nJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFQcmludCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtIC0gY3VzdG9tZXIgRkFRIHNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpDdXN0b21lckZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6Q1NWOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskX30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRfISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGUtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntDU1ZPYmplY3R9ICAgICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpDU1YtPm5ldyglUGFyYW0pOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdleHRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkN1c3RvbWVyOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSA9IGludCggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gICAgID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9ICAgICB8fCAyMDA7CiAgICAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hQYWdlU2hvd259IHx8IDQwOwogICAgJFNlbGYtPntTb3J0Qnl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgICRTZWxmLT57T3JkZXJCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlcicgKQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgICRTZWxmLT57UHJvZmlsZX0gICAgICAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKSAgICAgICAgfHwgJyc7CiAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSAgICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NhdmVQcm9maWxlJyApICAgIHx8ICcnOwogICAgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKSB8fCAnJzsKICAgICRTZWxmLT57U2VsZWN0VGVtcGxhdGV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VsZWN0VGVtcGxhdGUnICkgfHwgJyc7CiAgICAkU2VsZi0+e0VyYXNlVGVtcGxhdGV9ICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VyYXNlVGVtcGxhdGUnICkgIHx8ICcnOwoKICAgICMgc2VhcmNoIHdpdGggYSBzYXZlZCB0ZW1wbGF0ZQogICAgaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWFyY2hUZW1wbGF0ZScgKSAmJiAkU2VsZi0+e1Byb2ZpbGV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgIkFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX0iLAogICAgICAgICk7CiAgICB9CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IEZBUSBudW1iZXIKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlci54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBmdWxsdGV4dAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0LnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyByZW1lbWJlciBleGNsdWRlIGF0dHJpYnV0ZXMKICAgIG15IEBFeGNsdWRlcyA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRBcnJheSggUGFyYW0gPT4gJ0V4Y2x1ZGUnICk7CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwoKICAgICMgbG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zIChwcmVzcyBsb2FkIHByb2ZpbGUpCiAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdMb2FkUHJvZmlsZScgJiYgJFNlbGYtPntQcm9maWxlfSApIHx8ICRTZWxmLT57VGFrZUxhc3RTZWFyY2h9ICkgewogICAgICAgICVHZXRQYXJhbSA9ICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ3VzdG9tZXJGQVFTZWFyY2gnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgIGVsc2UgewogICAgICAgIGZvciBteSAkUGFyYW1OYW1lICgKICAgICAgICAgICAgcXcoTnVtYmVyIFRpdGxlIEtleXdvcmQgRnVsbHRleHQgUmVzdWx0Rm9ybSBUaW1lU2VhcmNoVHlwZSBWb3RlU2VhcmNoIFZvdGVTZWFyY2hUeXBlCiAgICAgICAgICAgIFZvdGVTZWFyY2hPcHRpb24gUmF0ZVNlYXJjaCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoT3B0aW9uCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgSXRlbUNyZWF0ZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydCBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3AgSXRlbUNyZWF0ZVRpbWVTdG9wRGF5IEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcFllYXIKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoQ2F0ZWdvcnlJRHMgTGFuZ3VhZ2VJRHMgKSkgewoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGFycmF5IHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgIG15IEBBcnJheSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRBcnJheSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgICAgICAgICBpZiAoQEFycmF5KSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgaXRlbSBuZWVkIHRvIGdldCBleGNsdWRlZAogICAgZm9yIG15ICRFeGNsdWRlIChARXhjbHVkZXMpIHsKICAgICAgICBpZiAoICRHZXRQYXJhbXskRXhjbHVkZX0gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkR2V0UGFyYW17JEV4Y2x1ZGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB2b3RlIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICRHZXRQYXJhbXsnVm90ZVNlYXJjaE9wdGlvbjo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259IGVxICdWb3RlUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnVm90ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgZ2V0IHJhdGUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgJEdldFBhcmFteydSYXRlU2VhcmNoT3B0aW9uOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gZXEgJ1JhdGVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydSYXRlU2VhcmNoT3B0aW9uOjpSYXRlUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBnZXQgdGltZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIHNldCByZXN1bHQgZm9ybSBlbnYKICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KICAgIGlmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CiAgICAgICAgJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ID0gJFNlbGYtPntTZWFyY2hMaW1pdH07CiAgICB9CgogICAgIyBjaGVjayByZXF1ZXN0CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHJlc3VsdCBwYWdlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJFNlbGYtPntFcmFzZVRlbXBsYXRlfSApIHsKCiAgICAgICAgIyBmaWxsIHVwIHByb2ZpbGUgbmFtZSAoZS5nLiB3aXRoIGxhc3Qtc2VhcmNoKQogICAgICAgIGlmICggISRTZWxmLT57UHJvZmlsZX0gfHwgISRTZWxmLT57U2F2ZVByb2ZpbGV9ICkgewogICAgICAgICAgICAkU2VsZi0+e1Byb2ZpbGV9ID0gJ2xhc3Qtc2VhcmNoJzsKICAgICAgICB9CgogICAgICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4KICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO1Byb2ZpbGU9JFNlbGYtPntQcm9maWxlfSIKICAgICAgICAgICAgLiAiO1NvcnRCeT0kU2VsZi0+e1NvcnRCeX07T3JkZXJCeT0kU2VsZi0+e09yZGVyQnl9O1Rha2VMYXN0U2VhcmNoPTEiCiAgICAgICAgICAgIC4gIjtTdGFydEhpdD0kU2VsZi0+e1N0YXJ0SGl0fSI7CgogICAgICAgICMgc3RvcmUgbGFzdCBzY3JlZW4KICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgICAgICRTZWxmLT57U2Vzc2lvbk9iamVjdH0tPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgc2VhcmNoIHByb2ZpbGUgKHVuZGVyIGxhc3Qtc2VhcmNoIG9yIHJlYWwgcHJvZmlsZSBuYW1lKQogICAgICAgICRTZWxmLT57U2F2ZVByb2ZpbGV9ID0gMTsKCiAgICAgICAgIyByZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBpZiAoICRTZWxmLT57U2F2ZVByb2ZpbGV9ICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluc2VydCBuZXcgcHJvZmlsZSBwYXJhbXMKICAgICAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKCBzb3J0IGtleXMgJUdldFBhcmFtICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJFBhcmFtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRHZXRQYXJhbXskUGFyYW1OYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgZnVsbHRleHQgc2VhcmNoCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RnVsbHRleHR9ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Q29udGVudFNlYXJjaH0gPSAnT1InOwogICAgICAgICAgICAkR2V0UGFyYW17V2hhdH0gICAgICAgICAgPSAkR2V0UGFyYW17RnVsbHRleHR9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHZvdGVzIHNlYXJjaAogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtWb3RlU2VhcmNofSApICYmICRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVzfSA9IHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gPT4gJEdldFBhcmFte1ZvdGVTZWFyY2h9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgcmF0ZSBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlfSA9IHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSAlVGltZU1hcCA9ICgKICAgICAgICAgICAgSXRlbUNyZWF0ZSA9PiAnVGltZScsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUaW1lVHlwZSAoIHNvcnQga2V5cyAlVGltZU1hcCApIHsKCiAgICAgICAgICAgICMgZ2V0IGNyZWF0ZSB0aW1lIHNldHRpbmdzCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9ICkgewoKICAgICAgICAgICAgICAgICMgZG8gbm90aGluZyB3aXRoIHRpbWUgc3R1ZmYKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoTW9udGggRGF5KSkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlckRhdGUnIH0gPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDIzOjU5OjU5JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbWludXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdob3VyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2RheScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3dlZWsnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiA3OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbW9udGgnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3llYXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzNjU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ0JlZm9yZScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG1vcmUgdGhhbiAuLi4gYWdvCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnTmV4dCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gLSRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbGFzdCAuLi4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcGVyZm9ybSBGQVEgc2VhcmNoCiAgICAgICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyAkU2VsZi0+e1NvcnRCeX0gXSwKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFN0YXRlcyAgICAgICAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICAgICAgQ29udGVudFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDU1Ygb3V0cHV0CiAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CiAgICAgICAgICAgIG15IEBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWRGF0YTsKCiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGZvcm1hdCB0aGUgY2hhbmdlIHRpbWUKICAgICAgICAgICAgICAgIG15ICRDaGFuZ2VkID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJyRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9JywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZ2V0IGluZm8gZm9yIENTViBvdXRwdXQKICAgICAgICAgICAgICAgIG15ICVDU1ZJbmZvID0gKAogICAgICAgICAgICAgICAgICAgIEZBUU51bWJlciA9PiAkRkFRRGF0YXtOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnkgID0+ICRGQVFEYXRhe0NhdGVnb3J5TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgID0+ICRGQVFEYXRhe0xhbmd1YWdlfSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJEZBUURhdGF7U3RhdGV9LAogICAgICAgICAgICAgICAgICAgIENoYW5nZWQgICA9PiAkQ2hhbmdlZCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gcXcoIEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CgogICAgICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsIHF3KFN0YXRlIENoYW5nZWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbXkgQERhdGE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3skSGVhZGVyfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQENTVkRhdGEsIFxARGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgIyB0cmFuc2xhdGUgbm9uIGV4aXN0aW5nIGhlYWRlciBtYXkgcmVzdWx0IGluIGEgZ2FyYmFnZSBmaWxlCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQENTVkhlYWQgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgcXcoU3RhdGUgQ2hhbmdlZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdHJhbnNsYXRlIGhlYWRlcnMKICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgIyByZXBsYWNlIEZBUU51bWJlciBoZWFkZXIgd2l0aCB0aGUgY3VycmVudCBGQVFIb29rIGZyb20gY29uZmlnCiAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgZXEgJ0ZBUU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgkSGVhZGVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhc3NhYmxlIENTViBkYXRhCiAgICAgICAgICAgIG15ICRDU1YgPSAkU2VsZi0+e0NTVk9iamVjdH0tPkFycmF5MkNTVigKICAgICAgICAgICAgICAgIEhlYWQgICAgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgPT4gXEBDU1ZEYXRhLAogICAgICAgICAgICAgICAgU2VwYXJhdG9yID0+ICRTZWxmLT57VXNlckNTVlNlcGFyYXRvcn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJldHVybiBjc3YgdG8gZG93bmxvYWQKICAgICAgICAgICAgbXkgJENTVkZpbGUgPSAnRkFRX3NlYXJjaCc7CiAgICAgICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lKCksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICAgICAgICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAgICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJENTVkZpbGUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLmNzdiIsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAidGV4dC9jc3Y7IGNoYXJzZXQ9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRDU1YsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCB0YWJsZSBibG9jawogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEhlYWRlciggV2lkdGggPT4gODAwICk7CiAgICAgICAgICAgIGlmICggc2NhbGFyIEBWaWV3YWJsZUZBUUlEcyA9PSAkU2VsZi0+e1NlYXJjaExpbWl0fSApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtXYXJuaW5nfSA9ICckVGV4dHsiUmVhY2hlZCBtYXguIGNvdW50IG9mICVzIHNlYXJjaCBoaXRzISIsICInCiAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e1NlYXJjaExpbWl0fSAuICcifSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckxhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludCcsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRGb290ZXIoKTsKCiAgICAgICAgICAgICMgcmV0dXJuIG91dHB1dAogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKCiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIHJlc3VsdHMgdG8gc2hvdwogICAgICAgIGlmIChAVmlld2FibGVGQVFJRHMpIHsKICAgICAgICAgICAgZm9yIG15ICRGQVFJRCAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIHNlYXJjaCByZXN1bHQKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkU2VsZi0+e1N0YXJ0SGl0fQogICAgICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKyAkU2VsZi0+e1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgYmxvY2tzIHRvIHRlbXBsYXRlCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2Ugc2hvdyBhIG5vIGRhdGEgZm91bmQgbXNnCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBsb29rdXAgdGFibGUgZm9yIGF0dHJpYnV0ZSBzZXR0aW5ncwogICAgICAgIG15ICVBdHRyaWJ1dGVNYXAgPSAoCiAgICAgICAgICAgIE51bWJlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpdGxlID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEtleXdvcmQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdLZXl3b3JkJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBGdWxsdGV4dCA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0Z1bGx0ZXh0JywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDYXRlZ29yeUlEcyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NhdGVnb3J5JywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBMYW5ndWFnZUlEcyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaW1lU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NyZWF0ZSBUaW1lJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWb3RlU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZvdGVzJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBSYXRlU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1JhdGUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmludCBlYWNoIGF0dHJpYnV0ZSBpbiBzZWFyY2ggcmVzdWx0cyBhcmVhLgogICAgICAgIEFUVFJJQlVURToKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAlQXR0cmlidXRlTWFwICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgYXR0cmlidXRlIHdhcyBkZWZpbmVkIGJ5IHRoZSB1c2VyCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgc2V0IGF0dHJpYnV0ZSBuYW1lIGFuZCB0cmFuc2xhdGUgaXQgaWYgYXBwbGllcwogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZU5hbWUgPSAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57TmFtZX07CiAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGVNYXB7JEF0dHJpYnV0ZX0tPntUcmFuc2xhdGFibGV9ICkgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVOYW1lID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJEF0dHJpYnV0ZU5hbWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVWYWx1ZTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSB2YWx1ZXMgaXMgYW4gYXJyYXkgdG8gcGFyc2UgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgaWYgKCByZWYgJEdldFBhcmFteyRBdHRyaWJ1dGV9IGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICMgQ2F0ZWdvcnkgYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdDYXRlZ29yeUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgbG9uZyBuYW1lIGZvciBhbGwgY3VzdG9tZXIgY2F0ZWdvcmllcwogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ2F0ZWdvcnlMaXN0ID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGNhdGVnb3J5IGlkIHRvIGNhdGVnb3J5IGxvbmcgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBteSBAQ2F0ZWdvcnlOYW1lczsKICAgICAgICAgICAgICAgICAgICAgICAgQ0FURUdPUllJRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDYXRlZG9yeUlEICggQHsgJEdldFBhcmFteyRBdHRyaWJ1dGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgISRDYXRlZ29yeUxpc3QtPnskQ2F0ZWRvcnlJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDYXRlZ29yeU5hbWVzLCAkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIHN0cmluZyB3aXRoIGFsbCBzZWxlY3RlZCBjYXRlZ29yeSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSBqb2luKCAiICsgIiwgQENhdGVnb3J5TmFtZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgTGFuZ3VhZ2VJRHMKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0xhbmd1YWdlSURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGxhbmd1YWdlIGlkIHRvIGxhbmd1YWdlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQExhbmd1YWdlTmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIExBTkdVQUdFSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExhbmd1YWdlTmFtZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IExBTkdVQUdFSUQgaWYgISRMYW5ndWFnZU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBMYW5ndWFnZU5hbWVzLCAkTGFuZ3VhZ2VOYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGEgc3RyaW5nIHdpdGggYWxsIHNlbGVjdGVkIGxhbmd1YWdlIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9IGpvaW4oICIgKyAiLCBATGFuZ3VhZ2VOYW1lcyApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSBpcyBhbiBzY2FsYXIgYW5kIGNhbiBiZSBzZXQgZGlyZWN0bHkKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRHZXRQYXJhbXskQXR0cmlidXRlfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdUaW1lU2VhcmNoVHlwZScgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXJ0RGF0ZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGh9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydERheX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnLCAnRGF0ZUZvcm1hdFNob3J0JwogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFN0b3BEYXRlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcFllYXJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wTW9udGh9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wRGF5fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCcsICdEYXRlRm9ybWF0U2hvcnQnCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlICAgICAgPSAnQ3JlYXRlZCBiZXR3ZWVuJzsKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJFN0YXJ0RGF0ZSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnYW5kJykgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFN0b3BEYXRlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXBwaW5nID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xhc3QnICAgPT4gJ0NyZWF0ZWQgd2l0aGluIHRoZSBsYXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCZWZvcmUnID0+ICdDcmVhdGVkIG1vcmUgdGhhbiAuLi4gYWdvJywKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGUgICAgICA9ICRNYXBwaW5nLT57ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+R2V0KCAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0gLiAnKHMpJyApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnVm90ZVNlYXJjaFR5cGUnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn07CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRHZXRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtWb3RlU2VhcmNofTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnUmF0ZVNlYXJjaFR5cGUnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn07CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtSYXRlU2VhcmNofSAuICclJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFRlcm1zJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlID0+ICRBdHRyaWJ1dGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEF0dHJpYnV0ZVZhbHVlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkTGluayA9ICdQcm9maWxlPScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57UHJvZmlsZX0gKSAuICc7JzsKICAgICAgICAkTGluayAuPSAnU29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApIC4gJzsnOwogICAgICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e09yZGVyQnl9ICkgLiAnOyc7CiAgICAgICAgJExpbmsgLj0gJ1Rha2VMYXN0U2VhcmNoPTE7JzsKCiAgICAgICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgICAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICBTdGFydEhpdCAgPT4gJFNlbGYtPntTdGFydEhpdH0sCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0sCiAgICAgICAgICAgIEFsbEhpdHMgICA9PiAkQ291bnRlciwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICJBY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaCIsCiAgICAgICAgICAgIExpbmsgICAgICA9PiAkTGluaywKICAgICAgICAgICAgSURQcmVmaXggID0+ICJDdXN0b21lckZBUVNlYXJjaCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYWdlTmF2e1RvdGFsSGl0c30gJiYgKCAkUGFnZU5hdntUb3RhbEhpdHN9ID4gJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ICkgKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IGh0bWwgcGFnZQogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVySGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyTmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIFNldCB0aGUgU29ydEJ5IENsYXNzCiAgICAgICAgbXkgJFNvcnRDbGFzczsKCiAgICAgICAgIyB0aGlzIHNldHMgdGhlIG9wcG9zaXRlIHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgICAgIGlmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnVXAnICkgewogICAgICAgICAgICAkU29ydENsYXNzID0gJ1NvcnREZXNjZW5kaW5nJzsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MgdG8gdGhlIGNvcnJlY3QgZmllbGQKICAgICAgICBteSAlQ1NTU29ydDsKICAgICAgICBteSAkU29ydEJ5ID0gJFNlbGYtPntTb3J0Qnl9IC4gJ1NvcnQnOwogICAgICAgICRDU1NTb3J0eyRTb3J0Qnl9ID0gJFNvcnRDbGFzczsKCiAgICAgICAgbXkgJU5ld09yZGVyID0gKAogICAgICAgICAgICBEb3duID0+ICdVcCcsCiAgICAgICAgICAgIFVwICAgPT4gJ0Rvd24nLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyAkU2VsZi0+e09yZGVyQnl9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICBPcmRlciAgID0+ICROZXdPcmRlcnsgJFNlbGYtPntPcmRlckJ5fSB9LAogICAgICAgICAgICAgICAgUHJvZmlsZSA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRm9vdGVyKCk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyBlbXB0eSBzZWFyY2ggc2l0ZQogICAgZWxzZSB7CgogICAgICAgICMgZGVsZXRlIHByb2ZpbGUKICAgICAgICBpZiAoICRTZWxmLT57RXJhc2VUZW1wbGF0ZX0gJiYgJFNlbGYtPntQcm9maWxlfSApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJUdldFBhcmFtID0gKCk7CiAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gPSAnJzsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgc2VhcmNoIG1hc2sKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBQcm9maWxlID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIEFyZWEgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgTWFza0Zvcm0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpMaXN0VHlwZScpIGVxICd0cmVlJyApIHsKICAgICAgICAkVHJlZVZpZXcgPSAxOwogICAgfQoKICAgICMgc2V0IG91dHB1dCBmb3JtYXRzIGxpc3QKICAgIG15ICVSZXN1bHRGb3JtID0gKAogICAgICAgIE5vcm1hbCA9PiAnTm9ybWFsJywKICAgICAgICBQcmludCAgPT4gJ1ByaW50JywKICAgICAgICBDU1YgICAgPT4gJ0NTVicsCiAgICApOwoKICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdHMgbGlzdAogICAgJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiB7JVJlc3VsdEZvcm19LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1Jlc3VsdEZvcm0nLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1Jlc3VsdEZvcm19IHx8ICdOb3JtYWwnLAogICAgKTsKCiAgICAjIGdldCBwcm9maWxlcyBsaXN0CiAgICBteSAlUHJvZmlsZXMgPSAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKCiAgICAjIGJ1aWxkIHByb2ZpbGVzIG91dHB1dCBsaXN0CiAgICAkUGFyYW17UHJvZmlsZXNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUHJvZmlsZXN9LAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnUHJvZmlsZScsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICk7CgogICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIGxhbmd1YWdlcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte0xhbmd1YWdlc1N0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IHslTGFuZ3VhZ2VzfSwKICAgICAgICBOYW1lICAgICAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtMYW5ndWFnZUlEc30sCiAgICApOwoKICAgICMgZ2V0IGNhdGVnb3JpZXMgbGlzdAogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkdldEN1c3RvbWVyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIFR5cGUgICAgICAgICA9PiAncncnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgY2F0ZWdvcmllcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte0NhdGVnb3JpZXNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiAkQ2F0ZWdvcmllcywKICAgICAgICBOYW1lICAgICAgID0+ICdDYXRlZ29yeUlEcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtDYXRlZ29yeUlEc30sCiAgICAgICAgVHJlZVZpZXcgICA9PiAkVHJlZVZpZXcsCiAgICApOwoKICAgIG15ICVWb3RpbmdPcGVyYXRvcnMgPSAoCiAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gJ0VxdWFscycsCiAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gJ0dyZWF0ZXJUaGFuJywKICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnR3JlYXRlclRoYW5FcXVhbHMnLAogICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+ICdTbWFsbGVyVGhhbicsCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJ1NtYWxsZXJUaGFuRXF1YWxzJywKICAgICk7CgogICAgJFBhcmFte1ZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1ZvdGVTZWFyY2hUeXBlJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17Vm90ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgKTsKCiAgICAkUGFyYW17UmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaFR5cGUnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICApOwogICAgJFBhcmFte1JhdGVTZWFyY2hTZWxlY3Rpb25TdHJpbmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgMCAgID0+ICcwJScsCiAgICAgICAgICAgIDI1ICA9PiAnMjUlJywKICAgICAgICAgICAgNTAgID0+ICc1MCUnLAogICAgICAgICAgICA3NSAgPT4gJzc1JScsCiAgICAgICAgICAgIDEwMCA9PiAnMTAwJScsCiAgICAgICAgfSwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY0tleScsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2gnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNofSB8fCAnJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CgogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBMYXN0ICAgPT4gJ3dpdGhpbiB0aGUgbGFzdCAuLi4nLAogICAgICAgICAgICBCZWZvcmUgPT4gJ21vcmUgdGhhbiAuLi4gYWdvJywKICAgICAgICB9LAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIG1pbnV0ZSA9PiAnbWludXRlKHMpJywKICAgICAgICAgICAgaG91ciAgID0+ICdob3VyKHMpJywKICAgICAgICAgICAgZGF5ICAgID0+ICdkYXkocyknLAogICAgICAgICAgICB3ZWVrICAgPT4gJ3dlZWsocyknLAogICAgICAgICAgICBtb250aCAgPT4gJ21vbnRoKHMpJywKICAgICAgICAgICAgeWVhciAgID0+ICd5ZWFyKHMpJywKICAgICAgICB9LAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lU3RhcnQnLAogICAgICAgIEZvcm1hdCAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIERpZmZUaW1lID0+IC0oICggNjAgKiA2MCAqIDI0ICkgKiAzMCApLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3B9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNyZWF0ZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgICMgaHRtbCBzZWFyY2ggbWFzayBvdXRwdXQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VhcmNoJywKICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIHNlbGVjdAogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgaHRtbCBzZWFyY2ggbWFzayBvdXRwdXQKICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbSAtIHRvIGdldCBhIGNsb3NlciB2aWV3CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkN1c3RvbWVyRkFRWm9vbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhbGlkOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57VmFsaWRPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGRlZmF1bHQgb3B0aW9ucwogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgICRTZWxmLT57Vm90aW5nfSAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwogICAgJEdldFBhcmFte1JhdGV9ICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdSYXRlJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gJ05lZWQgSXRlbUlEIScgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgZ2V0IHRoZSB2YWxpZCBpZHMKICAgIG15IEBWYWxpZElEcyA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZElEc0dldCgpOwogICAgbXkgJVZhbGlkSURMb29rdXAgPSBtYXAgeyAkXyA9PiAxIH0gQFZhbGlkSURzOwoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICgKICAgICAgICAhJFBlcm1pc3Npb24KICAgICAgICB8fCAhJEZBUURhdGF7QXBwcm92ZWR9CiAgICAgICAgfHwgISRWYWxpZElETG9va3VweyAkRkFRRGF0YXtWYWxpZElEfSB9CiAgICAgICAgfHwgISRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfS0+eyAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgfQoKICAgICMgc3RvcmUgdGhlIGxhc3Qgc2NyZWVuIGluIHNlc3Npb24KICAgICRTZWxmLT57U2Vzc2lvbk9iamVjdH0tPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICRGaWVsZCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gIkZpZWxkIiApOwoKICAgICAgICAjIG5lZWRlZCBwYXJhbXMKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoIEl0ZW1JRCBGaWVsZCApKSB7CiAgICAgICAgICAgIGlmICggISROZWVkZWQgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIFBhcmFtOiAkTmVlZGVkISIsCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSBGaWVsZCBjb250ZW50CiAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uCiAgICAgICAgJEZpZWxkQ29udGVudAogICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRWm9vbX1neG1zOwoKICAgICAgICAjIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICB9e2N1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBidWlsZCBiYXNlIHVybCBmb3IgaW5saW5lIGltYWdlcwogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249Q3VzdG9tZXJGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVxkKztGaWxlSUQ9XGQrKQogICAgICAgICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntIVE1MVXRpbHNPYmplY3R9LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIHJldHVybiBjb21wbGV0ZSBIVE1MIGFzIGFuIGF0dGFjaG1lbnQKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgICMgbWFuYWdlIHBhcmFtZXRlcnMKICAgICAgICAkR2V0UGFyYW17RmlsZUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVJRCcgKTsKICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXtGaWxlSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gJ05lZWQgRmlsZUlEJyApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXR0YWNobWVudHMKICAgICAgICBteSAlRmlsZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEdldFBhcmFte0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJUZpbGUpIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCglRmlsZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRHZXRQYXJhbXtGaWxlSUR9KSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckhlYWRlcigKICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICApOwogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyTmF2aWdhdGlvbkJhcigpOwoKICAgICMgZ2V0IEZBUSB2b3RlIGluZm9ybWF0aW9uCiAgICBteSAkVm90ZURhdGE7CiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkVm90ZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlZvdGVHZXQoCiAgICAgICAgICAgIENyZWF0ZUJ5ICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFNlbGYtPntJbnRlcmZhY2V9LT57U3RhdGVJRH0sCiAgICAgICAgICAgIElQICAgICAgICA9PiAkRU5WeydSRU1PVEVfQUREUid9LAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBpZiB1c2VyIGFscmVhZHkgdm90ZWQgdGhpcyBGQVEgaXRlbQogICAgbXkgJEFscmVhZHlWb3RlZDsKICAgIGlmICgkVm90ZURhdGEpIHsKCiAgICAgICAgIyBpdGVtL2NoYW5nZV90aW1lID4gdm90aW5nL2NyZWF0ZV90aW1lCiAgICAgICAgbXkgJEl0ZW1DaGFuZ2VkU3lzdGVtVGltZSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKAogICAgICAgICAgICBTdHJpbmcgPT4gJEZBUURhdGF7Q2hhbmdlZH0gfHwgJycsCiAgICAgICAgKTsKICAgICAgICBteSAkVm90ZUNyZWF0ZWRTeXN0ZW1UaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkVm90ZURhdGEtPntDcmVhdGVkfSB8fCAnJywKICAgICAgICApOwogICAgICAgIGlmICggJEl0ZW1DaGFuZ2VkU3lzdGVtVGltZSA8PSAkVm90ZUNyZWF0ZWRTeXN0ZW1UaW1lICkgewogICAgICAgICAgICAkQWxyZWFkeVZvdGVkID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgVm90ZSBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnVm90ZScgKSB7CgogICAgICAgICMgY3VzdG9tZXIgY2FuJ3QgdXNlIHRoaXMgc3ViYWN0aW9uIGlmIGlzIG5vdCBlbmJsZWQKICAgICAgICBpZiAoICEkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgdXNlciBjYW4gdm90ZSBvbmx5IG9uY2UgcGVyIEZBUSByZXZpc2lvbgogICAgICAgIGlmICgkQWxyZWFkeVZvdGVkKSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gJ1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSB2b3RlIGlmIGFueQogICAgICAgIGVsc2lmICggZGVmaW5lZCAkR2V0UGFyYW17UmF0ZX0gKSB7CgogICAgICAgICAgICAjIGdldCByYXRlcyBjb25maWcKICAgICAgICAgICAgbXkgJFZvdGluZ1JhdGVzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcycpOwogICAgICAgICAgICBteSAkUmF0ZSAgICAgICAgPSAkR2V0UGFyYW17UmF0ZX07CgogICAgICAgICAgICAjIHNlbmQgZXJyb3IgaWYgcmF0ZSBpcyBub3QgZGVmaW5lZCBpbiBjb25maWcKICAgICAgICAgICAgaWYgKCAhJFZvdGluZ1JhdGVzLT57JFJhdGV9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG90aGVyd2lzZSBhZGQgdGhlIHZvdGUKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0ZBUU9iamVjdH0tPlZvdGVBZGQoCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRTZWxmLT57SW50ZXJmYWNlfS0+e1N0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgIFJhdGUgICAgICA9PiAkR2V0UGFyYW17UmF0ZX0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBkbyBub3Qgc2hvdyB0aGUgdm90aW5nIGZvcm0KICAgICAgICAgICAgICAgICRBbHJlYWR5Vm90ZWQgPSAxOwoKICAgICAgICAgICAgICAgICMgcmVmcmVzaCBGQVEgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoIEluZm8gPT4gJ1RoYW5rcyBmb3IgeW91ciB2b3RlIScgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB1c2VyIGlzIGFibGUgdG8gdm90ZSBidXQgbm8gcmF0ZSBoYXMgYmVlbiBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm90aWZ5KAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgIEluZm8gICAgID0+ICdObyByYXRlIHNlbGVjdGVkIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YSAoU3RpbGwgbmVlZGVkIGZvciBQbGFpblRleHQpCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgIGlmICggJFNlbGYtPntJbnRlcmZhY2V9LT57TmFtZX0gZXEgJ2V4dGVybmFsJyApIHsKCiAgICAgICAgICAgICMgcmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbgogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9CiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRWm9vbX1neG1zOwoKICAgICAgICAgICAgIyB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9fiBzewogICAgICAgICAgICAgICAgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICAgICAgfXtjdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CiAgICAgICAgfQoKICAgICAgICAjIG5vIHF1b3RpbmcgaWYgaHRtbCB2aWV3IGlzIGVuYWJsZWQKICAgICAgICBuZXh0IEZJRUxEIGlmICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBodG1sIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgdm90aW5nIHJlc3VsdHMKICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkdldEZBUUl0ZW1Wb3RpbmdSYXRlQ29sb3IoCiAgICAgICAgUmF0ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICk7CgogICAgaWYgKCAhJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSB8fCAkRkFRRGF0YXtWb3Rlc30gZXEgJzAnICkgewogICAgICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAnR3JheSc7CiAgICB9CgogICAgIyBzaG93IGJhY2sgbGluawogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdCYWNrJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgc2hvdyBsYW5ndWFnZQogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHZvdGVzCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKCiAgICAgICAgIyBhbHdheXMgZGlwbGF5cyBWb3RlcyByZXN1bHQgZXZlbiBpZiBpdHMgMAogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1ZpZXdWb3RlcycsCiAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBGQVEgcGF0aAogICAgbXkgJFNob3dGQVFQYXRoID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFQYXRoSXRlbUVsZW1lbnQnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cga2V5d29yZHMgYXMgc2VhcmNoIGxpbmtzCiAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKCiAgICAgICAgIyByZXBsYWNlIGNvbW1hcyBhbmQgc2VtaWNvbG9ucwogICAgICAgICRGQVFEYXRhe0tleXdvcmRzfSA9fiBzLywvIC9nOwogICAgICAgICRGQVFEYXRhe0tleXdvcmRzfSA9fiBzLzsvIC9nOwoKICAgICAgICBteSBAS2V5d29yZHMgPSBzcGxpdCAvXHMrLywgJEZBUURhdGF7S2V5d29yZHN9OwogICAgICAgIGZvciBteSAkS2V5d29yZCAoQEtleXdvcmRzKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdLZXl3b3JkcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgcmF0aW5nIHN0YXJzCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBhdHRhY2htZW50cyBpZiBhbnkKICAgIG15IEBBdHRhY2htZW50SW5kZXggPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudEhlYWRlcicsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JUZBUURhdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBGQVEgVm90aW5nCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKCiAgICAgICAgIyBnZXQgdm90aW5nIGNvbmZpZwogICAgICAgIG15ICRTaG93Vm90aW5nQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpTaG93Jyk7CiAgICAgICAgaWYgKCAkU2hvd1ZvdGluZ0NvbmZpZy0+eyAkU2VsZi0+e0ludGVyZmFjZX0tPntOYW1lfSB9ICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgdXNlciBhbHJlYWR5IHZvdGVkIGFmdGVyIGxhc3QgY2hhbmdlCiAgICAgICAgICAgIGlmICggISRBbHJlYWR5Vm90ZWQgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+X0ZBUVZvdGluZyggRkFRRGF0YSA9PiB7JUZBUURhdGF9ICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBsb2cgYWNjZXNzIHRvIHRoaXMgRkFRIGl0ZW0KICAgICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRTG9nQWRkKAogICAgICAgIEl0ZW1JRCAgICA9PiAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICksCiAgICAgICAgSW50ZXJmYWNlID0+ICRTZWxmLT57SW50ZXJmYWNlfS0+e05hbWV9LAogICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFab29tJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9GQVFWb3RpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwoKICAgICMgb3VwdXQgdm90aW5nIGJsb2NrCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUVZvdGluZycsCiAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgKTsKCiAgICAjIGdldCBWb3RpbmcgcmF0ZXMgc2V0dGluZwogICAgbXkgJFZvdGluZ1JhdGVzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcycpOwogICAgZm9yIG15ICRSYXRlVmFsdWUgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyRWb3RpbmdSYXRlc30gKSB7CgogICAgICAgICMgY3JlYXRlIGRhdGEgc3RydWN1cmUgZm9yIG91dHB1dAogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBWYWx1ZSA9PiAkUmF0ZVZhbHVlLAogICAgICAgICAgICBUaXRsZSA9PiAkVm90aW5nUmF0ZXMtPnskUmF0ZVZhbHVlfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB2b3RlIHJhdGluZyByb3cgYmxvY2sKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFWb3RpbmdSYXRlUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7JURhdGF9LAogICAgICAgICk7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUS5wbSAtIFRoaXMgbW9kdWxlIHJlZGlyZWN0cyB0byBQdWJsaWNGQVFab29tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OlB1YmxpY0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0ICkpIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlZGlyZWN0ID0gJEVOVntSRVFVRVNUX1VSSX07CgogICAgaWYgKCRSZWRpcmVjdCkgewogICAgICAgICRSZWRpcmVjdCA9fiBze1B1YmxpY0ZBUX17UHVibGljRkFRWm9vbX14bXM7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUmVkaXJlY3QgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntCYXNlbGlua30KICAgICAgICAgICAgLiAnQWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPScKICAgICAgICAgICAgLiAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgT1AgPT4gJFJlZGlyZWN0LAogICAgKTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtIC0gcHVibGljIEZBUSBleHBsb3JlcgojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpQdWJsaWNGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgZGF0YQogICAgJFNlbGYtPntTdGFydEhpdH0gPSBpbnQoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ICAgICA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaExpbWl0fSAgICAgfHwgMjAwOwogICAgJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoUGFnZVNob3dufSB8fCAzOwogICAgJFNlbGYtPntTb3J0Qnl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgICRTZWxmLT57T3JkZXJCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlcicgKQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgICMgZ2V0IEl0ZW0gSUQKICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICkgfHwgMDsKCiAgICAjIGNoZWNrIGlmIEl0ZW1JRCBwYXJhbWV0ZXIgd2FzIHNlbnQgYW5kIHJlZGlyZWN0IHRvIEZBUSBhcnRpY2xlIHpvb20gc2NyZWVuCiAgICBpZiAoJEl0ZW1JRCkgewoKICAgICAgICAjIHJlZGlyZWN0IHRvIEZBUSB6b29tCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoIE9QID0+ICdBY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9JyAuICRJdGVtSUQgKTsKICAgIH0KCiAgICAjIGdldCBjYXRlZ29yeSBpZAogICAgbXkgJENhdGVnb3J5SUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeUlEJyApIHx8IDA7CgogICAgIyBjaGVjayBmb3Igbm9uIG51bWVyaWMgQ2F0ZWdvcnlJRAogICAgaWYgKCAkQ2F0ZWdvcnlJRCAhfiAvXGQrLyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRCA9IDA7CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcnkgYnkgbmFtZQogICAgbXkgJENhdGVnb3J5ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnknICkgfHwgJyc7CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBDYXRlZ29yeSBJRCBmcm9tIGNhdGVnb3J5IG5hbWUgaWYgbm8gQ2F0ZWdvcnkgSUQKICAgIGlmICggJENhdGVnb3J5ICYmICEkQ2F0ZWdvcnlJRCApIHsKCiAgICAgICAgIyBnZXQgdGhlIGNhdGVnb3J5IHRyZWUKICAgICAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHJldmVyc2UgdGhlIGhhcyBmb3IgZWFzeSBsb29rdXAKICAgICAgICBteSAlUmV2ZXJzZUNhdGVnb3J5VHJlZSA9IHJldmVyc2UgJXskQ2F0ZWdvcnlUcmVlfTsKCiAgICAgICAgJENhdGVnb3J5SUQgPSAkUmV2ZXJzZUNhdGVnb3J5VHJlZXskQ2F0ZWdvcnl9IHx8IDA7CiAgICB9CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICBteSAlQ2F0ZWdvcnlEYXRhOwogICAgaWYgKCRDYXRlZ29yeUlEKSB7CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICAlQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCByc3MgZmVlZCBsaW5rIGZvciBuZXcgRkFRIGFydGljbGVzIGluIHRoZSBicm93c2VyIFVSTCBiYXIKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnYWx0ZXJuYXRlJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknKSwKICAgICAgICAgICAgSHJlZiAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRUlNTO1R5cGU9Q3JlYXRlZCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgcnNzIGZlZWQgbGluayBmb3IgY2hhbmdlZCBGQVEgYXJ0aWNsZXMgaW4gdGhlIGJyb3dzZXIgVVJMIGJhcgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgPT4gJ2FsdGVybmF0ZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnLAogICAgICAgICAgICBUaXRsZSA9PgogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknKSwKICAgICAgICAgICAgSHJlZiA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFSU1M7VHlwZT1DaGFuZ2VkJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCByc3MgZmVlZCBsaW5rIGZvciBUb3AxMCBGQVEgYXJ0aWNsZXMgaW4gdGhlIGJyb3dzZXIgVVJMIGJhcgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdhbHRlcm5hdGUnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vcnNzK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEgQXJ0aWNsZXMgKFRvcCAxMCknKSwKICAgICAgICAgICAgSHJlZiAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRUlNTO1R5cGU9VG9wMTAnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJIZWFkZXIoKTsKCiAgICAjIHNob3cgRkFRIHBhdGgKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRUGF0aFNob3coCiAgICAgICAgRkFRT2JqZWN0ICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgYWxsIGRpcmVjdCBzdWJjYXRlZ29yaWVzIG9mIHRoZSBzZWxlY3RlZCBjYXRlZ29yeQogICAgbXkgJENhdGVnb3J5SURzUmVmID0gJFNlbGYtPntGQVFPYmplY3R9LT5QdWJsaWNDYXRlZ29yeVNlYXJjaCgKICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBNb2RlICAgICA9PiAnUHVibGljJywKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBzdWJjYXRlZ29yaWVzIGxpc3QKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ1N1YmNhdGVnb3JpZXMnICk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdPdmVydmlld1Jlc3VsdCcgKTsKCiAgICAjIGNoZWNrIGlmIHRoZXJlIGFyZSBzdWJjYXRlZ29yaWVzCiAgICBpZiAoICRDYXRlZ29yeUlEc1JlZiAmJiByZWYgJENhdGVnb3J5SURzUmVmIGVxICdBUlJBWScgJiYgQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAjIHNob3cgZGF0YSBmb3IgZWFjaCBzdWJjYXRlZ29yeQogICAgICAgIGZvciBteSAkU3ViQ2F0ZWdvcnlJRCAoIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgIG15ICVTdWJDYXRlZ29yeURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBzdWJjYXRlZ29yaWVzIG9mIHRoaXMgc3ViY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtTdWJDYXRlZ29yeUNvdW50fSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlDb3VudCgKICAgICAgICAgICAgICAgIFBhcmVudElEcyA9PiBbJFN1YkNhdGVnb3J5SURdLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBudW1iZXIgb2YgZmFxIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtBcnRpY2xlQ291bnR9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFDb3VudCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SURzICA9PiBbJFN1YkNhdGVnb3J5SURdLAogICAgICAgICAgICAgICAgSXRlbVN0YXRlcyAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIE9ubHlBcHByb3ZlZCA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslU3ViQ2F0ZWdvcnlEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0NhdGVnb3J5RGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgICMgc2VhcmNoIGFsbCBGQVEgYXJ0aWNsZXMgd2l0aGluIHRoZSBnaXZlbiBjYXRlZ29yeQogICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbICRTZWxmLT57U29ydEJ5fSBdLAogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAkU2VsZi0+e09yZGVyQnl9IF0sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+IFskQ2F0ZWdvcnlJRF0sCiAgICApOwoKICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MKICAgIG15ICRTb3J0Q2xhc3M7CgogICAgIyB0aGlzIHNldHMgdGhlIG9wcG9zaXQgdG8gdGhlIE9yZGVyQnkgcGFyYW1ldGVyCiAgICBpZiAoICRTZWxmLT57T3JkZXJCeX0gZXEgJ0Rvd24nICkgewogICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57T3JkZXJCeX0gZXEgJ1VwJyApIHsKICAgICAgICAkU29ydENsYXNzID0gJ1NvcnREZXNjZW5kaW5nJzsKICAgIH0KCiAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzIHRvIHRoZSBjb3JyZWN0IGZpZWxkCiAgICBteSAlQ1NTU29ydDsKICAgIG15ICRTb3J0QnkgPSAkU2VsZi0+e1NvcnRCeX0gLiAnU29ydCc7CiAgICAkQ1NTU29ydHskU29ydEJ5fSA9ICRTb3J0Q2xhc3M7CgogICAgbXkgJU5ld09yZGVyID0gKAogICAgICAgIERvd24gPT4gJ1VwJywKICAgICAgICBVcCAgID0+ICdEb3duJywKICAgICk7CgogICAgIyBzaG93IHRoZSBGQVEgYXJ0aWNsZSBsaXN0CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUUl0ZW1MaXN0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnsgJFNlbGYtPntPcmRlckJ5fSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyAkU2VsZi0+e09yZGVyQnl9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQ291bnRlciA9IDA7CiAgICBpZiAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICMgY3JlYXRlIGJhY2sgbGluayBmb3IgRkFRIFpvb20gc2NyZWVuCiAgICAgICAgbXkgJFpvb21CYWNrTGluayA9ICJBY3Rpb249UHVibGljRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRDsiCiAgICAgICAgICAgIC4gIlNvcnRCeT0kU2VsZi0+e1NvcnRCeX07T3JkZXI9JFNlbGYtPntPcmRlckJ5fTtTdGFydEhpdD0kU2VsZi0+e1N0YXJ0SGl0fSI7CgogICAgICAgICMgZW5jb2RlIGJhY2sgbGluayB0byBCYXNlNjQgZm9yIGVhc3kgSFRNTCB0cmFuc3BvcnQKICAgICAgICAkWm9vbUJhY2tMaW5rID0gTUlNRTo6QmFzZTY0OjplbmNvZGVfYmFzZTY0KCRab29tQmFja0xpbmspOwoKICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAjIGJ1aWxkIHNlYXJjaCByZXN1bHQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFNlbGYtPntTdGFydEhpdH0KICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKyAkU2VsZi0+e1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgYmxvY2tzIHRvIHRlbXBsYXRlCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBab29tQmFja0xpbmsgPT4gJFpvb21CYWNrTGluaywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0ZBUURhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTGluayA9ICdTb3J0Qnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTb3J0Qnl9ICkgLiAnOyc7CiAgICAkTGluayAuPSAnT3JkZXI9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApIC4gJzsnOwoKICAgICMgYnVpbGQgc2VhcmNoIG5hdmlnYXRpb24gYmFyCiAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgU3RhcnRIaXQgID0+ICRTZWxmLT57U3RhcnRIaXR9LAogICAgICAgIFBhZ2VTaG93biA9PiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0sCiAgICAgICAgQWxsSGl0cyAgID0+ICRDb3VudGVyLAogICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JENhdGVnb3J5SUQiLAogICAgICAgIExpbmsgICAgICA9PiAkTGluaywKICAgICAgICBJRFByZWZpeCAgPT4gIlB1YmxpY0ZBUUV4cGxvcmVyIiwKICAgICk7CgogICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBRdWlja1NlYXJjaAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZCBhbmQgbGFzdCB1cGRhdGVkIGFydGljbGVzCiAgICBmb3IgbXkgJFR5cGUgKHF3KExhc3RDcmVhdGUgTGFzdENoYW5nZSkpIHsKCiAgICAgICAgbXkgJFNob3dPayA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRU2hvd0xhdGVzdE5ld3NCb3goCiAgICAgICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyB0b3AgdGVuIGFydGljbGVzCiAgICBteSAkU2hvd09rID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGVycm9yCiAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFFeHBsb3JlcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAlQ2F0ZWdvcnlEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVByaW50LnBtIC0gcHJpbnQgbGF5b3V0IGZvciBhZ2VudCBpbnRlcmZhY2UKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUHJpbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlsczsKdXNlIEtlcm5lbDo6U3lzdGVtOjpQREY7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QgTWFpbk9iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgICMgY3JlYXRlIGFkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0hUTUxVdGlsc09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57UERGT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpQREYtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgZGVmYXVsdCBvcHRpb25zCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwogICAgJFNlbGYtPntWb3Rpbmd9ICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBJdGVtSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgc2hvdyBubyBwZXJtaXNzaW9uIGVycm9yCiAgICBpZiAoCiAgICAgICAgISRGQVFEYXRhe0FwcHJvdmVkfQogICAgICAgIHx8ICEkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30tPnsgJEZBUURhdGF7U3RhdGVUeXBlSUR9IH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICAjIHByZXBhcmUgZmllbGRzIGRhdGEKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAocXcoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZBUURhdGF7JEZpZWxkfTsKCiAgICAgICAgIyByZXdyaXRlIGxpbmtzIHRvIGVtYmVkZGVkIGltYWdlcyBmb3IgY3VzdG9tZXIgYW5kIHB1YmxpYyBpbnRlcmZhY2UKICAgICAgICBpZiAoICRTZWxmLT57SW50ZXJmYWNlfXtOYW1lfSBlcSAncHVibGljJyApIHsKICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfQogICAgICAgICAgICAgICAgPX4gc3sgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRWm9vbSB9e3B1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRWm9vbX1neG1zOwogICAgICAgIH0KCiAgICAgICAgIyBubyBxdW90aW5nIGlmIGh0bWwgdmlldyBpcyBlbmFibGVkCiAgICAgICAgbmV4dCBGSUVMRCBpZiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpIVE1MJyk7CgogICAgICAgICMgaHRtbCBxdW90aW5nCiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgTmV3TGluZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICAgICAgVk1heCAgICAgICAgICAgPT4gNTAwMCwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2VuZXJhdGUgcGRmIG91dHB1dAogICAgaWYgKCAkU2VsZi0+e1BERk9iamVjdH0gKSB7CiAgICAgICAgbXkgJFRpbWUgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCggVGVtcGxhdGUgPT4gJyRFbnZ7IlRpbWUifScgKTsKICAgICAgICBteSAkVXJsID0gJyAnOwogICAgICAgIGlmICggJEVOVntSRVFVRVNUX1VSSX0gKSB7CiAgICAgICAgICAgICRVcmwgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnSHR0cFR5cGUnKSAuICc6Ly8nCiAgICAgICAgICAgICAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGUUROJykKICAgICAgICAgICAgICAgIC4gJEVOVntSRVFVRVNUX1VSSX07CiAgICAgICAgfQogICAgICAgIG15ICVQYWdlOwoKICAgICAgICAjIGdldCBtYXhpbXVtIG51bWJlciBvZiBwYWdlcwogICAgICAgICRQYWdle01heFBhZ2VzfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgaWYgKCAhJFBhZ2V7TWF4UGFnZXN9IHx8ICRQYWdle01heFBhZ2VzfSA8IDEgfHwgJFBhZ2V7TWF4UGFnZXN9ID4gMTAwMCApIHsKICAgICAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgICAgIH0KICAgICAgICBteSAkSGVhZGVyUmlnaHQgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpIC4gJEZBUURhdGF7TnVtYmVyfTsKICAgICAgICBteSAkSGVhZGxpbmVMZWZ0ID0gJEhlYWRlclJpZ2h0OwogICAgICAgIG15ICRUaXRsZSAgICAgICAgPSAkSGVhZGVyUmlnaHQ7CiAgICAgICAgaWYgKCAkRkFRRGF0YXtUaXRsZX0gKSB7CiAgICAgICAgICAgICRIZWFkbGluZUxlZnQgPSAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgICAgICRUaXRsZSAuPSAnIC8gJyAuICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICB9CgogICAgICAgICRQYWdle01hcmdpblRvcH0gICAgID0gMzA7CiAgICAgICAgJFBhZ2V7TWFyZ2luUmlnaHR9ICAgPSA0MDsKICAgICAgICAkUGFnZXtNYXJnaW5Cb3R0b219ICA9IDQwOwogICAgICAgICRQYWdle01hcmdpbkxlZnR9ICAgID0gNDA7CiAgICAgICAgJFBhZ2V7SGVhZGVyUmlnaHR9ICAgPSAkSGVhZGVyUmlnaHQ7CiAgICAgICAgJFBhZ2V7SGVhZGxpbmVMZWZ0fSAgPSAkSGVhZGxpbmVMZWZ0OwogICAgICAgICRQYWdle0hlYWRsaW5lUmlnaHR9ID0gJFRpbWU7CiAgICAgICAgJFBhZ2V7Rm9vdGVyTGVmdH0gICAgPSAkVXJsOwogICAgICAgICRQYWdle1BhZ2VUZXh0fSAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1BhZ2UnKTsKICAgICAgICAkUGFnZXtQYWdlQ291bnR9ICAgICA9IDE7CgogICAgICAgICMgY3JlYXRlIG5ldyBwZGYgZG9jdW1lbnQKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPkRvY3VtZW50TmV3KAogICAgICAgICAgICBUaXRsZSAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgIEVuY29kZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyQ2hhcnNldH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgZmlyc3QgcGRmIHBhZ2UKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICk7CiAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwoKICAgICAgICAjIHR5cGUgb2YgcHJpbnQgdGFnCiAgICAgICAgbXkgJFByaW50VGFnID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUSBBcnRpY2xlIFByaW50Jyk7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5UZXh0KAogICAgICAgICAgICBUZXh0ICAgICA9PiAkUHJpbnRUYWcsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDksCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZCcsCiAgICAgICAgICAgIEFsaWduICAgID0+ICdyaWdodCcsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDksCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBmYXEgaW5mb3JtYXRpb24KICAgICAgICAkU2VsZi0+X1BERk91dHB1dEZBUUhlYWRlckluZm8oCiAgICAgICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICk7CgogICAgICAgIGlmICggJEZBUURhdGF7S2V5d29yZHN9ICkgewogICAgICAgICAgICAkU2VsZi0+X1BERk91dHB1dEtleXdvcmRzKAogICAgICAgICAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPl9QREZPdXB1dEZBUUNvbnRlbnQoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIEZBUURhdGEgICAgICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gdGhlIHBkZiBkb2N1bWVudAogICAgICAgIG15ICRGaWxlbmFtZSA9ICdGQVFfJyAuICRGQVFEYXRhe051bWJlcn07CiAgICAgICAgbXkgKCAkcywgJG0sICRoLCAkRCwgJE0sICRZICkgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lMkRhdGUoCiAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpLAogICAgICAgICk7CiAgICAgICAgJE0gPSBzcHJpbnRmKCAiJTAyZCIsICRNICk7CiAgICAgICAgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREICk7CiAgICAgICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAgICAgJG0gPSBzcHJpbnRmKCAiJTAyZCIsICRtICk7CiAgICAgICAgbXkgJFBERlN0cmluZyA9ICRTZWxmLT57UERGT2JqZWN0fS0+RG9jdW1lbnRPdXRwdXQoKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLnBkZiIsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdlbmVyYXRlIGh0bWwgb3V0cHV0CiAgICBlbHNlIHsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50SGVhZGVyKCBWYWx1ZSA9PiAkRkFRRGF0YXtOdW1iZXJ9ICk7CgogICAgICAgICMgc2hvdyBGQVEgQ29udGVudAogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRQ29udGVudFNob3coCiAgICAgICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBmYXEKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fSFRNTE1hc2soCiAgICAgICAgICAgIEZBUUlEID0+ICRHZXRQYXJhbXtGQVFJRH0sCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50Rm9vdGVyKCk7CgogICAgICAgICMgcmV0dXJuIG91dHB1dAogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgX1BERk91dHB1dEZBUUhlYWRlckluZm8gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgY3JlYXRlIGxlZnQgdGFibGUKICAgIG15ICRUYWJsZUxlZnQgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnQ2F0ZWdvcnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRGQVFEYXRhe0NhdGVnb3J5TmFtZX0gKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1N0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRkFRRGF0YXtTdGF0ZX0gKSwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGxhbmd1YWdlIHJvdywgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgbXkgJFJvdyA9IHsKICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0xhbmd1YWdlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRkFRRGF0YXtMYW5ndWFnZX0gKSwKICAgICAgICB9OwogICAgICAgIHB1c2ggQHskVGFibGVMZWZ0fSwgJFJvdzsKICAgIH0KCiAgICAjIGNyZWF0ZSByaWdodCB0YWJsZQogICAgbXkgJFRhYmxlUmlnaHQ7CgogICAgIyB2b3Rpbmcgcm93cywgZmVhdHJlIGlzIGVuYWJsZWQKICAgIGlmICggJFNlbGYtPntWb3Rpbmd9ICkgewogICAgICAgICRUYWJsZVJpZ2h0ID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnVm90ZXMnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1Jlc3VsdCcpIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0gLiAiICUiLAogICAgICAgICAgICB9LAogICAgICAgIF07CiAgICB9CgogICAgIyBsYXN0IHVwZGF0ZSByb3cKICAgIHB1c2ggQHskVGFibGVSaWdodH0sIHsKICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnTGFzdCB1cGRhdGUnKSAuICc6JywKICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJyRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9JywKICAgICAgICAgICAgRGF0YSAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgICksCiAgICB9OwoKICAgIG15ICRSb3dzID0gQHskVGFibGVMZWZ0fTsKICAgIGlmICggQHskVGFibGVSaWdodH0gPiAkUm93cyApIHsKICAgICAgICAkUm93cyA9IEB7JFRhYmxlUmlnaHR9OwogICAgfQoKICAgIG15ICVUYWJsZVBhcmFtOwogICAgZm9yIG15ICRSb3cgKCAxIC4uICRSb3dzICkgewogICAgICAgICRSb3ctLTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gICAgICAgICA9ICRUYWJsZUxlZnQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntWYWx1ZX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzJde0NvbnRlbnR9ICAgICAgICAgPSAnICc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzJde0JhY2tncm91bmRDb2xvcn0gPSAnI0ZGRkZGRic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57S2V5fTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bM117Rm9udH0gICAgICAgICAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bNF17Q29udGVudH0gICAgICAgICA9ICRUYWJsZVJpZ2h0LT5bJFJvd10tPntWYWx1ZX07CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSAxNzAuNTsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzJde1dpZHRofSA9IDQ7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVszXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzRde1dpZHRofSA9IDE3MC41OwoKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JFdmVufSA9ICcjQUFBQUFBJzsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvck9kZH0gID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRLZXl3b3JkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFNlbGYtPntQREZPYmplY3R9LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdLZXl3b3JkcycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyB0YWJsZSBwYXJhbXMKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXB1dEZBUUNvbnRlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICAjIGdldCB0aGUgY29uZmlnIG9mIEZBUSBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgIG15ICVGaWVsZHM7CiAgICBGSUVMRDoKICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAjIGdldCBjb25maWcgb2YgRkFRIGZpZWxkCiAgICAgICAgbXkgJENvbmZpZyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCAnRkFROjpJdGVtOjpGaWVsZCcgLiAkTnVtYmVyICk7CgogICAgICAgICMgc2tpcCBvdmVyIG5vdCBzaG93biBmaWVsZHMKICAgICAgICBuZXh0IEZJRUxEIGlmICEkQ29uZmlnLT57U2hvd307CgogICAgICAgICMgc3RvcmUgb25seSB0aGUgY29uZmlnIG9mIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgICRGaWVsZHN7ICJGaWVsZCIgLiAkTnVtYmVyIH0gPSAkQ29uZmlnOwogICAgfQoKICAgICMgc29ydCBzaG93biBmaWVsZHMgYnkgcHJpb3JpdHkKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAoIHNvcnQgeyAkRmllbGRzeyRhfS0+e1ByaW99IDw9PiAkRmllbGRzeyRifS0+e1ByaW99IH0ga2V5cyAlRmllbGRzICkgewoKICAgICAgICAjIGdldCB0aGUgc3RhdGUgdHlwZSBkYXRhIG9mIHRoaXMgZmllbGQKICAgICAgICBteSAkU3RhdGVUeXBlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJEZpZWxkc3skRmllbGR9LT57U2hvd30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBmaWVsZHMgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIGdpdmVuIGludGVyZmFjZQogICAgICAgIG5leHQgRklFTEQgaWYgISRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LT57ICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gfTsKCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CgogICAgICAgICMgY29udmVydCBIVE1MIHRvIGFzY2lpCiAgICAgICAgbXkgJEFzY2lpRmllbGQgPSAkU2VsZi0+e0hUTUxVdGlsc09iamVjdH0tPlRvQXNjaWkoIFN0cmluZyA9PiAkRkFRRGF0YXskRmllbGR9ICk7CgogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVswXVswXXtDb250ZW50fSA9ICRBc2NpaUZpZWxkIHx8ICcnOwogICAgICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDUxMTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgICMgdHJhbnNsYXRlIHRoZSBmaWVsZCBuYW1lIGFuZCBzdGF0ZQogICAgICAgIG15ICRGaWVsZE5hbWUgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfSApCiAgICAgICAgICAgIC4gJyAoJwogICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkU3RhdGVUeXBlRGF0YS0+e05hbWV9ICkKICAgICAgICAgICAgLiAnKSc7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5UZXh0KAogICAgICAgICAgICBUZXh0ICAgICA9PiAkRmllbGROYW1lLAogICAgICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUKICAgICAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRTZWxmLT57UERGT2JqZWN0fS0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX0hUTUxNYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBzaG93IExhbmd1YWdlCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgcmF0aW5nCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSYXRpbmcnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFQcmludCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbSAtIHB1YmxpYyBGQVEgZXhwbG9yZXIKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUlNTOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CnVzZSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzOwp1c2UgWE1MOjpSU1M6OlNpbXBsZUdlbiBxdygpOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBVc2VySUQgdG8gcm9vdCBiZWNhdXNlIGluIHB1YmxpYyBpbnRlcmZhY2UgdGhlcmUgaXMgbm8gdXNlcgogICAgJFNlbGYtPntVc2VySUR9ID0gMTsKCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0hUTUxVdGlsc09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57UlNTT2JqZWN0fSAgICAgICA9IFhNTDo6UlNTOjpTaW1wbGVHZW4tPm5ldyggJ2h0dHA6Ly8nIC4gJEVOVntIVFRQX0hPU1R9ICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IFJTUyB0eXBlCiAgICBteSAkVHlwZSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1R5cGUnICk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRUeXBlICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBUeXBlIGlzIGdpdmVuIScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayB0eXBlCiAgICBpZiAoICRUeXBlICF+IG17IENyZWF0ZWQgfCBDaGFuZ2VkIHwgVG9wMTAgfXhtcyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICJUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEiCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBASXRlbUlEczsKICAgIG15ICRUaXRsZTsKCiAgICAjIGdldCB0aGUgVG9wMTAgRkFRIGFydGljbGVzCiAgICBpZiAoICRUeXBlIGVxICdUb3AxMCcgKSB7CgogICAgICAgICMgaW50ZXJmYWNlIG5lZWRzIHRvIGJlIHRoZSBpbnRlcmZhY2UgbmFtZQogICAgICAgIG15ICRUb3AxMEl0ZW1JRHNSZWYgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVRvcDEwR2V0KAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFNlbGYtPntJbnRlcmZhY2V9LT57TmFtZX0sCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OkxpbWl0JykgfHwgMTAsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgQEl0ZW1JRHMgPSBtYXAgeyAkXy0+e0l0ZW1JRH0gfSBAeyRUb3AxMEl0ZW1JRHNSZWZ9OwoKICAgICAgICAjIGJ1aWxkIHRoZSB0aXRsZQogICAgICAgICRUaXRsZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEgQXJ0aWNsZXMgKFRvcCAxMCknKTsKICAgIH0KCiAgICAjIHNlYXJjaCB0aGUgRkFRIGFydGljbGVzCiAgICBlbHNlIHsKCiAgICAgICAgIyBpbnRlcmZhY2UgbmVlZHMgdG8gYmUgY29tcGxldGUgaW50ZXJmYWNlIGhhc2gKICAgICAgICBASXRlbUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJFR5cGVdLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnRG93biddLAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAyMCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCB0aGUgdGl0bGUKICAgICAgICBpZiAoICRUeXBlIGVxICdDcmVhdGVkJyApIHsKICAgICAgICAgICAgJFRpdGxlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJyk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFR5cGUgZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAkVGl0bGUgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKScpOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdlbmVyYXRlIHRoZSByc3MgdGl0bGUKICAgICRUaXRsZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQcm9kdWN0TmFtZScpIC4gJyAnIC4gJFRpdGxlOwogICAgJFNlbGYtPntSU1NPYmplY3R9LT50aXRsZSgkVGl0bGUpOwoKICAgICMgZ2V0IHRoZSBGQVEgZGF0YQogICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CgogICAgICAgIG15ICVJdGVtRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCBhIHByZXZpZXcgb2YgdGhlIGZpcnN0IHR3byBmaWVsZHMKICAgICAgICBteSAkUHJldmlldyA9ICcnOwogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uIDIgKSB7CiAgICAgICAgICAgIGlmICggJEl0ZW1EYXRheyJGaWVsZCRDb3VudCJ9ICkgewogICAgICAgICAgICAgICAgJFByZXZpZXcgLj0gJEl0ZW1EYXRheyJGaWVsZCRDb3VudCJ9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgcHJldmlldyB0byBhc2NpaQogICAgICAgICRQcmV2aWV3ID0gJFNlbGYtPntIVE1MVXRpbHNPYmplY3R9LT5Ub0FzY2lpKCBTdHJpbmcgPT4gJFByZXZpZXcgKTsKCiAgICAgICAgIyByZWR1Y2Ugc2l6ZSBvZiBwcmV2aWV3CiAgICAgICAgJFByZXZpZXcgPX4gc3sgXEEgKCAuezgwfSApIC4qIFx6IH17JDFcW1wuXC5cXX1neG1zOwoKICAgICAgICAjIGJ1aWxkIHRoZSBSU1MgaXRlbQogICAgICAgICRTZWxmLT57UlNTT2JqZWN0fS0+aXRlbSgKICAgICAgICAgICAgImh0dHA6Ly8kRU5We0hUVFBfSE9TVH0kU2VsZi0+e0xheW91dE9iamVjdH0tPntCYXNlbGlua31BY3Rpb249UHVibGljRkFRWm9vbSZJdGVtSUQ9JEl0ZW1JRCIsCiAgICAgICAgICAgICRJdGVtRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICRQcmV2aWV3LAogICAgICAgICk7CiAgICB9CgogICAgIyBjb252ZXJ0IHRvIHN0cmluZwogICAgbXkgJE91dHB1dCA9ICRTZWxmLT57UlNTT2JqZWN0fS0+YXNfc3RyaW5nKCk7CgogICAgIyBjaGVjayBlcnJvcgogICAgaWYgKCAhJE91dHB1dCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJDYW4ndCBjcmVhdGUgUlNTIGZpbGUhIiApOwogICAgfQoKICAgICMgcmV0dXJuIHRoZSBSU1MgZmVlZAogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVNlYXJjaC5wbSAtIHB1YmxpYyBGQVEgc2VhcmNoCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OlB1YmxpY0ZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CnVzZSBLZXJuZWw6OlN5c3RlbTo6Q1NWOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskX30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRfISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57Q1NWT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpDU1YtPm5ldyglUGFyYW0pOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICAkU2VsZi0+e1NlYXJjaExpbWl0fSAgICAgPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0gICAgIHx8IDIwMDsKICAgICRTZWxmLT57U2VhcmNoUGFnZVNob3dufSA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaFBhZ2VTaG93bn0gfHwgNDA7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IEZBUSBudW1iZXIKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgZnVsbHRleHQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgKSB7CiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJlbWVtYmVyIGV4Y2x1ZGUgYXR0cmlidXRlcwogICAgbXkgQEV4Y2x1ZGVzID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAnRXhjbHVkZScgKTsKCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgIHF3KE51bWJlciBUaXRsZSBLZXl3b3JkIEZ1bGx0ZXh0IFJlc3VsdEZvcm0gVGltZVNlYXJjaFR5cGUgVm90ZVNlYXJjaCBWb3RlU2VhcmNoVHlwZQogICAgICAgIFZvdGVTZWFyY2hPcHRpb24gUmF0ZVNlYXJjaCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoT3B0aW9uCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCBJdGVtQ3JlYXRlVGltZVBvaW50CiAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0CiAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydCBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wIEl0ZW1DcmVhdGVUaW1lU3RvcERheSBJdGVtQ3JlYXRlVGltZVN0b3BNb250aAogICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcFllYXIKICAgICAgICApCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBub24gZW1wdHkgcGFyYW1ldGVycyBvbiBhIGxvY2FsIHByb2ZpbGUKICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSAuPSAiJFBhcmFtTmFtZT0kR2V0UGFyYW17JFBhcmFtTmFtZX07IjsKICAgICAgICB9CgogICAgfQoKICAgICMgZ2V0IGFycmF5IHBhcmFtcwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KENhdGVnb3J5SURzIExhbmd1YWdlSURzICkpIHsKCiAgICAgICAgIyBnZXQgc2VhcmNoIGFycmF5IHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgbXkgQEFycmF5ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CiAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSBcQEFycmF5OwoKICAgICAgICAgICAgIyBzdG9yZSBwYXJhbWV0ZXJzIG9uIGEgbG9jYWwgcHJvZmlsZQogICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSAuPSAkUGFyYW1OYW1lIC4gJz0nIC4gJEVsZW1lbnQgLiAnOyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBpdGVtIG5lZWQgdG8gZ2V0IGV4Y2x1ZGVkCiAgICBmb3IgbXkgJEV4Y2x1ZGUgKEBFeGNsdWRlcykgewogICAgICAgIGlmICggJEdldFBhcmFteyRFeGNsdWRlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRHZXRQYXJhbXskRXhjbHVkZX07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHZvdGUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgJEdldFBhcmFteydWb3RlU2VhcmNoT3B0aW9uOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gZXEgJ1ZvdGVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydWb3RlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBnZXQgcmF0ZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSBlcSAnUmF0ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIGdldCB0aW1lIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgc2V0IHJlc3VsdCBmb3JtIGVudgogICAgaWYgKCAhJEdldFBhcmFte1Jlc3VsdEZvcm19ICkgewogICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSA9ICcnOwogICAgfQogICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKICAgICAgICAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gPSAkU2VsZi0+e1NlYXJjaExpbWl0fTsKICAgIH0KCiAgICAjIGNoZWNrIHJlcXVlc3QKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb24nICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHJlc3VsdCBwYWdlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJFNlbGYtPntFcmFzZVRlbXBsYXRlfSApIHsKCiAgICAgICAgIyBwcmVwYXJlIGZ1bGx0ZXh0IHNlYXJjaAogICAgICAgIGlmICggJEdldFBhcmFte0Z1bGx0ZXh0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte0NvbnRlbnRTZWFyY2h9ID0gJ09SJzsKICAgICAgICAgICAgJEdldFBhcmFte1doYXR9ICAgICAgICAgID0gJEdldFBhcmFte0Z1bGx0ZXh0fTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2b3RlcyBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHJhdGUgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJVRpbWVNYXAgPSAoCiAgICAgICAgICAgIEl0ZW1DcmVhdGUgPT4gJ1RpbWUnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCBzb3J0IGtleXMgJVRpbWVNYXAgKSB7CgogICAgICAgICAgICAjIGdldCBjcmVhdGUgdGltZSBzZXR0aW5ncwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcgd2l0aCB0aW1lIHN0dWZmCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KE1vbnRoIERheSkpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAyMzo1OTo1OSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21pbnV0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnaG91cicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdkYXknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd3ZWVrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogNzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21vbnRoJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd5ZWFyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzY1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdCZWZvcmUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtb3JlIHRoYW4gLi4uIGFnbwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ05leHQnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IC0kVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIGxhc3QgLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgID0+IFsgJFNlbGYtPntTb3J0Qnl9IF0sCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgPT4gWyAkU2VsZi0+e09yZGVyQnl9IF0sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICBDb250ZW50U2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgQ1NWIG91dHB1dAogICAgICAgIGlmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdDU1YnICkgewogICAgICAgICAgICBteSBAQ1NWSGVhZDsKICAgICAgICAgICAgbXkgQENTVkRhdGE7CgogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBmb3JtYXQgdGhlIGNoYW5nZSB0aW1lCiAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICckVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCBpbmZvIGZvciBDU1Ygb3V0cHV0CiAgICAgICAgICAgICAgICBteSAlQ1NWSW5mbyA9ICgKICAgICAgICAgICAgICAgICAgICBGQVFOdW1iZXIgPT4gJEZBUURhdGF7TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5ICA9PiAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9LAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICA9PiAkRkFRRGF0YXtMYW5ndWFnZX0sCiAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZCAgID0+ICRDaGFuZ2VkLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNzdiBxdW90ZQogICAgICAgICAgICAgICAgaWYgKCAhQENTVkhlYWQgKSB7CiAgICAgICAgICAgICAgICAgICAgQENTVkhlYWQgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbnNlcnQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAnTGFuZ3VhZ2UnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgJ0NoYW5nZWQnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbXkgQERhdGE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3skSGVhZGVyfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQENTVkRhdGEsIFxARGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgIyB0cmFuc2xhdGUgbm9uIGV4aXN0aW5nIGhlYWRlciBtYXkgcmVzdWx0IGluIGEgZ2FyYmFnZSBmaWxlCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQENTVkhlYWQgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgJ0NoYW5nZWQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSBoZWFkZXJzCiAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICMgcmVwbGFjZSBGQVFOdW1iZXIgaGVhZGVyIHdpdGggdGhlIGN1cnJlbnQgRkFRSG9vayBmcm9tIGNvbmZpZwogICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYXNzYWJsZSBDU1YgZGF0YQogICAgICAgICAgICBteSAkQ1NWID0gJFNlbGYtPntDU1ZPYmplY3R9LT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICBIZWFkICAgICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgRGF0YSAgICAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkU2VsZi0+e1VzZXJDU1ZTZXBhcmF0b3J9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZXR1cm4gY3N2IHRvIGRvd25sb2FkCiAgICAgICAgICAgIG15ICRDU1ZGaWxlID0gJ0ZBUV9zZWFyY2gnOwogICAgICAgICAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTSA9IHNwcmludGYoICIlMDJkIiwgJE0gKTsKICAgICAgICAgICAgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREICk7CiAgICAgICAgICAgICRoID0gc3ByaW50ZiggIiUwMmQiLCAkaCApOwogICAgICAgICAgICAkbSA9IHNwcmludGYoICIlMDJkIiwgJG0gKTsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRDU1ZGaWxlIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5jc3YiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ1NWLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgdGFibGUgYmxvY2sKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50SGVhZGVyKCBXaWR0aCA9PiA4MDAgKTsKICAgICAgICAgICAgaWYgKCBzY2FsYXIgQFZpZXdhYmxlRkFRSURzID09ICRTZWxmLT57U2VhcmNoTGltaXR9ICkgewogICAgICAgICAgICAgICAgJFBhcmFte1dhcm5pbmd9ID0gJyRUZXh0eyJSZWFjaGVkIG1heC4gY291bnQgb2YgJXMgc2VhcmNoIGhpdHMhIiwgIicKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57U2VhcmNoTGltaXR9IC4gJyJ9JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludCcsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRGb290ZXIoKTsKCiAgICAgICAgICAgICMgcmV0dXJuIG91dHB1dAogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKCiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIHJlc3VsdHMgdG8gc2hvdwogICAgICAgIGlmIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGJhY2sgbGluayBmb3IgRkFRIFpvb20gc2NyZWVuCiAgICAgICAgICAgIG15ICRab29tQmFja0xpbmsgPSAiQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoOyIKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntQcm9maWxlfQogICAgICAgICAgICAgICAgLiAiU29ydEJ5PSRTZWxmLT57U29ydEJ5fTtPcmRlcj0kU2VsZi0+e09yZGVyQnl9O1N0YXJ0SGl0PSRTZWxmLT57U3RhcnRIaXR9IjsKCiAgICAgICAgICAgICMgZW5jb2RlIGJhY2sgbGluayB0byBCYXNlNjQgZm9yIGVhc3kgSFRNTCB0cmFuc3BvcnQKICAgICAgICAgICAgJFpvb21CYWNrTGluayA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCgkWm9vbUJhY2tMaW5rKTsKCiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAgICAgIyBidWlsZCBzZWFyY2ggcmVzdWx0CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFNlbGYtPntTdGFydEhpdH0KICAgICAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ICsgJFNlbGYtPntTdGFydEhpdH0gKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEgZGV0YWlscwogICAgICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGJsb2NrcyB0byB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBab29tQmFja0xpbmsgPT4gJFpvb21CYWNrTGluaywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2Ugc2hvdyBhIG5vIGRhdGEgZm91bmQgbXNnCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBsb29rdXAgdGFibGUgZm9yIGF0dHJpYnV0ZSBzZXR0aW5ncwogICAgICAgIG15ICVBdHRyaWJ1dGVNYXAgPSAoCiAgICAgICAgICAgIE51bWJlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpdGxlID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEtleXdvcmQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdLZXl3b3JkJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBGdWxsdGV4dCA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0Z1bGx0ZXh0JywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDYXRlZ29yeUlEcyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NhdGVnb3J5JywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBMYW5ndWFnZUlEcyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaW1lU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NyZWF0ZSBUaW1lJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWb3RlU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZvdGVzJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBSYXRlU2VhcmNoVHlwZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1JhdGUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmludCBlYWNoIGF0dHJpYnV0ZSBpbiBzZWFyY2ggcmVzdWx0cyBhcmVhLgogICAgICAgIEFUVFJJQlVURToKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAlQXR0cmlidXRlTWFwICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgYXR0cmlidXRlIHdhcyBkZWZpbmVkIGJ5IHRoZSB1c2VyCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgc2V0IGF0dHJpYnV0ZSBuYW1lIGFuZCB0cmFuc2xhdGUgaXQgaWYgYXBwbGllcwogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZU5hbWUgPSAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57TmFtZX07CiAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGVNYXB7JEF0dHJpYnV0ZX0tPntUcmFuc2xhdGFibGV9ICkgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVOYW1lID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJEF0dHJpYnV0ZU5hbWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVWYWx1ZTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSB2YWx1ZXMgaXMgYW4gYXJyYXkgdG8gcGFyc2UgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgaWYgKCByZWYgJEdldFBhcmFteyRBdHRyaWJ1dGV9IGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICMgQ2F0ZWdvcnkgYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdDYXRlZ29yeUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgbG9uZyBuYW1lIGZvciBhbGwgcHVibGljIGNhdGVnb3JpZXMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENhdGVnb3J5TGlzdCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgZWFjaCBjYXRlZ29yeSBpZCB0byBjYXRlZ29yeSBsb25nIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQENhdGVnb3J5TmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIENBVEVHT1JZSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ2F0ZWRvcnlJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDQVRFR09SWUlEIGlmICEkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ2F0ZWdvcnlOYW1lcywgJENhdGVnb3J5TGlzdC0+eyRDYXRlZG9yeUlEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSBzdHJpbmcgd2l0aCBhbGwgc2VsZWN0ZWQgY2F0ZWdvcnkgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gam9pbiggIiArICIsIEBDYXRlZ29yeU5hbWVzICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIExhbmd1YWdlSURzCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdMYW5ndWFnZUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgZWFjaCBsYW5ndWFnZSBpZCB0byBsYW5ndWFnZSBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBMYW5ndWFnZU5hbWVzOwogICAgICAgICAgICAgICAgICAgICAgICBMQU5HVUFHRUlEOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJExhbmd1YWdlSUQgKCBAeyAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMYW5ndWFnZU5hbWUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBMQU5HVUFHRUlEIGlmICEkTGFuZ3VhZ2VOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBATGFuZ3VhZ2VOYW1lcywgJExhbmd1YWdlTmFtZQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIHN0cmluZyB3aXRoIGFsbCBzZWxlY3RlZCBsYW5ndWFnZSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSBqb2luKCAiICsgIiwgQExhbmd1YWdlTmFtZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdGhlcndpc2UgaXMgYW4gc2NhbGFyIGFuZCBjYW4gYmUgc2V0IGRpcmVjdGx5CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkR2V0UGFyYW17JEF0dHJpYnV0ZX0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZSBlcSAnVGltZVNlYXJjaFR5cGUnICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdGFydERhdGUgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydFllYXJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRofQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnREYXl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJywgJ0RhdGVGb3JtYXRTaG9ydCcKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdG9wRGF0ZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BZZWFyfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRofQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcERheX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnLCAnRGF0ZUZvcm1hdFNob3J0JwogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZSAgICAgID0gJ0NyZWF0ZWQgYmV0d2Vlbic7CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRTdGFydERhdGUgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ2FuZCcpIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRTdG9wRGF0ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkTWFwcGluZyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMYXN0JyAgID0+ICdDcmVhdGVkIHdpdGhpbiB0aGUgbGFzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQmVmb3JlJyA9PiAnQ3JlYXRlZCBtb3JlIHRoYW4gLi4uIGFnbycsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlICAgICAgPSAkTWFwcGluZy0+eyAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSB9OwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0gLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPkdldCggJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9IC4gJyhzKScgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1ZvdGVTZWFyY2hUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259OwogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ICkgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17Vm90ZVNlYXJjaH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1JhdGVTZWFyY2hUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259OwogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ICkgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gLiAnJSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hUZXJtcycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkQXR0cmlidXRlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRBdHRyaWJ1dGVWYWx1ZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgICAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICBTdGFydEhpdCAgPT4gJFNlbGYtPntTdGFydEhpdH0sCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0sCiAgICAgICAgICAgIEFsbEhpdHMgICA9PiAkQ291bnRlciwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICJBY3Rpb249UHVibGljRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2giLAogICAgICAgICAgICBMaW5rID0+CiAgICAgICAgICAgICAgICAiJFNlbGYtPntQcm9maWxlfVNvcnRCeT0kU2VsZi0+e1NvcnRCeX07T3JkZXI9JFNlbGYtPntPcmRlckJ5fTsiLAogICAgICAgICAgICBJRFByZWZpeCA9PiAiUHVibGljRkFRU2VhcmNoIiwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZm9vdGVyIGZpbHRlciAtIHNob3cgb25seSBpZiBtb3JlIHRoZSBvbmUgcGFnZSBpcyBhdmFpbGFibGUKICAgICAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2luYXRpb24nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc3RhcnQgaHRtbCBwYWdlCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJIZWFkZXIoKTsKCiAgICAgICAgI1NldCB0aGUgU29ydEJ5IENsYXNzCiAgICAgICAgbXkgJFNvcnRDbGFzczsKCiAgICAgICAgIyB0aGlzIHNldHMgdGhlIG9wcG9zaXRlIHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgICAgIGlmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnVXAnICkgewogICAgICAgICAgICAkU29ydENsYXNzID0gJ1NvcnREZXNjZW5kaW5nJzsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MgdG8gdGhlIGNvcnJlY3QgZmllbGQKICAgICAgICBteSAlQ1NTU29ydDsKICAgICAgICBteSAkU29ydEJ5ID0gJFNlbGYtPntTb3J0Qnl9IC4gJ1NvcnQnOwogICAgICAgICRDU1NTb3J0eyRTb3J0Qnl9ID0gJFNvcnRDbGFzczsKCiAgICAgICAgbXkgJU5ld09yZGVyID0gKAogICAgICAgICAgICBEb3duID0+ICdVcCcsCiAgICAgICAgICAgIFVwICAgPT4gJ0Rvd24nLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyAkU2VsZi0+e09yZGVyQnl9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgT3JkZXIgICA9PiAkTmV3T3JkZXJ7ICRTZWxmLT57T3JkZXJCeX0gfSwKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgZW1wdHkgc2VhcmNoIHNpdGUKICAgIGVsc2UgewoKICAgICAgICAjIGdlbmVyYXRlIHNlYXJjaCBtYXNrCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJIZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBQcm9maWxlID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIEFyZWEgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGb290ZXIoKTsKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIE1hc2tGb3JtIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICAjIHNldCBvdXRwdXQgZm9ybWF0cyBsaXN0CiAgICBteSAlUmVzdWx0Rm9ybSA9ICgKICAgICAgICBOb3JtYWwgPT4gJ05vcm1hbCcsCiAgICAgICAgUHJpbnQgID0+ICdQcmludCcsCiAgICAgICAgQ1NWICAgID0+ICdDU1YnLAogICAgKTsKCiAgICAjIGJ1aWxkIG91dHB1dCBmb3JtYXRzIGxpc3QKICAgICRQYXJhbXtSZXN1bHRGb3JtU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVSZXN1bHRGb3JtfSwKICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtSZXN1bHRGb3JtfSB8fCAnTm9ybWFsJywKICAgICk7CgogICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIGxhbmd1YWdlcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte0xhbmd1YWdlc1N0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IHslTGFuZ3VhZ2VzfSwKICAgICAgICBOYW1lICAgICAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtMYW5ndWFnZUlEc30sCiAgICApOwoKICAgICMgZ2V0IGNhdGVnb3JpZXMgbGlzdAogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIGNhdGVnb3JpZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtDYXRlZ29yaWVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gJENhdGVnb3JpZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9LAogICAgICAgIFRyZWVWaWV3ICAgPT4gJFRyZWVWaWV3LAogICAgKTsKCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+ICdFcXVhbHMnLAogICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+ICdHcmVhdGVyVGhhbicsCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJ0dyZWF0ZXJUaGFuRXF1YWxzJywKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnU21hbGxlclRoYW4nLAogICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+ICdTbWFsbGVyVGhhbkVxdWFscycsCiAgICApOwoKICAgICRQYXJhbXtWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVm90aW5nT3BlcmF0b3JzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdWb3RlU2VhcmNoVHlwZScsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1ZvdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CgogICAgJFBhcmFte1JhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2hUeXBlJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgKTsKICAgICRQYXJhbXtSYXRlU2VhcmNoU2VsZWN0aW9uU3RyaW5nfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIDAgICA9PiAnMCUnLAogICAgICAgICAgICAyNSAgPT4gJzI1JScsCiAgICAgICAgICAgIDUwICA9PiAnNTAlJywKICAgICAgICAgICAgNzUgID0+ICc3NSUnLAogICAgICAgICAgICAxMDAgPT4gJzEwMCUnLAogICAgICAgIH0sCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNLZXknLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoJywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaH0gfHwgJycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBOYW1lICAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTGFzdCAgID0+ICd3aXRoaW4gdGhlIGxhc3QgLi4uJywKICAgICAgICAgICAgQmVmb3JlID0+ICdtb3JlIHRoYW4gLi4uIGFnbycsCiAgICAgICAgfSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gJ21pbnV0ZShzKScsCiAgICAgICAgICAgIGhvdXIgICA9PiAnaG91cihzKScsCiAgICAgICAgICAgIGRheSAgICA9PiAnZGF5KHMpJywKICAgICAgICAgICAgd2VlayAgID0+ICd3ZWVrKHMpJywKICAgICAgICAgICAgbW9udGggID0+ICdtb250aChzKScsCiAgICAgICAgICAgIHllYXIgICA9PiAneWVhcihzKScsCiAgICAgICAgfSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ3JlYXRlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmVmaXggPT4gJ0l0ZW1DcmVhdGVUaW1lU3RvcCcsCiAgICAgICAgRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgKTsKCiAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1NlYXJjaCcsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBzaG93IGxhbmd1YWdlcyBzZWxlY3QKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVpvb20ucG0gLSB0byBnZXQgYSBjbG9zZXIgdmlldwojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpQdWJsaWNGQVFab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NCBxdygpOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYWxpZDsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpWYWxpZC0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGRlZmF1bHQgb3B0aW9ucwogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgICRTZWxmLT57Vm90aW5nfSAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gJ05lZWQgSXRlbUlEIScgKTsKICAgIH0KCiAgICAjIGdldCBiYWNrIGxpbmsKICAgICRHZXRQYXJhbXtab29tQmFja0xpbmt9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnWm9vbUJhY2tMaW5rJyApIHx8ICcnOwogICAgaWYgKCAkR2V0UGFyYW17Wm9vbUJhY2tMaW5rfSApIHsKICAgICAgICAkR2V0UGFyYW17Wm9vbUJhY2tMaW5rfSA9IE1JTUU6OkJhc2U2NDo6ZGVjb2RlX2Jhc2U2NCggJEdldFBhcmFte1pvb21CYWNrTGlua30gKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgZ2V0IHRoZSB2YWxpZCBpZHMKICAgIG15IEBWYWxpZElEcyA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZElEc0dldCgpOwogICAgbXkgJVZhbGlkSURMb29rdXAgPSBtYXAgeyAkXyA9PiAxIH0gQFZhbGlkSURzOwoKICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgaWYgKAogICAgICAgICEkRkFRRGF0YXtBcHByb3ZlZH0KICAgICAgICB8fCAhJFZhbGlkSURMb29rdXB7ICRGQVFEYXRhe1ZhbGlkSUR9IH0KICAgICAgICB8fCAhJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LT57ICRGQVFEYXRhe1N0YXRlVHlwZUlEfSB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgSFRNTFZpZXcgU3ViYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0hUTUxWaWV3JyApIHsKCiAgICAgICAgIyBnZXQgcGFyYW1zCiAgICAgICAgbXkgJEZpZWxkID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAiRmllbGQiICk7CgogICAgICAgICMgbmVlZGVkIHBhcmFtcwogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyggSXRlbUlEIEZpZWxkICkpIHsKICAgICAgICAgICAgaWYgKCAhJE5lZWRlZCApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkZWQgUGFyYW06ICROZWVkZWQhIiwKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIEZpZWxkIGNvbnRlbnQKICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJFNlbGYtPntGQVFPYmplY3R9LT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmllbGQgID0+ICRGaWVsZCwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24KICAgICAgICAkRmllbGRDb250ZW50CiAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb219Z3htczsKCiAgICAgICAgIyB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgIGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntIVE1MVXRpbHNPYmplY3R9LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGJhc2UgdXJsIGZvciBpbmxpbmUgaW1hZ2VzCgogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249UHVibGljRkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD1cZCs7RmlsZUlEPVxkKykKICAgICAgICAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICB9CgogICAgICAgICMgcmV0dXJuIGNvbXBsZXRlIEhUTUwgYXMgYW4gYXR0YWNobWVudAogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgIyBtYW5hZ2UgcGFyYW1ldGVycwogICAgICAgICRHZXRQYXJhbXtGaWxlSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZUlEJyApOwogICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFte0ZpbGVJRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvciggTWVzc2FnZSA9PiAnTmVlZCBGaWxlSUQnICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhdHRhY2htZW50cwogICAgICAgIG15ICVGaWxlID0gJFNlbGYtPntGQVFPYmplY3R9LT5BdHRhY2htZW50R2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpbGVJRCA9PiAkR2V0UGFyYW17RmlsZUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICglRmlsZSkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KCVGaWxlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEdldFBhcmFte0ZpbGVJRH0pISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVySGVhZGVyKAogICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICk7CgogICAgIyBwcmVwYXJlIGZpZWxkcyBkYXRhCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIHB1YmxpYyBpbnRlcmZhY2UKICAgICAgICBpZiAoICRTZWxmLT57SW50ZXJmYWNlfS0+e05hbWV9IGVxICdwdWJsaWMnICkgewoKICAgICAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uCiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0KICAgICAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb219Z3htczsKCiAgICAgICAgICAgICMgdGFrZSBjYXJlIG9mIG9sZCBzdHlsZSBiZWZvcmUgRkFRIDIuMC54CiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0gPX4gc3sKICAgICAgICAgICAgICAgIGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgICAgIH17cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CiAgICAgICAgfQoKICAgICAgICAjIG5vIHF1b3RpbmcgaWYgaHRtbCB2aWV3IGlzIGVuYWJsZWQKICAgICAgICBuZXh0IEZJRUxEIGlmICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBodG1sIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgdm90aW5nIHJlc3VsdHMKICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkdldEZBUUl0ZW1Wb3RpbmdSYXRlQ29sb3IoCiAgICAgICAgUmF0ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICk7CgogICAgaWYgKCAhJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSB8fCAkRkFRRGF0YXtWb3Rlc30gZXEgJzAnICkgewogICAgICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAnR3JheSc7CiAgICB9CgogICAgIyBzaG93IGJhY2sgbGluawogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdCYWNrJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvdyBsYW5ndWFnZQogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHZvdGVzCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKCiAgICAgICAgIyBhbHdheXMgZGlwbGF5cyBWb3RlcyByZXN1bHQgZXZlbiBpZiBpdHMgMAogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1ZpZXdWb3RlcycsCiAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBGQVEgcGF0aAogICAgbXkgJFNob3dGQVFQYXRoID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFQYXRoSXRlbUVsZW1lbnQnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cga2V5d29yZHMgYXMgc2VhcmNoIGxpbmtzCiAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKCiAgICAgICAgIyByZXBsYWNlIGNvbW1hcyBhbmQgc2VtaWNvbG9ucwogICAgICAgICRGQVFEYXRhe0tleXdvcmRzfSA9fiBzLywvIC9nOwogICAgICAgICRGQVFEYXRhe0tleXdvcmRzfSA9fiBzLzsvIC9nOwoKICAgICAgICBteSBAS2V5d29yZHMgPSBzcGxpdCAvXHMrLywgJEZBUURhdGF7S2V5d29yZHN9OwogICAgICAgIGZvciBteSAkS2V5d29yZCAoQEtleXdvcmRzKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdLZXl3b3JkcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgcmF0aW5nIHN0YXJzCiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBhdHRhY2htZW50cyBpZiBhbnkKICAgIG15IEBBdHRhY2htZW50SW5kZXggPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudEhlYWRlcicsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JUZBUURhdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgbG9nIGFjY2VzcyB0byB0aGlzIEZBUSBpdGVtCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUxvZ0FkZCgKICAgICAgICBJdGVtSUQgICAgPT4gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApLAogICAgICAgIEludGVyZmFjZSA9PiAkU2VsZi0+e0ludGVyZmFjZX0tPntOYW1lfSwKICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVpvb20nLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9DdXN0b21lckhlYWRlck1ldGFGQVFTZWFyY2gucG0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpDdXN0b21lckhlYWRlck1ldGFGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBmb3IgKHF3KENvbmZpZ09iamVjdCBMb2dPYmplY3QgTGF5b3V0T2JqZWN0IFRpbWVPYmplY3QpKSB7CiAgICAgICAgJFNlbGYtPnskX30gPSAkUGFyYW17JF99IHx8IGRpZSAiR290IG5vICRfISI7CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlc3Npb24gPSAnJzsKICAgIGlmICggISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgJFNlc3Npb24gPSAnOycgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntTZXNzaW9uTmFtZX0gLiAnPScKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntTZXNzaW9uSUR9OwogICAgfQoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBudW1iZXIKICAgIG15ICRUaXRsZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQcm9kdWN0TmFtZScpOwoKICAgICRUaXRsZSAuPSAnIC0gQ3VzdG9tZXIgKCcgLiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJykgLiAnKSc7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ3NlYXJjaCcsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICBIcmVmICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj0nIC4gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259CiAgICAgICAgICAgICAgICAuICc7U3ViYWN0aW9uPU9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGZvciBGQVEgZnVsbHRleHQKICAgIG15ICRGdWxsdGV4dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVFGdWxsdGV4dCcpOwogICAgJFRpdGxlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3ROYW1lJyk7CiAgICAkVGl0bGUgLj0gJyAtIEN1c3RvbWVyICgnIC4gJEZ1bGx0ZXh0IC4gJyknOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdzZWFyY2gnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgSHJlZiAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JyAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmRGQVEucG0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmRGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhDb25maWcgTmFtZSBDb25maWdPYmplY3QgTG9nT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBQYXJhbU9iamVjdCBVc2VySUQpCiAgICAgICAgKQogICAgewogICAgICAgIGRpZSAiR290IG5vICRPYmplY3QhIiBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICk7CiAgICB9CgogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFByZWZlcmVuY2VzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuOwp9CgpzdWIgQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICgKICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKICAgICk7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1R5cGV9LAogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnQWdlbnQnLAogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAwLAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRDb250ZW50ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBDYXRlZ29yeUlEICAgPT4gMCwKICAgICAgICAgICAgU2lkZWJhckNsYXNzID0+ICdNZWRpdW0nLAogICAgICAgIH0sCiAgICApOwogICAgcmV0dXJuICRDb250ZW50Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9GQVFKb3VybmFsT3ZlcnZpZXdTbWFsbC5wbS5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUUpvdXJuYWxPdmVydmlld1NtYWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KENvbmZpZ09iamVjdCBMb2dPYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IFVzZXJJRCBVc2VyT2JqZWN0IE1haW5PYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57JE9iamVjdH0gPSAkUGFyYW17JE9iamVjdH0gfHwgZGllICJHb3Qgbm8gJE9iamVjdCEiOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CiAgICBteSBAU2hvd0NvbHVtbnM7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlU2hvd24gU3RhcnRIaXQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBuZWVkIEpvdXJuYWwKICAgIGlmICggISRQYXJhbXtKb3VybmFsfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdGhlIEpvdXJuYWwhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIHRoZSBqb3VybmFsIGxvY2FsbHkKICAgIG15IEBKb3VybmFsRW50cmllczsKICAgIGlmICggJFBhcmFte0pvdXJuYWx9ICYmIHJlZiAkUGFyYW17Sm91cm5hbH0gZXEgJ0FSUkFZJyApIHsKICAgICAgICBASm91cm5hbEVudHJpZXMgPSBAeyAkUGFyYW17Sm91cm5hbH0gfTsKICAgIH0KCiAgICAjIHNob3cgSm91cmFsIEVudHJpZXMgYXMgcm93cwogICAgaWYgKEBKb3VybmFsRW50cmllcykgewoKICAgICAgICAjIGNoZWNrIFNob3dDb2x1bW5zIHBhcmFtZXRlcgogICAgICAgIGlmICggJFBhcmFte1Nob3dDb2x1bW5zfSAmJiByZWYgJFBhcmFte1Nob3dDb2x1bW5zfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICBAU2hvd0NvbHVtbnMgPSBAeyAkUGFyYW17U2hvd0NvbHVtbnN9IH07CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIGNvbHVtbiBoZWFkZXIgYmxvY2tzCiAgICAgICAgaWYgKEBTaG93Q29sdW1ucykgewoKICAgICAgICAgICAgIyBjYWxsIG1haW4gYmxvY2sKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnUmVjb3JkRm9ybScgKTsKCiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAjIGNhbGwgaGVhZGVyIHNwZWNpZmljIGJsb2NrCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0hlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICBKb3VybmFsRW50cnk6CiAgICAgICAgZm9yIG15ICRKb3VybmFsRW50cnkgKEBKb3VybmFsRW50cmllcykgewogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGZvciBjb3JydXB0aW9uIGNoZWNrCiAgICAgICAgICAgICAgICBteSAlRkFRID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSm91cm5hbEVudHJ5LT57SXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgSUQgaWYgISVGQVE7CgogICAgICAgICAgICAgICAgIyBidWlsZCByZWNvcmQgYmxvY2sKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRKb3VybmFsRW50cnl9LAogICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyID0+ICRDb3VudGVyLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgY29sdW1uIHJlY29yZCBibG9ja3MKICAgICAgICAgICAgICAgIGlmIChAU2hvd0NvbHVtbnMpIHsKICAgICAgICAgICAgICAgICAgICBDT0xVTU46CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBTaG93Q29sdW1ucykgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgbGlua3MgaWYgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdMaW5rU3RhcnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEpvdXJuYWxFbnRyeX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua0VuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIHNldCBhbiBObyBGQVEgSm91bmFsIG1lc3NhZ2UKICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ05vRkFRRm91bmQnICk7CiAgICB9CgogICAgIyB1c2UgdGVtcGxhdGUKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICRTZWxmLT57Vmlld1R5cGV9LAogICAgICAgICAgICBDb2x1bW5Db3VudCA9PiBzY2FsYXIgQFNob3dDb2x1bW5zLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9GQVFNZW51R2VuZXJpYy5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnVHZW5lcmljOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoQ29uZmlnT2JqZWN0IEVuY29kZU9iamVjdCBMb2dPYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IEZBUU9iamVjdCBVc2VySUQpCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57JE9iamVjdH0gPSAkUGFyYW17JE9iamVjdH0gfHwgZGllICJHb3Qgbm8gJE9iamVjdCEiOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17RkFRSXRlbX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEZBUUl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdyYW50IGFjY2VzcyBieSBkZWZhdWx0CiAgICBteSAkQWNjZXNzID0gMTsKCiAgICAjIGdldCBncm91cHMKICAgIG15ICRBY3Rpb24gPSAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn07CiAgICBpZiAoICRBY3Rpb24gZXEgJ0FnZW50TGlua09iamVjdCcgKSB7CgogICAgICAgICMgVGhlIExpbmstbGluayBpcyBhIHNwZWNpYWwgY2FzZSwgYXMgaXQgaXMgbm90IHNwZWNpZmljIHRvIEZBUS4KICAgICAgICAjIEFzIGEgd29ya2Fyb3VuZCB3ZSBoYXJkY29kZSB0aGF0IEFnZW50TGlua09iamVjdCBpcyB0cmVhdGVkIGxpa2UgQWdlbnRGQVFFZGl0CiAgICAgICAgJEFjdGlvbiA9ICdBZ2VudEZBUUVkaXQnOwogICAgfQogICAgbXkgJEdyb3Vwc1JvID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXBSb30gfHwgW107CiAgICBteSAkR3JvdXBzUncgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0tPntHcm91cH0gICB8fCBbXTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJFJvR3JvdXAgKCBAeyRHcm91cHNSb30gKSB7CgogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+eyJVc2VySXNHcm91cFJvWyRSb0dyb3VwXSJ9OwogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgJFNlbGYtPntMYXlvdXRPYmplY3R9LT57IlVzZXJJc0dyb3VwUm9bJFJvR3JvdXBdIn0gbmUgJ1llcyc7CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUk9HUk9VUDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVhZCB3cml0ZSBncm91cHMKICAgICAgICBSV0dST1VQOgogICAgICAgIGZvciBteSAkUndHcm91cCAoIEB7JEdyb3Vwc1J3fSApIHsKCiAgICAgICAgICAgIG5leHQgUldHUk9VUCBpZiAhJFNlbGYtPntMYXlvdXRPYmplY3R9LT57IlVzZXJJc0dyb3VwWyRSd0dyb3VwXSJ9OwogICAgICAgICAgICBuZXh0IFJXR1JPVVAgaWYgJFNlbGYtPntMYXlvdXRPYmplY3R9LT57IlVzZXJJc0dyb3VwWyRSd0dyb3VwXSJ9IG5lICdZZXMnOwoKICAgICAgICAgICAgIyBzZXQgYWNjZXNzCiAgICAgICAgICAgICRBY2Nlc3MgPSAxOwogICAgICAgICAgICBsYXN0IFJXR1JPVVA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn0gaWYgISRBY2Nlc3M7CgogICAgIyBvdXRwdXQgbWVudSBpdGVtCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01lbnVJdGVtJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkUGFyYW17RkFRSXRlbX0gfSwKICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGEgZGlhbG9nIGhhcyB0byBiZSBzaG93bgogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e0RpYWxvZ1RpdGxlfSApIHsKCiAgICAgICAgIyBvdXRwdXQgY29uZmlybWF0aW9uIGRpYWxvZwogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Nob3dDb25maXJtYXRpb25EaWFsb2cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRQYXJhbXtGQVFJdGVtfSB9LAogICAgICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICRQYXJhbXtDb3VudGVyfSsrOwoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn07Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9GQVFPdmVydmlld1NtYWxsLnBtLnBtCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRT3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhDb25maWdPYmplY3QgTG9nT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBVc2VySUQgVXNlck9iamVjdCBNYWluT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+eyRPYmplY3R9ID0gJFBhcmFteyRPYmplY3R9IHx8IGRpZSAiR290IG5vICRPYmplY3QhIjsKICAgIH0KCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CiAgICBteSBAU2hvd0NvbHVtbnM7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlU2hvd24gU3RhcnRIaXQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBuZWVkIEZBUUlEcwogICAgaWYgKCAhJFBhcmFte0ZBUUlEc30gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHRoZSBGQVFJRHMhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIHRoZSBGQVFJRHMKICAgIG15IEBJRHM7CiAgICBpZiAoICRQYXJhbXtGQVFJRHN9ICYmIHJlZiAkUGFyYW17RkFRSURzfSBlcSAnQVJSQVknICkgewogICAgICAgIEBJRHMgPSBAeyAkUGFyYW17RkFRSURzfSB9OwogICAgfQoKICAgIGlmIChASURzKSB7CgogICAgICAgICMgY2hlY2sgU2hvd0NvbHVtbnMgcGFyYW1ldGVyCiAgICAgICAgaWYgKCAkUGFyYW17U2hvd0NvbHVtbnN9ICYmIHJlZiAkUGFyYW17U2hvd0NvbHVtbnN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIEBTaG93Q29sdW1ucyA9IEB7ICRQYXJhbXtTaG93Q29sdW1uc30gfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgY29sdW1uIGhlYWRlciBibG9ja3MKICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAjIGNhbGwgbWFpbiBibG9jawogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdSZWNvcmRGb3JtJyApOwoKICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgKCAkQ29sdW1uIGVxICdMYW5ndWFnZScgJiYgISRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKTsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBuZWVkZWQgdmFyaWFibGVzCiAgICAgICAgICAgICAgICBteSAkQ1NTID0gJ092ZXJ2aWV3SGVhZGVyJzsKICAgICAgICAgICAgICAgIG15ICRPcmRlckJ5OwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIElEIGlmIG5lY2VzYXJ5CiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gJFBhcmFte1NvcnRCeX0gZXEgJ1ByaW9yaXR5SUQnCiAgICAgICAgICAgICAgICAgICAgICAgID8gJ1ByaW9yaXR5JwogICAgICAgICAgICAgICAgICAgICAgICA6ICRQYXJhbXtTb3J0Qnl9IGVxICdDYXRlZ29yeUlEJyA/ICdDYXRlZ29yeScKICAgICAgICAgICAgICAgICAgICAgICAgOiAkUGFyYW17U29ydEJ5fSBlcSAnTGFuZ3VhZ2VJRCcgPyAnTGFuZ3VhZ2UnCiAgICAgICAgICAgICAgICAgICAgICAgIDogJFBhcmFte1NvcnRCeX0gZXEgJ1N0YXRlSUQnICAgID8gJ1N0YXRlJwogICAgICAgICAgICAgICAgICAgICAgICA6ICRQYXJhbXtTb3J0Qnl9IGVxICdGQVFJRCcgICAgICA/ICdOdW1iZXInCiAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIGNvcnJlY3QgU2V0IENTUyBjbGFzcyBhbmQgb3JkZXIgYnkgbGluawogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5fSAmJiAoICRQYXJhbXtPcmRlckJ5fSBlcSAnVXAnICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ1VwJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0hlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgIElEOgogICAgICAgIGZvciBteSAkSUQgKEBJRHMpIHsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fQogICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRQYXJhbXtQYWdlU2hvd259ICsgJFBhcmFte1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIHRvIHN0b3JlIGFsbCBkYXRhCiAgICAgICAgICAgICAgICBteSAlRGF0YTsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YQogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJUZBUTsKCiAgICAgICAgICAgICAgICAjIGFkZCBGQVEgZGF0YQogICAgICAgICAgICAgICAgJURhdGEgPSAoICVEYXRhLCAlRkFRICk7CgogICAgICAgICAgICAgICAgIyBidWlsZCByZWNvcmQgYmxvY2sKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGNvbHVtbiByZWNvcmQgYmxvY2tzCiAgICAgICAgICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICggJENvbHVtbiBlcSAnTGFuZ3VhZ2UnICYmICEkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRvIG5vdCBkaXNwbGF5IGNvbHVtbnMgYXMgbGlua3MgaW4gdGhlIGN1c3RvbWVyIGZyb250ZW5kCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICRQYXJhbXtGcm9udGVuZH0gZXEgJ0N1c3RvbWVyJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyBsaW5rcyBpZiBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0xpbmtTdGFydCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua0VuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ05vRkFRRm91bmQnICk7CiAgICB9CgogICAgIyB1c2UgdGVtcGxhdGUKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgICAgIENvbHVtbkNvdW50ID0+IHNjYWxhciBAU2hvd0NvbHVtbnMsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhRkFRU2VhcmNoLnBtCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SGVhZGVyTWV0YUZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIGZvciAocXcoQ29uZmlnT2JqZWN0IExvZ09iamVjdCBMYXlvdXRPYmplY3QgVGltZU9iamVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRffSA9ICRQYXJhbXskX30gfHwgZGllICJHb3Qgbm8gJF8hIjsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJFNlbGYtPntMYXlvdXRPYmplY3R9LT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAkU2Vzc2lvbiA9ICc7JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25OYW1lfSAuICc9JwogICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3ROYW1lJyk7CgogICAgJFRpdGxlIC49ICcoJyAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKSAuICcpJzsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPScgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyAuICRTZXNzaW9uLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBmdWxsdGV4dAogICAgbXkgJEZ1bGx0ZXh0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUUZ1bGx0ZXh0Jyk7CiAgICAkVGl0bGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdE5hbWUnKTsKICAgICRUaXRsZSAuPSAnKCcgLiAkRnVsbHRleHQgLiAnKSc7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ3NlYXJjaCcsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICBIcmVmICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj0nIC4gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259CiAgICAgICAgICAgICAgICAuICc7U3ViYWN0aW9uPU9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyAuICRTZXNzaW9uLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXRGQVEucG0gLSBwcm92aWRlcyBnZW5lcmljIGFnZW50IEhUTUwgb3V0cHV0CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0RkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXRGQVEgLSBhbGwgRkFRLXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIEZBUS1yZWxhdGVkIEhUTUwgZnVuY3Rpb25zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gR2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvcigpClJldHVybnMgYSBjb2xvciBkZXBlbnRpbmcgb24gdGhlIEZBUSByYXRlCgogICAgbXkgJFZvdGluZ1Jlc3VsdENvbG9yID0gJExheW91dE9iamVjdC0+R2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvcigKICAgICAgICBSYXRlID0+ICcyMCcsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVm90aW5nUmVzdWx0Q29sb3IgPSAncmVkJyAgICAgICAgICAjIG9yICdvcmFuZ2UnIG9yICdncmVlbicKCj1jdXQKCnN1YiBHZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17UmF0ZX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICdOZWVkIHJhdGUhJyApOwogICAgfQogICAgbXkgJENzc1RtcCAgICAgICAgICAgICA9ICcnOwogICAgbXkgJFZvdGluZ1Jlc3VsdENvbG9ycyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkV4cGxvcmVyOjpJdGVtTGlzdDo6Vm90aW5nUmVzdWx0Q29sb3JzJyk7CgogICAgZm9yIG15ICRLZXkgKCBzb3J0IHsgJGIgPD0+ICRhIH0ga2V5cyAleyRWb3RpbmdSZXN1bHRDb2xvcnN9ICkgewogICAgICAgIGlmICggJFBhcmFte1JhdGV9IDw9ICRLZXkgKSB7CiAgICAgICAgICAgICRDc3NUbXAgPSAkVm90aW5nUmVzdWx0Q29sb3JzLT57JEtleX07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICRDc3NUbXA7Cn0KCj1pdGVtIEZBUUxpc3RTaG93KCkKClJldHVybnMgYSBsaXN0IG9mIEZBUSBpdGVtcyBhcyBzb3J0YWJsZSBsaXN0IHdpdGggcGFnaW5hdGlvbi4KClRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBMPEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXRUaWNrZXQ6OlRpY2tldExpc3RTaG93KCk+CmluIEY8S2VybmVsL091dHB1dC9IVE1ML0xheW91dFRpY2tldC5wbT4uCgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkZBUUxpc3RTaG93KAogICAgICAgIEZBUUlEcyAgICAgPT4gJEZBUUlEc1JlZiwgICAgICAgICAgICAgICAgICAgICAgICAgIyB0b3RhbCBsaXN0IG9mIEZBUUlEcywgdGhhdCBjYW4gYmUgbGlzdGVkCiAgICAgICAgVG90YWwgICAgICA9PiBzY2FsYXIgQHsgJEZBUUlEc1JlZiB9LCAgICAgICAgICAgICAjIHRvdGFsIG51bWJlciBvZiBsaXN0IGl0ZW1zLCBpbiB0aGlzIGNhc2UKICAgICAgICBWaWV3ICAgICAgID0+ICRTZWxmLT57Vmlld30sICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwsIHRoZSBkZWZhdWx0IHZhbHVlIGlzICdTbWFsbCcKICAgICAgICBGaWx0ZXIgICAgID0+ICdBbGwnLAogICAgICAgIEZpbHRlcnMgICAgPT4gXCVOYXZCYXJGaWx0ZXIsCiAgICAgICAgRmlsdGVyTGluayA9PiAkTGlua0ZpbHRlciwKICAgICAgICBUaXRsZU5hbWUgID0+ICdPdmVydmlldzogRkFRJywKICAgICAgICBUaXRsZVZhbHVlID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICBFbnYgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgPT4gJExpbmtTb3J0LAogICAgICAgIEZyb250ZW5kICAgPT4gJ0FnZW50JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCAoQWdlbnR8Q3VzdG9tZXJ8UHVibGljKSwgZGVmYXVsdDogQWdlbnQsIGluZGljYXRlcyBmcm9tIHdoaWNoIGZyb250ZW5kIHRoaXMgZnVuY3Rpb24gd2FzIGNhbGxlZAogICAgKTsKCj1jdXQKCnN1YiBGQVFMaXN0U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdGFrZSBvYmplY3QgcmVmIHRvIGxvY2FsLCByZW1vdmUgaXQgZnJvbSAlUGFyYW0gKHByZXZlbnQgbWVtb3J5IGxlYWspCiAgICBteSAkRW52ID0gZGVsZXRlICRQYXJhbXtFbnZ9OwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFBhcmFte1ZpZXd9ICYmICRTZWxmLT57ICdVc2VyRkFRT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAkUGFyYW17Vmlld30gPSAkU2VsZi0+eyAnVXNlckZBUU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259IH07CiAgICB9CgogICAgIyBzZXQgZnJvbnRlbmQKICAgIG15ICRGcm9udGVuZCA9ICRQYXJhbXtGcm9udGVuZH0gfHwgJ0FnZW50JzsKCiAgICAjIHNldCBkZWZhdXQgdmlldyBtb2RlIHRvICdzbWFsbCcKICAgIG15ICRWaWV3ID0gJFBhcmFte1ZpZXd9IHx8ICdTbWFsbCc7CgogICAgIyBzdG9yZSBsYXRlc3QgdmlldyBtb2RlCiAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ1VzZXJGQVFPdmVydmlldycgLiAkRW52LT57QWN0aW9ufSwKICAgICAgICBWYWx1ZSAgICAgPT4gJFZpZXcsCiAgICApOwoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kcyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZyb250ZW5kOjpPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzICkgewogICAgICAgIHJldHVybiAkRW52LT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JywKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGhhc2gtcmVmCiAgICBpZiAoIHJlZiAkQmFja2VuZHMgbmUgJ0hBU0gnICkgewogICAgICAgIHJldHVybiAkRW52LT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmIScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBjb25maWcga2V5CiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRFbnYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICJObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAnJFZpZXcnISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG5hdiBiYXIKICAgIG15ICRTdGFydEhpdCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSgKICAgICAgICBQYXJhbSA9PiAnU3RhcnRIaXQnLAogICAgKSB8fCAxOwoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyRkFRT3ZlcnZpZXcnIC4gJFZpZXcgLiAnUGFnZVNob3duJzsKICAgIG15ICRQYWdlU2hvd24gICAgICAgICAgICAgICA9ICRTZWxmLT57JFBhZ2VTaG93blByZWZlcmVuY2VzS2V5fSB8fCAxMDsKICAgIG15ICRHcm91cCAgICAgICAgICAgICAgICAgICA9ICdGQVFPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwoKICAgICMgY2hlY2sgc3RhcnQgb3B0aW9uLCBpZiBoaWdoZXIgdGhlbiBlbGVtZW50cyBhdmFpbGFibGUsIHNldAogICAgIyBpdCB0byB0aGUgbGFzdCBvdmVydmlldyBwYWdlIChUaGFua3MgdG8gU3RlZmFuIFNjaG1pZHQhKQogICAgaWYgKCAkU3RhcnRIaXQgPiAkUGFyYW17VG90YWx9ICkgewogICAgICAgIG15ICRQYWdlcyA9IGludCggKCAkUGFyYW17VG90YWx9IC8gJFBhZ2VTaG93biApICsgMC45OTk5OSApOwogICAgICAgICRTdGFydEhpdCA9ICggKCAkUGFnZXMgLSAxICkgKiAkUGFnZVNob3duICkgKyAxOwogICAgfQoKICAgICMgZ2V0IGRhdGEgc2VsZWN0aW9uCiAgICBteSAlRGF0YTsKICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgc2V0IHBhZ2UgbGltaXQgYW5kIGJ1aWxkIHBhZ2UgbmF2CiAgICBteSAkTGltaXQgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJEVudi0+e0xheW91dE9iamVjdH0tPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249JyAuICRFbnYtPntMYXlvdXRPYmplY3R9LT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biBmYXEgYXJ0aWNsZXMgb24gYSBwYWdlCiAgICAkUGFyYW17UmVxdWVzdGVkVVJMfSAgICA9ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IjsKICAgICRQYXJhbXtHcm91cH0gICAgICAgICAgID0gJEdyb3VwOwogICAgJFBhcmFte1ByZWZlcmVuY2VzS2V5fSAgPSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXk7CiAgICAkUGFyYW17UGFnZVNob3duU3RyaW5nfSA9ICRTZWxmLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXksCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhZ2VTaG93biwKICAgICAgICBEYXRhICAgICAgICA9PiBcJURhdGEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICk7CgogICAgIyBidWlsZCBuYXZiYXIgY29udGVudAogICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgIG15ICRMaW5rQmFja0lEID0gJ0ZBUVNlYXJjaCc7CiAgICBpZiAoICRQYXJhbXtOYXZ9ICYmICRQYXJhbXtOYXZ9IGVxICdOb25lJyApIHsKICAgICAgICAkTGlua0JhY2tJRCAuPSAnU21hbGwnOwogICAgfQoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMaW5rQmFja0lEID0+ICRMaW5rQmFja0lELAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgZmlsdGVycwogICAgaWYgKCAkUGFyYW17RmlsdGVyc30gKSB7CgogICAgICAgICMgZ2V0IGdpdmVuIGZpbHRlcnMKICAgICAgICBteSBATmF2QmFyRmlsdGVyczsKICAgICAgICBmb3IgbXkgJFByaW8gKCBzb3J0IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgZmlsdGVyIGNvbnRlbnQKICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVyJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBsb29wIG92ZXIgZmlsdGVycwogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CgogICAgICAgICAgICAjIGluY3JlbWVudCBmaWx0ZXIgY291bnQgYW5kIGJ1aWxkIGZpbHRlciBpdGVtCiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmaWx0ZXIgaXMgc2VsZWN0ZWQKICAgICAgICAgICAgaWYgKCAkRmlsdGVyLT57RmlsdGVyfSBlcSAkUGFyYW17RmlsdGVyfSApIHsKICAgICAgICAgICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgbG9vcCBvdmVyIGNvbmZpZ3VyZWQgYmFja2VuZHMKICAgIGZvciBteSAkQmFja2VuZCAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CgogICAgICAgICMgYnVpbGQgbmF2YmFyIHZpZXcgbW9kZQogICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjdXJyZW50IHZpZXcgaXMgY29uZmlndXJlZCBpbiBiYWNrZW5kCiAgICAgICAgaWYgKCAkVmlldyBlcSAkQmFja2VuZCApIHsKICAgICAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICAgICAgRmlsdGVyID0+ICRQYXJhbXtGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgcGFnZSBuYXYgaXMgYXZhaWxhYmxlCiAgICBpZiAoJVBhZ2VOYXYpIHsKICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhcicsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYWdlTmF2LAogICAgICAgICk7CgogICAgICAgICMgZG9uJ3Qgc2hvdyBjb250ZXh0IHNldHRpbmdzIGluIEFKQVggY2FzZSAoZS4gZy4gaW4gY3VzdG9tZXIgRkFRIGhpc3RvcnkpLAogICAgICAgICMgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgaHRtbCBjb250ZW50CiAgICBteSAkT3V0cHV0TmF2QmFyID0gJEVudi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFZpZXcgPT4gJFZpZXcsCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBvdXRwdXQKICAgIG15ICRPdXRwdXRSYXcgPSAnJzsKICAgIGlmICggISRQYXJhbXtPdXRwdXR9ICkgewogICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5QcmludCgKICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0TmF2QmFyLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0UmF3IC49ICRPdXRwdXROYXZCYXI7CiAgICB9CgogICAgIyBsb2FkIG1vZHVsZQogICAgaWYgKCAhJFNlbGYtPntNYWluT2JqZWN0fS0+UmVxdWlyZSggJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfSApICkgewogICAgICAgIHJldHVybiAkRW52LT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGJhY2tlbmQgb2JqZWN0CiAgICBteSAkT2JqZWN0ID0gJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfS0+bmV3KCAleyRFbnZ9ICk7CiAgICByZXR1cm4gaWYgISRPYmplY3Q7CgogICAgIyBydW4gbW9kdWxlCiAgICBteSAkT3V0cHV0ID0gJE9iamVjdC0+UnVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBGcm9udGVuZCAgPT4gJEZyb250ZW5kLAogICAgICAgIE5hdiAgICAgICA9PiAkUGFyYW17TmF2fSB8fCAnJywKICAgICk7CgogICAgIyBjcmVhdGUgb3V0cHV0CiAgICBpZiAoICEkUGFyYW17T3V0cHV0fSApIHsKICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+UHJpbnQoCiAgICAgICAgICAgIE91dHB1dCA9PiBcJE91dHB1dCwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dFJhdyAuPSAkT3V0cHV0OwogICAgfQoKICAgICMgY3JlYXRlIG92ZXJ2aWV3IG5hdiBiYXIKICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyByZXR1cm4gY29udGVudCBpZiBhdmFpbGFibGUKICAgIHJldHVybiAkT3V0cHV0UmF3Owp9Cgo9aXRlbSBGQVFDb250ZW50U2hvdygpCgpPdXRwdXRzIHRoZSBuZWNlc3NhcnkgRFRMIGJsb2NrcyB0byBkaXNwbGF5IHRoZSBGQVEgaXRlbSBmaWVsZHMgZm9yIHRoZSBzdXBwbGllZCBGQVEgaXRlbSBJRC4KVGhlIGZpZWxkcyBkaXNwbGF5ZWQgYXJlIGFsc28gcmVzdHJpY3RlZCBieSB0aGUgcGVybWlzc2lvbnMgcmVwcmVzZW50ZWQgYnkgdGhlIHN1cHBsaWVkIGludGVyZmFjZQoKSWYgZXhpc3QgUmV0dXJuQ29udGVudCBwYXJhbWV0ZXIgaXQgcmV0dXJucyB0aGUgRkFRIGl0ZW1zIGZpZWxkcyBvbiBhIEhUTUwgZm9ybWF0ZWQgc3RyaW5nCgogICAgJExheW91dE9iamVjdC0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgY29yZSBtb2R1bGUgaW50ZXJhY3Rpb24KICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gJXsgJEZBUURhdGEgfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBteSAkQ29udGVudCA9ICRMYXlvdXRPYmplY3QtPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LCAgICAgICAgICAgICAgICAgIyBuZWVkZWQgZm9yIGNvcmUgbW9kdWxlIGludGVyYWN0aW9uCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+ICV7ICRGQVFEYXRhIH0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKICAgICAgICBSZXR1cm5Db250ZW50ICAgPT4gMSwKICAgICk7Cj1jdXQKCnN1YiBGQVFDb250ZW50U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KEZBUU9iamVjdCBGQVFEYXRhIEludGVyZmFjZVN0YXRlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzdG9yZSBGQVEgb2JqZWN0IGxvY2FsbHkKICAgICRTZWxmLT57RkFRT2JqZWN0fSA9ICRQYXJhbXtGQVFPYmplY3R9OwoKICAgICMgZ2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0eXBlCiAgICBteSAkSW50ZXJuYWxTdGF0ZVR5cGUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0eXBlIElECiAgICBteSAkSW50ZXJuYWxTdGF0ZUlEID0gJEludGVybmFsU3RhdGVUeXBlLT57U3RhdGVJRH07CgogICAgIyBnZXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBUaWNrZXQgQ29tcG9zZQogICAgbXkgJFRpY2tldENvbXBvc2VDb25maWcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpUaWNrZXRDb21wb3NlJyk7CgogICAgIyBnZXQgdGhlIGNvbmZpZyBvZiBGQVEgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICBteSAlRmllbGRzOwogICAgRklFTEQ6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEZBUSBmaWVsZAogICAgICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJE51bWJlciApOwoKICAgICAgICAjIHNraXAgb3ZlciBub3Qgc2hvd24gZmllbGRzCiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJENvbmZpZy0+e1Nob3d9OwoKICAgICAgICAjIHN0b3JlIG9ubHkgdGhlIGNvbmZpZyBvZiBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICAkRmllbGRzeyAiRmllbGQiIC4gJE51bWJlciB9ID0gJENvbmZpZzsKICAgIH0KCiAgICBteSAkRnVsbENvbnRlbnQ7CgogICAgIyBzb3J0IHNob3duIGZpZWxkcyBieSBwcmlvcml0eQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZAogICAgICAgIG15ICRTdGF0ZVR5cGVEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkRmllbGRzeyRGaWVsZH0tPntTaG93fSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IHNob3cgZmllbGRzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSBnaXZlbiBpbnRlcmZhY2UKICAgICAgICBuZXh0IEZJRUxEIGlmICEkUGFyYW17SW50ZXJmYWNlU3RhdGVzfS0+eyAkU3RhdGVUeXBlRGF0YS0+e1N0YXRlSUR9IH07CgogICAgICAgIG15ICRDYXB0aW9uID0gJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfTsKICAgICAgICBteSAkQ29udGVudCA9ICRQYXJhbXtGQVFEYXRhfS0+eyRGaWVsZH0gfHwgJyc7CgogICAgICAgICMgcmVtb3ZlIGFjdGl2ZSBodG1sIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgICAgICBteSAlU2FmZUNvbnRlbnQgPSAkU2VsZi0+e0hUTUxVdGlsc09iamVjdH0tPlNhZmV0eSgKICAgICAgICAgICAgU3RyaW5nICAgICAgID0+ICRDb250ZW50LAogICAgICAgICAgICBOb0FwcGxldCAgICAgPT4gMSwKICAgICAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgICAgICBOb0ludFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdGFrZSB0aGUgc2FmZSBjb250ZW50IGlmIG5lY2Nlc3NhcnkKICAgICAgICBpZiAoICRTYWZlQ29udGVudHtSZXBsYWNlfSApIHsKICAgICAgICAgICAgJENvbnRlbnQgPSAkU2FmZUNvbnRlbnR7U3RyaW5nfTsKICAgICAgICB9CgogICAgICAgICMgc2hvdyB0aGUgZmllbGQKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUNvbnRlbnQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkUGFyYW17RkFRRGF0YX0tPntJdGVtSUR9LAogICAgICAgICAgICAgICAgRmllbGQgICAgID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgIENhcHRpb24gICA9PiAkQ2FwdGlvbiwKICAgICAgICAgICAgICAgIFN0YXRlTmFtZSA9PiAkU3RhdGVUeXBlRGF0YS0+e05hbWV9LAogICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRDb250ZW50LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgc2VjdXJpdHk9InJlc3RyaWN0ZWQiIG1heSBicmVhayBTU08gLSBkaXNhYmxlIHRoaXMgZmVhdHVyZSBpZiByZXF1ZXN0ZWQKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdEaXNhYmxlTVNJRnJhbWVTZWN1cml0eVJlc3RyaWN0ZWQnKSApIHsKICAgICAgICAgICAgJFBhcmFte01TU2VjdXJpdHlSZXN0cmljdGVkfSA9ICcnOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBhcmFte01TU2VjdXJpdHlSZXN0cmljdGVkfSA9ICdzZWN1cml0eT0icmVzdHJpY3RlZCInOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUNvbnRlbnRIVE1MJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtGQVFEYXRhfS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmllbGQgICAgICAgICAgICAgICAgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgICAgIE1TU2VjdXJpdHlSZXN0cmljdGVkID0+ICRQYXJhbXtNU1NlY3VyaXR5UmVzdHJpY3RlZH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRkFRQ29udGVudFBsYWluJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbnRlbnQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSB0aGUgZmllbGQgdG8gcmV0dXJuIGFsbCBGQVEgQm9keQogICAgICAgIGlmICggJFBhcmFte1JldHVybkNvbnRlbnR9ICYmICRDb250ZW50ICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiBjdXJyZW50IGZpZWxkIGlzIGludGVybmFsCiAgICAgICAgICAgIG15ICRJc0ludGVybmFsOwogICAgICAgICAgICBpZiAoICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gPT0gJEludGVybmFsU3RhdGVJRCApIHsKICAgICAgICAgICAgICAgICRJc0ludGVybmFsID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDaGVjayBpZiBmaWVsZCBzaG91bGQgYmUgcGFydCBvZiB0aGUgcmV0dXJuaW5nIHN0cmluZwogICAgICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57SW5jbHVkZUludGVybmFsfSB8fCAhJElzSW50ZXJuYWwgKSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiBmaWVsZCBuYW1lIHNob3VsZCBiZSByZXR1cm5lZAogICAgICAgICAgICAgICAgaWYgKCAkVGlja2V0Q29tcG9zZUNvbmZpZy0+e1Nob3dGaWVsZE5hbWVzfSApIHsKICAgICAgICAgICAgICAgICAgICAkRnVsbENvbnRlbnQgLj0gJFNlbGYtPntMYW5ndWFnZU9iamVjdH0tPkdldCgkQ2FwdGlvbikgLiAnIDxici8+ICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRnVsbENvbnRlbnQgLj0gJENvbnRlbnQgLiAnIDxici8+ICc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyByZXR1cm4gYWxsIHRoZSAocGVybWl0ZWQpIEZBUSBib2R5CiAgICBpZiAoICRQYXJhbXtSZXR1cm5Db250ZW50fSApIHsKICAgICAgICBpZiAoJEZ1bGxDb250ZW50KSB7CiAgICAgICAgICAgIHJldHVybiAkRnVsbENvbnRlbnQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdUaGlzIGFydGljbGUgaXMgZW1wdHkhJyk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEZBUVBhdGhTaG93KCkKCmlmIGl0cyBhbGxvd2VkIGJ5IHRoZSBjb25maWd1cmF0aW9uLCBvdXRwdXRzIHRoZSBuZWNlc3NhcnkgRFRMIGJsb2NrcyB0byBkaXNwbGF5IHRoZSBGQVEgaXRlbSBwYXRoLAphbmQgcmV0dXJucyB0aGUgdmFsdWUgMS4KCiAgICBteSAkU2hvd1BhdGhPayA9ICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIENhdGVnb3J5SUQgID0+IDUsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICA9PiAnbm9uZScsICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIEZBUVBhdGhTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoRkFRT2JqZWN0IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDYXRlZ29yeUlEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzdG9yZSBGQVEgb2JqZWN0IGxvY2FsbHkKICAgICRTZWxmLT57RkFRT2JqZWN0fSA9ICRQYXJhbXtGQVFPYmplY3R9OwoKICAgICMgb3V0cHV0IGNhdGVnb3J5IHJvb3QKICAgICRTZWxmLT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpEZWZhdWx0OjpSb290Q2F0ZWdvcnlOYW1lJyksCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gMCwKICAgICAgICAgICAgTmF2ICAgICAgICA9PiAkUGFyYW17TmF2fSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBTaG93IEZBUSBQYXRoIHNldHRpbmcKICAgIG15ICRTaG93UGF0aCA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkV4cGxvcmVyOjpQYXRoOjpTaG93Jyk7CgogICAgIyBkbyBub3QgZGlwbGF5IHRoZSBwYXRoIGlmIHNldHRpbmcgaXMgb2ZmCiAgICByZXR1cm4gaWYgISRTaG93UGF0aDsKCiAgICAjIGdldCBjYXRlZ29yeSBsaXN0IHRvIGNvbnN0cnVjdCB0aGUgcGF0aAogICAgbXkgJENhdGVnb3J5TGlzdCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRUGF0aExpc3RHZXQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBvdXRwdXQgc3ViY2F0ZWdvcmllcwogICAgZm9yIG15ICRDYXRlZ29yeURhdGEgKCBAeyRDYXRlZ29yeUxpc3R9ICkgewogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aENhdGVnb3J5RWxlbWVudCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTmF2ID0+ICRQYXJhbXtOYXZ9LAogICAgICAgICAgICAgICAgJXskQ2F0ZWdvcnlEYXRhfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEZBUVJhdGluZ1N0YXJzU2hvdygpCgpPdXRwdXRzIHRoZSBuZWNlc3NhcnkgRFRMIGJsb2NrcyB0byByZXByZXNlbnQgdGhlIEZBUSBpdGVtIHJhdGluZwphcyAiU3RhcnMiIGluIHRoZSBzY2FsZSBmcm9tIDEgdG8gNS4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFSYXRpbmdTdGFyc1Nob3coCiAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YS0+e1ZvdGVSZXN1bHR9LAogICAgICAgIFZvdGVzICAgICAgPT4gJEZBUURhdGEgLT57Vm90ZXN9LAogICAgKTsKCj1jdXQKCnN1YiBGQVFSYXRpbmdTdGFyc1Nob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhWb3RlUmVzdWx0IFZvdGVzKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgc3RhcnMgYnkgbXV0aXBseSBieSA1IGFuZCBkaXZpZGUgYnkgMTAwCiAgICAjIDEwMCBiZWNhdXNlIFZvdGUgcmVzdWx0IGlzIGEgJQogICAgIyA1IGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IDUgc3RhcnMKICAgIG15ICRTdGFyQ291bnRlciA9IGludCggJFBhcmFte1ZvdGVSZXN1bHR9ICogMC4wNSApOwogICAgaWYgKCAkU3RhckNvdW50ZXIgPCA1ICkgewoKICAgICAgICAjIGFkZCAxIGJlY2F1c2UgbG93ZXN0IHZhbHVlIHNob3VsZCBiZSAxCiAgICAgICAgJFN0YXJDb3VudGVyKys7CiAgICB9CgogICAgIyB0aGUgbnVtYmVyIG9mIHN0YXJzIGNhbid0IGJlIGdyYXRlciB0aGF0IDUKICAgIGVsc2lmICggJFN0YXJDb3VudGVyID4gNSApIHsKICAgICAgICAkU3RhckNvdW50ZXIgPSA1OwogICAgfQoKICAgICMgb3V0cHV0IHJhdGluZyBibG9jawogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1ZpZXdSYXRpbmcnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBkbyBub3Qgb3V0cHV0IGFueSBzdGFyIGlmIHRoaXMgRkFRIGhhcyBiZWVuIG5vdCB2b3RlZAogICAgaWYgKCAkUGFyYW17Vm90ZXN9IGVxICcwJyApIHsKICAgICAgICAkU3RhckNvdW50ZXIgPSAwOwogICAgfQoKICAgICMgc2hvdyBzdGFycyBvbmx5IGlmIHRoZSBGQVEgaXRlbSBoYXMgYmVlbiB2b3RlZCBhdCBsZWFzdCBvbmNlIGV2ZW4gaWYgdGhlICRWb3RlUmVzdWx0IGlzIDAKICAgIGVsc2UgewoKICAgICAgICAjIG91dHB1dCBzdGFycwogICAgICAgIGZvciAoIDEgLi4gJFN0YXJDb3VudGVyICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSYXRlU3RhcnMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCBzdGFycyB0ZXh0CiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnUmF0ZVN0YXJzQ291bnQnLAogICAgICAgIERhdGEgPT4geyBTdGFycyA9PiAkU3RhckNvdW50ZXIgfSwKICAgICk7Cn0KCj1pdGVtIEZBUVNob3dMYXRlc3ROZXdzQm94KCkKClNob3dzIGFuIGluZm8gYm94IHdpaCB0aGUgbGFzdCB1cGRhdGVkIG9yIGxhc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMuCkRlcGVuZGluZyBvbiB0aGUgdXNlcyBpbnRlcmZhY2UgKGFnZW50LCBjdXN0b21lciwgcHVibGljKSBvbmx5IHRoZSBhcHByb3ByaWF0ZQphcnRpY2xlcyBhcmUgc2hvd24gaGVyZS4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93TGF0ZXN0TmV3c0JveCgKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIFR5cGUgICAgICAgICAgICA9PiAnTGFzdENyZWF0ZScsICAgICAgICAgICAgICAgIyAoTGFzdENyZWF0ZSB8IExhc3RDaGFuZ2UpCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLCAgICAgICAgICAgICAgICAgICAjIChBZ2VudCwgQ3VzdG9tZXIsIFB1YmxpYykKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gNSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICdub25lJywgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIEZBUVNob3dMYXRlc3ROZXdzQm94IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoRkFRT2JqZWN0IFR5cGUgTW9kZSBJbnRlcmZhY2UgSW50ZXJmYWNlU3RhdGVzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIENhdGVnb3J5SUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIEZBUSBvYmplY3QgbG9jYWxseQogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgIyBjaGVjayB0eXBlCiAgICBpZiAoICRQYXJhbXtUeXBlfSAhfiBteyBMYXN0Q3JlYXRlIHwgTGFzdENoYW5nZSB9eG1zICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2UhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG1vZGUKICAgIGlmICggJFBhcmFte01vZGV9ICF+IG17IEFnZW50IHwgQ3VzdG9tZXIgfCBQdWJsaWMgfXhtcyApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ01vZGUgbXVzdCBiZSBlaXRoZXIgQWdlbnQsIEN1c3RvbWVyIG9yIFB1YmxpYyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VyCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ3VzdG9tZXInICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ3VzdG9tZXJVc2VyIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgb3JkZXIgYnkgc2VhcmNoIHBhcmFtZXRlciBhbmQgaGVhZGVyIGJhc2VkIG9uIHR5cGUKICAgIG15ICRPcmRlckJ5OwogICAgbXkgJEhlYWRlcjsKICAgIG15ICRSU1NUaXRsZTsKICAgIGlmICggJFBhcmFte1R5cGV9IGVxICdMYXN0Q3JlYXRlJyApIHsKICAgICAgICAkT3JkZXJCeSAgPSAnQ3JlYXRlZCc7CiAgICAgICAgJEhlYWRlciAgID0gJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyc7CiAgICAgICAgJFJTU1RpdGxlID0gJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJzsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1R5cGV9IGVxICdMYXN0Q2hhbmdlJyApIHsKICAgICAgICAkT3JkZXJCeSAgPSAnQ2hhbmdlZCc7CiAgICAgICAgJEhlYWRlciAgID0gJ0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyc7CiAgICAgICAgJFJTU1RpdGxlID0gJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknOwogICAgfQoKICAgIG15ICRSZXN1bHQgPSAtMTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZC91cGRhdGVkIGFydGljbGVzCiAgICBteSAkU2hvdyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkV4cGxvcmVyOjokUGFyYW17VHlwZX06OlNob3ciKTsKICAgIGlmICggJFNob3ctPnsgJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSB9ICkgewoKICAgICAgICAjIHRvIHN0b3JlIHNlYXJjaCBwYXJhbSBmb3IgY2F0ZWdvcmllcwogICAgICAgIG15ICVDYXRlZ29yeVNlYXJjaFBhcmFtOwoKICAgICAgICAjIGlmIHN1YmNhdGVnb3JpZXMgc2hvdWxkIGFsc28gYmUgc2hvd24KICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkV4cGxvcmVyOjokUGFyYW17VHlwZX06OlNob3dTdWJDYXRlZ29yeUl0ZW1zIikgKSB7CgogICAgICAgICAgICAjIGZpbmQgdGhlIHN1YmNhdGVnb3JpZXMgb2YgdGhpcyBjYXRlZ29yeQogICAgICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRHNSZWYgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2VhcmNoIGluIHRoZSBnaXZlbiBjYXRlZ29yeSBhbmQgYWRkIHRoZSBzdWJjYXRlZ29yeQogICAgICAgICAgICAkQ2F0ZWdvcnlTZWFyY2hQYXJhbXtDYXRlZ29yeUlEc30gPSBbICRQYXJhbXtDYXRlZ29yeUlEfSwgQHskU3ViQ2F0ZWdvcnlJRHNSZWZ9IF07CiAgICAgICAgfQoKICAgICAgICAjIGEgY2F0ZWdvcnkgaXMgZ2l2ZW4gYW5kIHN1YmNhdGVnb3JpZXMgc2hvdWxkIG5vdCBiZSBzaG93bgogICAgICAgIGVsc2lmICggJFBhcmFte0NhdGVnb3J5SUR9ICkgewoKICAgICAgICAgICAgIyBzZWFyY2ggb25seSBpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgICAgICAgICAgJENhdGVnb3J5U2VhcmNoUGFyYW17Q2F0ZWdvcnlJRHN9ID0gWyAkUGFyYW17Q2F0ZWdvcnlJRH0gXTsKICAgICAgICB9CgogICAgICAgICMgc2VhcmNoIHRoZSBGQVEgYXJ0aWNsZXMKICAgICAgICBteSBASXRlbUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFskT3JkZXJCeV0sCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydEb3duJ10sCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJFBhcmFte0ludGVyZmFjZX0sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RXhwbG9yZXI6OiRQYXJhbXtUeXBlfTo6TGltaXQiKSB8fCA1LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAlQ2F0ZWdvcnlTZWFyY2hQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIHRoZXJlIGlzIHNvbWV0aGluZyB0byBzaG93CiAgICAgICAgaWYgKEBJdGVtSURzKSB7CgogICAgICAgICAgICAkUmVzdWx0ID0gMTsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgaW5mbyBib3gKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlciA9PiAkSGVhZGVyLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgUlNTIEZlZWQgaWNvbgogICAgICAgICAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnUHVibGljJyApIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0TmV3c1JTUycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkUlNTVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciBteSAkSXRlbUlEIChASXRlbUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzaG93IHRoZSBhcnRpY2xlIHJvdwogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYXYgPT4gJFBhcmFte05hdn0sCiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkUmVzdWx0Owp9Cgo9aXRlbSBGQVFTaG93VG9wMTAoKQoKU2hvd3MgYW4gaW5mbyBib3ggd2loIHRoZSBUb3AgMTAgRkFRIGFydGljbGVzLgpEZXBlbmRpbmcgb24gdGhlIHVzZXMgaW50ZXJmYWNlIChhZ2VudCwgY3VzdG9tZXIsIHB1YmxpYykgb25seSB0aGUgYXBwcm9wcmlhdGUKYXJ0aWNsZXMgYXJlIHNob3duIGhlcmUuCgogICAgJExheW91dE9iamVjdC0+RkFRU2hvd1RvcDEwKAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LCAgICAgICAgICAgICAgICAgIyBuZWVkZWQgZm9yIGNvcmUgbW9kdWxlIGludGVyYWN0aW9uCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLCAgICAgICAgICAgICAgICAgICAjIChBZ2VudCwgQ3VzdG9tZXIsIFB1YmxpYykKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gNSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICdub25lJywgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIEZBUVNob3dUb3AxMCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KEZBUU9iamVjdCBNb2RlIEludGVyZmFjZSBJbnRlcmZhY2VTdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ2F0ZWdvcnlJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgbW9kZQogICAgaWYgKCAkUGFyYW17TW9kZX0gIX4gbXsgQWdlbnQgfCBDdXN0b21lciB8IFB1YmxpYyB9eG1zICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTW9kZSBtdXN0IGJlIGVpdGhlciBBZ2VudCwgQ3VzdG9tZXIgb3IgUHVibGljIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBDdXN0b21lclVzZXIKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdDdXN0b21lcicgJiYgISRQYXJhbXtDdXN0b21lclVzZXJ9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDdXN0b21lclVzZXIhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIEZBUSBvYmplY3QgbG9jYWxseQogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgbXkgJFJlc3VsdCA9IC0xOwoKICAgICMgc2hvdyBsYXN0IGFkZGVkL3VwZGF0ZWQgYXJ0aWNsZXMKICAgIG15ICRTaG93ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6OlRvcDEwOjpTaG93Jyk7CiAgICBpZiAoICRTaG93LT57ICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gfSApIHsKCiAgICAgICAgIyB0byBzdG9yZSBzZWFyY2ggcGFyYW0gZm9yIGNhdGVnb3JpZXMKICAgICAgICBteSAlQ2F0ZWdvcnlTZWFyY2hQYXJhbTsKCiAgICAgICAgIyBpZiBzdWJjYXRlZ29yaWVzIHNob3VsZCBhbHNvIGJlIHNob3duCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OlNob3dTdWJDYXRlZ29yeUl0ZW1zJykgKSB7CgogICAgICAgICAgICAjIGZpbmQgdGhlIHN1YmNhdGVnb3JpZXMgb2YgdGhpcyBjYXRlZ29yeQogICAgICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRHNSZWYgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2VhcmNoIGluIHRoZSBnaXZlbiBjYXRlZ29yeSBhbmQgYWRkIHRoZSBzdWJjYXRlZ29yeQogICAgICAgICAgICAkQ2F0ZWdvcnlTZWFyY2hQYXJhbXtDYXRlZ29yeUlEc30gPSBbICRQYXJhbXtDYXRlZ29yeUlEfSwgQHskU3ViQ2F0ZWdvcnlJRHNSZWZ9IF07CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgdG9wIDEwIGFydGljbGVzIGZvciBjYXRlZ29yaWVzIHdpdGggYXQgbGVhc3Qgcm8gcGVybWlzc2lvbnMKICAgICAgICBteSAkVG9wMTBJdGVtSURzUmVmID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFUb3AxMEdldCgKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0sCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OkxpbWl0JykgfHwgMTAsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgJUNhdGVnb3J5U2VhcmNoUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyB0aGVyZSBpcyBzb21ldGhpbmcgdG8gc2hvdwogICAgICAgIGlmICggQHskVG9wMTBJdGVtSURzUmVmfSApIHsKCiAgICAgICAgICAgICRSZXN1bHQgPSAxOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBpbmZvIGJveAogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgSGVhZGVyID0+ICdUb3AgMTAgRkFRIGFydGljbGVzJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgdGhlIFJTUyBGZWVkIGljb24KICAgICAgICAgICAgaWYgKCAkUGFyYW17TW9kZX0gZXEgJ1B1YmxpYycgKSB7CgogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdE5ld3NSU1MnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICA9PiAnVG9wMTAnLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAnRkFRIEFydGljbGVzIChUb3AgMTApJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJE51bWJlcjsKICAgICAgICAgICAgZm9yIG15ICRUb3AxMEl0ZW0gKCBAeyRUb3AxMEl0ZW1JRHNSZWZ9ICkgewoKICAgICAgICAgICAgICAgICMgaW5jcmVhc2UgdGhlIG51bWJlcgogICAgICAgICAgICAgICAgJE51bWJlcisrOwoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJFRvcDEwSXRlbS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgYXJ0aWNsZSByb3cKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTmF2ID0+ICRQYXJhbXtOYXZ9LAogICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNob3cgdGhlIFRvcDEwIHBvc2l0aW9uIG51bWJlcgogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlciA9PiAkTnVtYmVyLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkUmVzdWx0Owp9Cgo9aXRlbSBGQVFTaG93UXVpY2tTZWFyY2goKQoKU2hvd3MgYW4gaW5mbyBib3ggd2loIHRoZSBRdWljayBTZWFyY2guCgogICAgJExheW91dE9iamVjdC0+RkFRU2hvd1F1aWNrU2VhcmNoKAogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnUHVibGljJywgICAgICAgICAgICAgICAgICAgIyAoQWdlbnQsIEN1c3RvbWVyLCBQdWJsaWMpCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgICAgIE5hdiAgICAgICAgICAgICA9PiAnbm9uZScsICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBGQVFTaG93UXVpY2tTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhNb2RlIEludGVyZmFjZSBJbnRlcmZhY2VTdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbW9kZQogICAgaWYgKCAkUGFyYW17TW9kZX0gIX4gbXsgQWdlbnQgfCBBZ2VudFNtYWxsIHwgQ3VzdG9tZXIgfCBQdWJsaWMgfXhtcyApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ01vZGUgbXVzdCBiZSBlaXRoZXIgQWdlbnQsIEN1c3RvbWVyIG9yIFB1YmxpYyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGFjdGlvbiBtb2R1bGUKICAgIG15ICRBY3Rpb247CiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQWdlbnRTbWFsbCcgKSB7CiAgICAgICAgJEFjdGlvbiA9ICdBZ2VudEZBUVNlYXJjaFNtYWxsJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRBY3Rpb24gPSAkUGFyYW17TW9kZX0gLiAnRkFRU2VhcmNoJzsKICAgIH0KCiAgICAjIGNoZWNrIEN1c3RvbWVyVXNlcgogICAgaWYgKCAkUGFyYW17TW9kZX0gZXEgJ0N1c3RvbWVyJyAmJiAhJFBhcmFte0N1c3RvbWVyVXNlcn0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEN1c3RvbWVyVXNlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2hvdyBxdWljayBzZWFyY2gKICAgIG15ICRTaG93ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6OlF1aWNrU2VhcmNoOjpTaG93Jyk7CiAgICBpZiAoICRTaG93LT57ICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gfSB8fCAkUGFyYW17TW9kZX0gZXEgJ0FnZW50U21hbGwnICkgewoKICAgICAgICAjIGNhbGwgUXVpY2tTZWFyY2ggYmxvY2sKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1F1aWNrU2VhcmNoJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJEFjdGlvbiwKICAgICAgICAgICAgICAgIE5hdiAgICA9PiAkUGFyYW17TmF2fSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0RkFRLnBtIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGlua09iamVjdEZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0OwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0RkFRIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGxpbmsgb2JqZWN0IChGQVEpCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3RGQVEtPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoQ29uZmlnT2JqZWN0IExvZ09iamVjdCBNYWluT2JqZWN0IERCT2JqZWN0IFVzZXJPYmplY3QgRW5jb2RlT2JqZWN0CiAgICAgICAgUXVldWVPYmplY3QgR3JvdXBPYmplY3QgUGFyYW1PYmplY3QgVGltZU9iamVjdCBMYW5ndWFnZU9iamVjdCBVc2VyTGFuZ3VhZ2UgVXNlcklEKQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+eyRPYmplY3R9ID0gJFBhcmFteyRPYmplY3R9IHx8IGRpZSAiR290IG5vICRPYmplY3QhIjsKICAgIH0KCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0gPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0LT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlcwogICAgJFNlbGYtPntPYmplY3REYXRhfSA9IHsKICAgICAgICBPYmplY3QgICA9PiAnRkFRJywKICAgICAgICBSZWFsbmFtZSA9PiAnRkFRJywKICAgIH07CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBUYWJsZUNyZWF0ZUNvbXBsZXgoKQoKcmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIGJsb2NrIGRhdGEKCiAgICBteSBAQmxvY2tEYXRhID0gJExpbmtPYmplY3QtPlRhYmxlQ3JlYXRlQ29tcGxleCgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7CgphIHJlc3VsdCBjb3VsZCBiZQoKICAgICVCbG9ja0RhdGEgPSAoCiAgICAgICAgewogICAgICAgICAgICBPYmplY3QgICAgPT4gJ0ZBUScsCiAgICAgICAgICAgIEJsb2NrbmFtZSA9PiAnRkFRJywKICAgICAgICAgICAgSGVhZGxpbmUgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGQVEjJywKICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEzMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdTdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTEwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gWwogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxMjMxMjMxMjMnLAogICAgICAgICAgICAgICAgICAgICAgICBDc3MgICAgID0+ICdzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2giJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdUaGUgdGl0bGUnLAogICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDEtMDEgMTI6MTI6MDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICc0MzQyMzQnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1RoZSB0aXRsZSBvZiBGQVEgMicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdwdWJsaWMgKGFsbCknLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA4LTAxLTAxIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgKTsKCj1jdXQKCnN1YiBUYWJsZUNyZWF0ZUNvbXBsZXggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IHx8IHJlZiAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gbmUgJ0hBU0gnICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBPYmplY3RMaW5rTGlzdFdpdGhEYXRhIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjb252ZXJ0IHRoZSBsaXN0CiAgICBteSAlTGlua0xpc3Q7CiAgICBmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICV7ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB9ICkgewoKICAgICAgICAjIGV4dHJhY3QgbGluayB0eXBlIExpc3QKICAgICAgICBteSAkTGlua1R5cGVMaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfTsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXskTGlua1R5cGVMaXN0fSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBkaXJlY3Rpb24gbGlzdAogICAgICAgICAgICBteSAkRGlyZWN0aW9uTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufTsKCiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKCBzb3J0IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgJExpbmtMaXN0eyRGQVFJRH0tPntEYXRhfSA9ICREaXJlY3Rpb25MaXN0LT57JEZBUUlEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSB0aGUgaXRlbSBsaXN0CiAgICBteSBASXRlbUxpc3Q7CiAgICBmb3IgbXkgJEZBUUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJUxpbmtMaXN0ICkgewoKICAgICAgICAjIGV4dHJhY3QgZmFxIGRhdGEKICAgICAgICBteSAkRkFRID0gJExpbmtMaXN0eyRGQVFJRH0tPntEYXRhfTsKCiAgICAgICAgbXkgQEl0ZW1Db2x1bW5zID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRkFRLT57TnVtYmVyfSwKICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0nIC4gJEZBUUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRGQVEtPntUaXRsZX0sCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJEZBUS0+e1N0YXRlfSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRGQVEtPntDcmVhdGVkfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXEBJdGVtQ29sdW1uczsKICAgIH0KCiAgICByZXR1cm4gaWYgIUBJdGVtTGlzdDsKCiAgICAjIGRlZmluZSB0aGUgYmxvY2sgZGF0YQogICAgbXkgJEZBUUhvb2sgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICBteSAlQmxvY2sgICA9ICgKICAgICAgICBPYmplY3QgICAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0sCiAgICAgICAgQmxvY2tuYW1lID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntSZWFsbmFtZX0sCiAgICAgICAgSGVhZGxpbmUgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRkFRSG9vaywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdUaXRsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1N0YXRlJywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTEwLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDcmVhdGVkJywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgSXRlbUxpc3QgPT4gXEBJdGVtTGlzdCwKICAgICk7CgogICAgcmV0dXJuICggXCVCbG9jayApOwp9Cgo9aXRlbSBUYWJsZUNyZWF0ZVNpbXBsZSgpCgpyZXR1cm4gYSBoYXNoIHdpdGggdGhlIGxpbmsgb3V0cHV0IGRhdGEKCiAgICBteSAlTGlua091dHB1dERhdGEgPSAkTGlua09iamVjdC0+VGFibGVDcmVhdGVTaW1wbGUoCiAgICAgICAgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSA9PiAkT2JqZWN0TGlua0xpc3RSZWYsCiAgICApOwoKYSByZXN1bHQgY291bCBiZSBSZXR1cm4KCiAgICAlTGlua091dHB1dERhdGEgPSAoCiAgICAgICAgTm9ybWFsOjpTb3VyY2UgPT4gewogICAgICAgICAgICBUaWNrZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0Y6NTU1NTUnLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0ZBUSM1NTU1NTU6IFRoZSBGQVEgdGl0bGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGOjIyMjIyJywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdGQVEjMjIyMjI6IFRpdGxlIG9mIEZBUSAyMjIyMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUGFyZW50Q2hpbGQ6OlRhcmdldCA9PiB7CiAgICAgICAgICAgIFRpY2tldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRjo3Nzc3NycsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnRkFRIzc3Nzc3OiBGQVEgdGl0bGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgKTsKCj1jdXQKCnN1YiBUYWJsZUNyZWF0ZVNpbXBsZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfHwgcmVmICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIE9iamVjdExpbmtMaXN0V2l0aERhdGEhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRkFRSG9vayA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgIG15ICVMaW5rT3V0cHV0RGF0YTsKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyRMaW5rVHlwZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGRpcmVjdGlvbiBsaXN0CiAgICAgICAgICAgIG15ICREaXJlY3Rpb25MaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259OwoKICAgICAgICAgICAgbXkgQEl0ZW1MaXN0OwogICAgICAgICAgICBmb3IgbXkgJEZBUUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRpY2t0IGRhdGEKICAgICAgICAgICAgICAgIG15ICRGQVEgPSAkRGlyZWN0aW9uTGlzdC0+eyRGQVFJRH07CgogICAgICAgICAgICAgICAgIyBkZWZpbmUgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICBteSAlSXRlbSA9ICgKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGOicgLiAkRkFRLT57TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICIkRkFRSG9vayRGQVEtPntOdW1iZXJ9OiAkRkFRLT57VGl0bGV9IiwKICAgICAgICAgICAgICAgICAgICBMaW5rICAgID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JyAuICRGQVFJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXCVJdGVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBpdGVtIGxpc3QgdG8gbGluayBvdXRwdXQgZGF0YQogICAgICAgICAgICAkTGlua091dHB1dERhdGF7ICRMaW5rVHlwZSAuICc6OicgLiAkRGlyZWN0aW9uIH0tPntGQVF9ID0gXEBJdGVtTGlzdDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVMaW5rT3V0cHV0RGF0YTsKfQoKPWl0ZW0gQ29udGVudFN0cmluZ0NyZWF0ZSgpCgpyZXR1cm4gYSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkNvbnRlbnRTdHJpbmdDcmVhdGUoCiAgICAgICAgQ29udGVudERhdGEgPT4gJEhhc2hSZWYsCiAgICApOwoKPWN1dAoKc3ViIENvbnRlbnRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbnRlbnREYXRhfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29udGVudERhdGEhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm47Cn0KCj1pdGVtIFNlbGVjdGFibGVPYmplY3RMaXN0KCkKCnJldHVybiBhbiBhcnJheSBoYXNoIHdpdGggc2VsZWN0YWJsZSBvYmplY3RzCgogICAgbXkgQFNlbGVjdGFibGVPYmplY3RMaXN0ID0gJExpbmtPYmplY3QtPlNlbGVjdGFibGVPYmplY3RMaXN0KAogICAgICAgIFNlbGVjdGVkID0+ICRJZGVudGlmaWVyLCAgIyAob3B0aW9uYWwpCiAgICApOwoKYSByZXN1bHQgY291bGQgYmUKCiAgICBAU2VsZWN0YWJsZU9iamVjdExpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRkFRJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0ZBUScsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgU2VsZWN0YWJsZU9iamVjdExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZWN0ZWQ7CiAgICBpZiAoICRQYXJhbXtTZWxlY3RlZH0gJiYgJFBhcmFte1NlbGVjdGVkfSBlcSAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSApIHsKICAgICAgICAkU2VsZWN0ZWQgPSAxOwogICAgfQoKICAgICMgb2JqZWN0IHNlbGVjdCBsaXN0CiAgICBteSBAT2JqZWN0U2VsZWN0TGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgICAgICBWYWx1ZSAgICA9PiAkU2VsZi0+e09iamVjdERhdGF9LT57UmVhbG5hbWV9LAogICAgICAgICAgICBTZWxlY3RlZCA9PiAkU2VsZWN0ZWQsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBPYmplY3RTZWxlY3RMaXN0Owp9Cgo9aXRlbSBTZWFyY2hPcHRpb25MaXN0KCkKCnJldHVybiBhbiBhcnJheSBoYXNoIHdpdGggc2VhcmNoIG9wdGlvbnMKCiAgICBteSBAU2VhcmNoT3B0aW9uTGlzdCA9ICRMaW5rT2JqZWN0LT5TZWFyY2hPcHRpb25MaXN0KAogICAgICAgIFN1Yk9iamVjdCA9PiAnQmxhJywgICMgKG9wdGlvbmFsKQogICAgKTsKCmEgcmVzdWx0IGNvdWxkIGJlCgogICAgQFNlYXJjaE9wdGlvbkxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnRkFRIycsCiAgICAgICAgICAgIElucHV0U3RyZyA9PiAkRm9ybVN0cmluZywKICAgICAgICAgICAgRm9ybURhdGEgID0+ICcxMjM0JywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdUaXRsZScsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnQmxhQmxhJywKICAgICAgICB9LAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hPcHRpb25MaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBzZWFyY2ggb3B0aW9uIGxpc3QKICAgIG15ICRGQVFIb29rICAgICAgICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgbXkgQFNlYXJjaE9wdGlvbkxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lID0+ICRGQVFIb29rLAogICAgICAgICAgICBUeXBlID0+ICdUZXh0JywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICA9PiAnVGl0bGUnLAogICAgICAgICAgICBOYW1lID0+ICdUaXRsZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdXaGF0JywKICAgICAgICAgICAgTmFtZSA9PiAnRnVsbHRleHQnLAogICAgICAgICAgICBUeXBlID0+ICdUZXh0JywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb3Jta2V5CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKICAgICAgICAkUm93LT57Rm9ybUtleX0gPSAnU0VBUkNIOjonIC4gJFJvdy0+e0tleX07CiAgICB9CgogICAgIyBhZGQgZm9ybSBkYXRhIGFuZCBpbnB1dCBzdHJpbmcKICAgIFJPVzoKICAgIGZvciBteSAkUm93IChAU2VhcmNoT3B0aW9uTGlzdCkgewoKICAgICAgICAjIHByZXBhcmUgdGV4dCBpbnB1dCBmaWVsZHMKICAgICAgICBpZiAoICRSb3ctPntUeXBlfSBlcSAnVGV4dCcgKSB7CgogICAgICAgICAgICAjIGdldCBmb3JtIGRhdGEKICAgICAgICAgICAgJFJvdy0+e0Zvcm1EYXRhfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFJvdy0+e0Zvcm1LZXl9ICk7CgogICAgICAgICAgICAjIHBhcnNlIHRoZSBpbnB1dCB0ZXh0IGJsb2NrCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbnB1dFRleHQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJFJvdy0+e0Zvcm1LZXl9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRSb3ctPntGb3JtRGF0YX0gfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhZGQgdGhlIGlucHV0IHN0cmluZwogICAgICAgICAgICAkUm93LT57SW5wdXRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdMaW5rT2JqZWN0JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUk9XOwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIGxpc3QgYm94ZXMKICAgICAgICBpZiAoICRSb3ctPntUeXBlfSBlcSAnTGlzdCcgKSB7CgogICAgICAgICAgICAjIGdldCBmb3JtIGRhdGEKICAgICAgICAgICAgbXkgQEZvcm1EYXRhID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAkUm93LT57Rm9ybUtleX0gKTsKICAgICAgICAgICAgJFJvdy0+e0Zvcm1EYXRhfSA9IFxARm9ybURhdGE7CgogICAgICAgICAgICBteSAlTGlzdERhdGE7CiAgICAgICAgICAgIGlmICggJFJvdy0+e0tleX0gZXEgJ1N0YXRlSURzJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBzdGF0ZSBsaXN0CiAgICAgICAgICAgICAgICAlTGlzdERhdGEgPSAkU2VsZi0+e1N0YXRlT2JqZWN0fS0+U3RhdGVMaXN0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCB0aGUgaW5wdXQgc3RyaW5nCiAgICAgICAgICAgICRSb3ctPntJbnB1dFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVMaXN0RGF0YSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFJvdy0+e0Zvcm1LZXl9LAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUm93LT57Rm9ybURhdGF9LAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICA9PiAzLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBAU2VhcmNoT3B0aW9uTGlzdDsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9PdXRwdXRGaWx0ZXJGQVEucG0gLSBPdXRwdXQgZmlsdGVyIGZvciBGQVEgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6T3V0cHV0RmlsdGVyRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KFBhcmFtT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IExvZ09iamVjdCBMYXlvdXRPYmplY3QpKSB7CiAgICAgICAgJFNlbGYtPnskT2JqZWN0fSA9ICRQYXJhbXskT2JqZWN0fSB8fCBkaWUgIkdvdCBubyAkT2JqZWN0ISI7CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBkYXRhCiAgICByZXR1cm4gaWYgISRQYXJhbXtEYXRhfTsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte0RhdGF9IG5lICdTQ0FMQVInOwogICAgcmV0dXJuIGlmICEkeyAkUGFyYW17RGF0YX0gfTsKICAgIHJldHVybiBpZiAhJFBhcmFte1RlbXBsYXRlRmlsZX07CgogICAgIyBjaGVjayBwZXJtaXNzaW9uCiAgICByZXR1cm4gaWYgISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0VudlJlZn0tPnsnVXNlcklzR3JvdXBSb1tmYXFdJ307CgogICAgIyBnZXQgYWxsb3dlZCB0ZW1wbGF0ZSBuYW1lcwogICAgbXkgJFZhbGlkVGVtcGxhdGVzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0Zyb250ZW5kOjpPdXRwdXQ6OkZpbHRlckVsZW1lbnRQb3N0JyktPntGQVF9LT57VGVtcGxhdGVzfTsKCiAgICAjIGNoZWNrIHRlbXBsYXRlIG5hbWUKICAgIHJldHVybiBpZiAhJFZhbGlkVGVtcGxhdGVzLT57ICRQYXJhbXtUZW1wbGF0ZUZpbGV9IH07CgogICAgIyBpZiBubyBzZXNzaW9uIGNvb2tpZXMgYXJlIHVzZWQgd2UgYXR0YWNoIHRoZSBzZXNzaW9uIGFzIFVSTCBwYXJhbWV0ZXIKICAgIG15ICRTZXNzaW9uU3RyaW5nID0gJyc7CiAgICBpZiAoICEkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnU2Vzc2lvblVzZUNvb2tpZScpICkgewogICAgICAgIG15ICRTZXNzaW9uSUQgPSAkUGFyYW17U2Vzc2lvbklEfQogICAgICAgICAgICB8fCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdTZXNzaW9uTmFtZScpICkKICAgICAgICAgICAgfHwgJyc7CiAgICAgICAgJFNlc3Npb25TdHJpbmcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnU2Vzc2lvbk5hbWUnKSAuICc9JyAuICRTZXNzaW9uSUQgLiAnOyc7CiAgICB9CgogICAgbXkgJFN0YXJ0UGF0dGVybiAgICA9ICc8IS0tIFsgXSBPdXRwdXRGaWx0ZXJIb29rX1RpY2tldE9wdGlvbnNFbmQgWyBdIC0tPiAuKz8nOwogICAgbXkgJEZBUVRyYW5zbGF0YWJsZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEnKTsKCiAgICAjIGFkZCBGQVEgbGluayB0byBhbiBleGlzdGluZyBPcHRpb25zIGJsb2NrCiAgICAjJEZpbmlzaFBhdHRlcm4gd2lsbCBiZSByZXBsYWNlZCBieSAkUmVwbGFjZQogICAgaWYgKCAkeyAkUGFyYW17RGF0YX0gfSA9fiBteyAkU3RhcnRQYXR0ZXJuIH1peG1zICkgewoKICAgICAgICBteSAkRmluaXNoUGF0dGVybiA9ICc8L2Rpdj4nOwogICAgICAgIG15ICRSZXBsYWNlICAgICAgID0gPDwiRU5EIjsKICAgICAgICAgICAgICAgICAgICAgICAgPGEgIGhyZWY9XCIjXCIgaWQ9XCJPcHRpb25GQVFcIj5bICRGQVFUcmFuc2xhdGFibGUgXTwvYT4KCjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+Ly88IVtDREFUQVsKLypnbG9iYWwgRkFROiB0cnVlICovCkZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLkluaXRGQVFUaWNrZXRDb21wb3NlKFwkKCcjUmljaFRleHQnKSk7ClwkKCcjT3B0aW9uRkFRJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIHZhciBGQVFJRnJhbWUgPSAnPGlmcmFtZSBjbGFzcz1cIlRleHRPcHRpb24gRkFRXCIgc3JjPVwiJyArIENvcmUuQ29uZmlnLkdldCgnQ0dJSGFuZGxlJykgKyAnPycgKyAnJFNlc3Npb25TdHJpbmcnICsgJ0FjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO05hdj1Ob25lO1N1YmplY3Q9O1doYXQ9XCI+PC9pZnJhbWU+JzsKICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKEZBUUlGcmFtZSwgJycsICcxMHB4JywgJ0NlbnRlcicsIHRydWUpOwogICAgcmV0dXJuIGZhbHNlOwp9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KRU5ECiAgICAgICAgJHsgJFBhcmFte0RhdGF9IH0gPX4gc3sgKCRTdGFydFBhdHRlcm4pICRGaW5pc2hQYXR0ZXJuIH17JDEkUmVwbGFjZX1peG1zOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgYWRkIEZBUSBsaW5rIGFuZCBpdHMgb3duIGJsb2NrLCBpZiB0aGVyZSBubyBUaWNrZXRPcHRpb25zIGJsb2NrIHdhcyBjYWxsZWQKICAgICRTdGFydFBhdHRlcm4gPSAnPCEtLSBbIF0gT3V0cHV0RmlsdGVySG9va19Ob1RpY2tldE9wdGlvbnNGYWxsYmFjayBbIF0gLS0+IC4rPyc7CiAgICBteSAkT3B0aW9uc1RyYW5zbGF0YWJsZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdPcHRpb25zJyk7CiAgICBteSAkUmVwbGFjZSAgICAgICAgICAgICA9IDw8IkVORCI7CjwhLS0gT3V0cHV0RmlsdGVySG9va19Ob1RpY2tldE9wdGlvbnNGYWxsYmFjayAtLT4KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JE9wdGlvbnNUcmFuc2xhdGFibGU6PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhICBocmVmPVwiI1wiIGlkPVwiT3B0aW9uRkFRXCI+WyAkRkFRVHJhbnNsYXRhYmxlIF08L2E+Cgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KRkFRLkFnZW50LlRpY2tldENvbXBvc2UuSW5pdEZBUVRpY2tldENvbXBvc2UoXCQoJyNSaWNoVGV4dCcpKTsKXCQoJyNPcHRpb25GQVEnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIEZBUUlGcmFtZSA9ICc8aWZyYW1lIGNsYXNzPSJUZXh0T3B0aW9uIEZBUSIgc3JjPSInICsgQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSArICc/JyArICckU2Vzc2lvblN0cmluZycgKyAnQWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7TmF2PU5vbmU7U3ViamVjdD07V2hhdD0iPjwvaWZyYW1lPic7CiAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZyhGQVFJRnJhbWUsICcnLCAnMTBweCcsICdDZW50ZXInLCB0cnVlKTsKICAgIHJldHVybiBmYWxzZTsKfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIkNsZWFyXCI+PC9kaXY+CkVORAogICAgJHsgJFBhcmFte0RhdGF9IH0gPX4gc3sgKCRTdGFydFBhdHRlcm4pIH17JFJlcGxhY2V9aXhtczsKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9QdWJsaWNIZWFkZXJNZXRhRkFRU2VhcmNoLnBtCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHVibGljSGVhZGVyTWV0YUZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIGZvciAocXcoQ29uZmlnT2JqZWN0IExvZ09iamVjdCBMYXlvdXRPYmplY3QgVGltZU9iamVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRffSA9ICRQYXJhbXskX30gfHwgZGllICJHb3Qgbm8gJF8hIjsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJFNlbGYtPntMYXlvdXRPYmplY3R9LT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAkU2Vzc2lvbiA9ICc7JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25OYW1lfSAuICc9JwogICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3ROYW1lJyk7CgogICAgJFRpdGxlIC49ICcgLSBQdWJsaWMgKCcgLiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJykgLiAnKSc7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ3NlYXJjaCcsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICBIcmVmICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj0nIC4gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259CiAgICAgICAgICAgICAgICAuICc7U3ViYWN0aW9uPU9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGZvciBGQVEgZnVsbHRleHQKICAgIG15ICRGdWxsdGV4dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVFGdWxsdGV4dCcpOwogICAgJFRpdGxlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3ROYW1lJyk7CiAgICAkVGl0bGUgLj0gJyAtIFB1YmxpYyAoJyAuICRGdWxsdGV4dCAuICcpJzsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPScgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIEFBQUZBUS5kdGwgLSAkVGV4dCB2YXJpYWJsZSBmaWxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKIyBDb21tb24KJFRleHR7ImludGVybmFsIn0KJFRleHR7InB1YmxpYyJ9CiRUZXh0eyJleHRlcm5hbCJ9CiRUZXh0eyJGQVEgTnVtYmVyIn0KJFRleHR7IkxhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyJ9CiRUZXh0eyJMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMifQokVGV4dHsiVG9wIDEwIEZBUSBhcnRpY2xlcyJ9CiRUZXh0eyJTdWJjYXRlZ29yeSBvZiJ9CiRUZXh0eyJObyByYXRlIHNlbGVjdGVkISJ9CiRUZXh0eyJFeHBsb3JlciJ9CgojIEZBUSAnc3RhdGVzJwokVGV4dHsicHVibGljIChhbGwpIn0KJFRleHR7ImV4dGVybmFsIChjdXN0b21lcikifQokVGV4dHsiaW50ZXJuYWwgKGFnZW50KSJ9CgojIFN0YXRzCiRUZXh0eyJTdGFydCBkYXkifQokVGV4dHsiU3RhcnQgbW9udGgifQokVGV4dHsiU3RhcnQgeWVhciJ9CiRUZXh0eyJFbmQgZGF5In0KJFRleHR7IkVuZCBtb250aCJ9CiRUZXh0eyJFbmQgeWVhciJ9CgojIEFnZW50RkFRWm9vbSBNZW51LU1vZHVsZXMKJFRleHR7IlRoYW5rcyBmb3IgeW91ciB2b3RlISJ9CiRUZXh0eyJObyByYXRlIHNlbGVjdGVkISJ9CiRUZXh0eyJZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISJ9CgojIEZBUSBQcmludCBzY3JlZW5zCiRUZXh0eyJGQVEgQXJ0aWNsZSBQcmludCJ9CgojIFJTUyBGZWVkcwokVGV4dHsiRkFRIEFydGljbGVzIChUb3AgMTApIn0KJFRleHR7IkZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpIn0KJFRleHR7IkZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCkifQoKIyBBZ2VudEZBUUNhdGVnb3J5LnBtCiRUZXh0eyJGQVEgY2F0ZWdvcnkgdXBkYXRlZCEifQokVGV4dHsiRkFRIGNhdGVnb3J5IGFkZGVkISJ9CiRUZXh0eyJBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEifQokVGV4dHsiVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyJ9CgojIEFnZW50RkFRTGFuZ3VhZ2UucG0KJFRleHR7IkZBUSBsYW5ndWFnZSBhZGRlZCEifQokVGV4dHsiRkFRIGxhbmd1YWdlIHVwZGF0ZWQhIn0KJFRleHR7IlRoZSBuYW1lIGlzIHJlcXVpcmVkISJ9CiRUZXh0eyJUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISJ9CiRUZXh0eyJUaGUgbmFtZSBpcyByZXF1aXJlZCEifQo=
IyAtLQojIEFnZW50RkFRQWRkLmR0bCAtIHByb3ZpZGVzIEhUTUwgZm9ybSBmb3IgQWdlbnRGQVFBZGQKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGb3JtU2NyZWVuIE5vU2lkZWJhciI+CgogICAgPGgxPiRUZXh0eyJBZGQgRkFRIEFydGljbGUifTwvaDE+CiAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+JFRleHR7IkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIn08L3A+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+Cgo8IS0tIGR0bDpibG9jazpGQVFBZGQgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTYXZlIi8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSIkUURhdGF7IkZvcm1JRCJ9Ii8+CgogICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgoKICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IlRpdGxlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUaXRsZSIgaWQ9IlRpdGxlIiB2YWx1ZT0iJFFEYXRheyJUaXRsZSJ9IiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgJFFEYXRheyJUaXRsZVNlcnZlckVycm9yIn0iIG1heGxlbmd0aD0iMjAwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPiRUZXh0eyJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9PC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZHMiPiRUZXh0eyJLZXl3b3JkcyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZHMiIGlkPSJLZXl3b3JkcyIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZHMifSIgY2xhc3M9Ilc1MHBjIiBtYXhsZW5ndGg9IjIwMCIvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ2F0ZWdvcnlJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJDYXRlZ29yeU9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IkEgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDYXRlZ29yeUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSUQiPiRUZXh0eyJTdGF0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiU3RhdGVPcHRpb24ifQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJWYWxpZE9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRCI+JFRleHR7Ikxhbmd1YWdlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJMYW5ndWFnZU9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOk5vTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IiRRRGF0YXsiTGFuZ3VhZ2VJRCJ9Ii8+CjwhLS0gZHRsOmJsb2NrOk5vTGFuZ3VhZ2UgLS0+CgoKPCEtLSBkdGw6YmxvY2s6QXBwcm92YWwgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWQiPiRUZXh0eyJBcHByb3ZhbCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQXBwcm92YWxPcHRpb24ifQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QXBwcm92YWwgLS0+Cgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50VXBsb2FkIC0tPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiQXR0YWNobWVudCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWw+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJGaWxlbmFtZSJ9ICgkUURhdGF7IkZpbGVzaXplIn0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGlkPSJBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifSIgbmFtZT0iQXR0YWNobWVudERlbGV0ZSRRRGF0YXsiRmlsZUlEIn0iIHZhbHVlPSIkVGV4dHsiRGVsZXRlIn0iPiRUZXh0eyJEZWxldGUifTwvYnV0dG9uPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0F0dGFjaG1lbnREZWxldGUkUURhdGF7IkZpbGVJRCJ9JykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgQ29yZS5Gb3JtLlZhbGlkYXRlLkRpc2FibGVWYWxpZGF0aW9uKCQoJyNBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifScpLmNsb3Nlc3QoJ2Zvcm0nKSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iRmlsZVVwbG9hZCIgaWQ9IkZpbGVVcGxvYWQiIHR5cGU9ImZpbGUiIHNpemU9IjQwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkF0dGFjaG1lbnRVcGxvYWQiIG5hbWU9IkF0dGFjaG1lbnRVcGxvYWQiIHZhbHVlPSIwIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+Cgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0ZpbGVVcGxvYWQnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICB2YXIgJEZvcm0gPSAkKCcjRmlsZVVwbG9hZCcpLmNsb3Nlc3QoJ2Zvcm0nKTsKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuRGlzYWJsZVZhbGlkYXRpb24oJEZvcm0pOwogICAgICAgICRGb3JtLmZpbmQoJyNBdHRhY2htZW50VXBsb2FkJykudmFsKCcxJykuZW5kKCkuc3VibWl0KCk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgoKPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudFVwbG9hZCAtLT4KCjwhLS0gZHRsOmJsb2NrOlJpY2hUZXh0IC0tPgokSW5jbHVkZXsiUmljaFRleHRFZGl0b3IifQo8IS0tIGR0bDpibG9jazpSaWNoVGV4dCAtLT4KCjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iJFFEYXRheyJGaWVsZCJ9Ij4kVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9Ojxici8+PHNwYW4gY2xhc3M9IkZBUVN0YXRlTmFtZSI+KCRUZXh0eyIkRGF0YXsiU3RhdGVOYW1lIn0ifSk8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSIkUURhdGF7IkZpZWxkIn0iIGNsYXNzPSJSaWNoVGV4dCIgbmFtZT0iJFFEYXRheyJGaWVsZCJ9IiByb3dzPSIxNSIgY29scz0iNzAiPiRRRGF0YXsiQ29udGVudCJ9PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJGQVFTdWJtaXQiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IiRUZXh0eyJDcmVhdGUifSI+PHNwYW4+PGkgY2xhc3M9Imljb24tY2hlY2siPjwvaT4gJFRleHR7IkNyZWF0ZSJ9PC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsib3IifQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn0iPiRUZXh0eyJDYW5jZWwifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgPC9mb3JtPgogICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFBZGQgLS0+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiQoJyNGQVFTdWJtaXQnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgLy8gcHJldmVudCB0b28gZmFzdCBzdWJtaXRpb25zIHRoYXQgY291bGQgbGVhZCBpbnRvIG5vIGNoYW5nZXMgc2VudCB0byBzZXJ2ZXIsIGR1ZSB0byBSVEUgdG8KICAgIC8vIHRleHRhcmVhIGRhdGEgdHJhbnNmZXIKICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjRkFRU3VibWl0JykuY2xvc2VzdCgnZm9ybScpLnN1Ym1pdCgpOwogICAgfSwgMjUwKTsKfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4K
IyAtLQojIEFnZW50RGFzaGJvYXJkRkFRT3ZlcnZpZXcuZHRsIC0gcHJvdmlkZXMgSFRNTCBmb3IgZ2xvYmFsIGRhc2hib2FyZAojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4KPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IC0tPgogICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9IiBjbGFzcz0iQXNCbG9jayIgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSAoJExRRGF0YXsiQ2F0ZWdvcnlOYW1lIn0pIj4KICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIiwiNTAifQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJDYXRlZ29yeVNob3J0TmFtZSJ9IC0gJFRpbWVTaG9ydHsiJERhdGF7IkNoYW5nZWQifSJ9CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdyAtLT4KICAgIDwvdGJvZHk+CjwvdGFibGU+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4K
IyAtLQojIEFnZW50RkFRQ2F0ZWdvcnkuZHRsIC0gcHJvdmlkZXMgSFRNTCBmcm9tIGZvciBBZ2VudEZBUUxhYWd1YWdlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXcgLS0+CjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxPiRUZXh0eyJGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCJ9PC9oMT4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgo8IS0tIGR0bDpibG9jazpBY3Rpb25MaXN0IC0tPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkFjdGlvbnMifTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbk92ZXJ2aWV3IC0tPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iPjxzcGFuPiRUZXh0eyJHbyB0byBvdmVydmlldyJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBY3Rpb25PdmVydmlldyAtLT4KCjwhLS0gZHRsOmJsb2NrOkFjdGlvbkFkZCAtLT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUFkZCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUGx1cyI+PHNwYW4+JFRleHR7IkFkZCBjYXRlZ29yeSJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBY3Rpb25BZGQgLS0+CgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbkxpc3QgLS0+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+Cgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiTGlzdCJ9PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgVmFyaWFibGVXaWR0aCIgc3VtbWFyeT0iRkFRIGNhdGVnb3JpZXMiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJOYW1lIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJWYWxpZGl0eSJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiRGVsZXRlIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJObyBkYXRhIGZvdW5kLiJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249Q2hhbmdlO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4kUURhdGF7Ik5hbWUifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRUZXh0eyIkRGF0YXsiVmFsaWQifSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJEZWxldGVDYXRlZ29yeUlEJFFEYXRheyJDYXRlZ29yeUlEIn0iIGNsYXNzPSJUcmFzaENhbiIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJEZWxldGUifTogJFFEYXRheyJOYW1lIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KICAgIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuQmluZENvbmZpcm1hdGlvbkRpYWxvZyh7CiAgICAgICAgRWxlbWVudElEOiAgICAgICAgICAgICAgICAgICdEZWxldGVDYXRlZ29yeUlEJFFEYXRheyJDYXRlZ29yeUlEIn0nLAogICAgICAgIEVsZW1lbnRTZWxlY3RvcjogICAgICAgICAgICAnI0RlbGV0ZUNhdGVnb3J5SUQkUURhdGF7IkNhdGVnb3J5SUQifScsCiAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgICdBY3Rpb249QWdlbnRGQVFDYXRlZ29yeTtTdWJhY3Rpb249RGVsZXRlO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9JywKICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZzogJ0FjdGlvbj1BZ2VudEZBUUNhdGVnb3J5O1N1YmFjdGlvbj1EZWxldGVBY3Rpb247Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn0nLAogICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICAnJEpTVGV4dHsiRGVsZXRlIENhdGVnb3J5In0nLAogICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgIFllczogJyRKU1RleHR7IlllcyJ9JywKICAgICAgICAgICAgTm86ICAnJEpTVGV4dHsiTm8ifScsCiAgICAgICAgICAgIE9rOiAgJyRKU1RleHR7Ik9rIn0nCiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0Um93IC0tPgogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHQgLS0+Cgo8IS0tIGR0bDpibG9jazpPdmVydmlld1VwZGF0ZSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJBZGQgQ2F0ZWdvcnkifTwvaDI+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckFkZCAtLT4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyRWRpdCAtLT4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiRWRpdCBDYXRlZ29yeSJ9PC9oMj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyRWRpdCAtLT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iJExRRGF0YXsiQWN0aW9uIn1BY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iJFFEYXRheyJDYXRlZ29yeUlEIn0iLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiAkVGV4dHsiTmFtZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IiRRRGF0YXsiTmFtZSJ9IiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgJFFEYXRheyJOYW1lU2VydmVyRXJyb3IifSIgbWF4bGVuZ3RoPSI1MCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyIkRGF0YXsiTmFtZVNlcnZlckVycm9yTWVzc2FnZSJ9In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlBhcmVudElEIj4kVGV4dHsiU3ViY2F0ZWdvcnkgb2YifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ2F0ZWdvcnlPcHRpb24ifQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ29tbWVudCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gJFRleHR7IkNvbW1lbnQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iQ29tbWVudCIgaWQ9IkNvbW1lbnQiIHZhbHVlPSIkUURhdGF7IkNvbW1lbnQifSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkICRRRGF0YXsiQ29tbWVudFNlcnZlckVycm9yIn0iIG1heGxlbmd0aD0iODAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbW1lbnRFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDb21tZW50U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+JFRleHR7IldpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4ifTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IlZhbGlkT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlBlcm1pc3Npb25Hcm91cHMiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+ICRUZXh0eyJQZXJtaXNzaW9uIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikdyb3VwT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBlcm1pc3Npb25Hcm91cHNFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJQZXJtaXNzaW9uR3JvdXBzU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+JFRleHR7IkFnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4ifTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU3VibWl0In0iPiRUZXh0eyJTdWJtaXQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Im9yIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn0iPiRUZXh0eyJDYW5jZWwifTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3VXBkYXRlIC0tPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlldyAtLT4KCgo8IS0tIGR0bDpibG9jazpEZWxldGUgLS0+Cgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkIC0tPgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBXMzAwcHgiPgogICAgPGxhYmVsPiRUZXh0eyJDYXRlZ29yeSJ9OjwvbGFiZWw+CiAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICRRRGF0YXsiTmFtZSJ9CiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZmllbGRzZXQ+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIENlbnRlciI+CiAgICAkVGV4dHsiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5PyJ9CjwvcD4KPCEtLSBkdGw6YmxvY2s6Tm9BZmZlY3RlZCAtLT4KCjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkIC0tPgo8cD4KICAgICRUZXh0eyJZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnkifQo8L3A+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkIC0tPgoKPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRJdGVtcyAtLT4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbSI+CiAgICAkVGV4dHsiVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocykifToKPC9wPgo8dWw+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CiAgICA8bGkgY2xhc3M9IkluZGVudCBTcGFjaW5nQm90dG9tU21hbGwiPgogICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRGF0YXsiTGluayJ9O0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9Ij4KICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn06JFFEYXRheyJOdW1iZXIifTxzcGFuPiZuYnNwOyZtZGFzaDs8L3NwYW4+ICRRRGF0YXsiVGl0bGUiLCAiNjAifQogICAgICAgIDwvYT4KICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CjwvdWw+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXMgLS0+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZFN1YkNhdGVnb3JpZXMgLS0+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgJFRleHR7IlRoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyJ9Ogo8L3A+Cjx1bD4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRTdWJDYXRlZ29yaWVzUm93IC0tPgogICAgPGxpIGNsYXNzPSJJbmRlbnQgU3BhY2luZ0JvdHRvbVNtYWxsIj4KICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9JERhdGF7IkxpbmsifTtBY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifSI+CiAgICAgICAgICAgICRRRGF0YXsiTG9uZ05hbWUifQogICAgICAgIDwvYT4KICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkU3ViQ2F0ZWdvcmllc1JvdyAtLT4KPC91bD4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRTdWJDYXRlZ29yaWVzIC0tPgoKPCEtLSBkdGw6YmxvY2s6RGVsZXRlIC0tPgo=
IyAtLQojIEFnZW50RkFRRGVsZXRlLmR0bCAtIHByb3ZpZGVzIEhUTUwgZm9ybSBmb3IgQWdlbnRGQVFEZWxldGUKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBXMzAwcHgiPgogICAgPGxhYmVsPiRUZXh0eyJUaXRsZSJ9OjwvbGFiZWw+CiAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2ZpZWxkc2V0Pgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBDZW50ZXIiPgogICAgJFRleHR7IkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8ifQo8L3A+Cg==
IyAtLQojIEFnZW50RkFRRWRpdC5kdGwgLSBwcm92aWRlcyBIVE1MIGZvcm0gZm9yIEFnZW50RkFRRWRpdAojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgoKPCEtLWR0bDpibG9jazpTdGFydE5vcm1hbC0tPgogICAgPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gRm9ybVNjcmVlbiBOb1NpZGViYXIiPgogICAgICAgIDxoMT4kVGV4dHsiRWRpdCJ9OiAkVGV4dHsiRkFRIn06ICRRRGF0YXsiTnVtYmVyIn08L2gxPgogICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj4kVGV4dHsiQWxsIGZpZWxkcyBtYXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIG1hbmRhdG9yeS4ifTwvcD4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CjwhLS1kdGw6YmxvY2s6U3RhcnROb3JtYWwtLT4KCjwhLS1kdGw6YmxvY2s6U3RhcnRTbWFsbC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgxPiRUZXh0eyJFZGl0In06ICRUZXh0eyJGQVEifTogJFFEYXRheyJOdW1iZXIifTwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iPiRUZXh0eyJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiJ9PC9wPgogICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCI+JFRleHR7IkNhbmNlbCAmIGNsb3NlIHdpbmRvdyJ9PC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CjwhLS1kdGw6YmxvY2s6U3RhcnRTbWFsbC0tPgoKPCEtLSBkdGw6YmxvY2s6RkFRRWRpdCAtLT4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSIkRW52eyJBY3Rpb24ifSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSIkUURhdGF7IkZvcm1JRCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iJFFEYXRheyJJdGVtSUQifSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNjcmVlblR5cGUiIHZhbHVlPSIkUURhdGF7IlNjcmVlblR5cGUifSIvPgoKICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSAkUURhdGF7IkZpZWxkc2V0Q2xhc3MifSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IlRpdGxlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlRpdGxlIiBpZD0iVGl0bGUiIHZhbHVlPSIkUURhdGF7IlRpdGxlIn0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCAkUURhdGF7IlRpdGxlU2VydmVyRXJyb3IifSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmRzIj4kVGV4dHsiS2V5d29yZHMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZHMiIGlkPSJLZXl3b3JkcyIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZHMifSIgY2xhc3M9Ilc1MHBjIiBtYXhsZW5ndGg9IjIwMCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ2F0ZWdvcnlJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkNhdGVnb3J5T3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDYXRlZ29yeUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3RhdGVJRCI+JFRleHR7IlN0YXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IlN0YXRlT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZhbGlkSUQiPiRUZXh0eyJWYWxpZGl0eSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJWYWxpZE9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+Cgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRCI+JFRleHR7Ikxhbmd1YWdlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikxhbmd1YWdlT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+Cgo8IS0tIGR0bDpibG9jazpOb0xhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYW5ndWFnZUlEIiB2YWx1ZT0iJFFEYXRheyJMYW5ndWFnZUlEIn0iLz4KPCEtLSBkdGw6YmxvY2s6Tm9MYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOkFwcHJvdmFsIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBcHByb3ZlZCI+JFRleHR7IkFwcHJvdmFsIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkFwcHJvdmFsT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QXBwcm92YWwgLS0+Cgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50VXBsb2FkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkF0dGFjaG1lbnQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkZpbGVuYW1lIn0gKCRRRGF0YXsiRmlsZXNpemUifSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGlkPSJBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifSIgbmFtZT0iQXR0YWNobWVudERlbGV0ZSRRRGF0YXsiRmlsZUlEIn0iIHZhbHVlPSIkVGV4dHsiRGVsZXRlIn0iPiRUZXh0eyJEZWxldGUifTwvYnV0dG9uPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcjQXR0YWNobWVudERlbGV0ZSRRRGF0YXsiRmlsZUlEIn0nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKQ29yZS5Gb3JtLlZhbGlkYXRlLkRpc2FibGVWYWxpZGF0aW9uKCQoJyNBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifScpLmNsb3Nlc3QoJ2Zvcm0nKSk7Cn0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJGaWxlVXBsb2FkIiBpZD0iRmlsZVVwbG9hZCIgdHlwZT0iZmlsZSIgc2l6ZT0iNDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkF0dGFjaG1lbnRVcGxvYWQiIG5hbWU9IkF0dGFjaG1lbnRVcGxvYWQiIHZhbHVlPSIwIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKJCgnI0ZpbGVVcGxvYWQnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoRXZlbnQpIHsKdmFyICRGb3JtID0gJCgnI0ZpbGVVcGxvYWQnKS5jbG9zZXN0KCdmb3JtJyk7CkNvcmUuRm9ybS5WYWxpZGF0ZS5EaXNhYmxlVmFsaWRhdGlvbigkRm9ybSk7CiRGb3JtLmZpbmQoJyNBdHRhY2htZW50VXBsb2FkJykudmFsKCcxJykuZW5kKCkuc3VibWl0KCk7Cn0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+Cgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50VXBsb2FkIC0tPgoKPCEtLSBkdGw6YmxvY2s6UmljaFRleHQgLS0+CiRJbmNsdWRleyJSaWNoVGV4dEVkaXRvciJ9CjwhLS0gZHRsOmJsb2NrOlJpY2hUZXh0IC0tPgoKPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iJFFEYXRheyJGaWVsZCJ9Ij4kVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9Ojxici8+PHNwYW4gY2xhc3M9IkZBUVN0YXRlTmFtZSI+KCRUZXh0eyIkRGF0YXsiU3RhdGVOYW1lIn0ifSk8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IiRRRGF0YXsiRmllbGQifSIgY2xhc3M9IlJpY2hUZXh0IiBuYW1lPSIkUURhdGF7IkZpZWxkIn0iIHJvd3M9IjE1IiBjb2xzPSI3MCI+JFFEYXRheyJDb250ZW50In08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgoKPCEtLSBkdGw6YmxvY2s6RW5kTm9ybWFsIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgaWQ9IkZBUVN1Ym1pdCIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iJFRleHR7IlVwZGF0ZSJ9Ij48c3Bhbj48aSBjbGFzcz0iaWNvbi1jaGVjayI+PC9pPiAkVGV4dHsiVXBkYXRlIn08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpFbmROb3JtYWwgLS0+CgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CjwhLS0gZHRsOmJsb2NrOkZBUUVkaXQgLS0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkVuZFNtYWxsIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJGQVFTdWJtaXQiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IiRUZXh0eyJVcGRhdGUifSI+PHNwYW4+PGkgY2xhc3M9Imljb24tY2hlY2siPjwvaT4gJFRleHR7IlVwZGF0ZSJ9PC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkVuZFNtYWxsIC0tPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcjRkFRU3VibWl0JykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgIC8vIHByZXZlbnQgdG9vIGZhc3Qgc3VibWl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgaW50byBubyBjaGFuZ2VzIHNlbnQgdG8gc2VydmVyLCBkdWUgdG8gUlRFIHRvCiAgICAvLyB0ZXh0YXJlYSBkYXRhIHRyYW5zZmVyCiAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgnI0ZBUVN1Ym1pdCcpLmNsb3Nlc3QoJ2Zvcm0nKS5zdWJtaXQoKTsKICAgIH0sIDI1MCk7Cn0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+Cg==
IyAtLQojIEFnZW50RkFRRXhwbG9yZXIuZHRsIC0gcHJvdmlkZXMgSFRNTCBmb3IgQWdlbnRGQVFFeHBsb3Jlci5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIEZBUSI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGgxPiRUZXh0eyJGQVEgRXhwbG9yZXIifTwvaDE+CgogICAgPGRpdiBjbGFzcz0iRkFRUGF0aENhdGVnb3J5Ij4KICAgICAgICA8aDM+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtOYXY9JExRRGF0YXsiTmF2In0iPgogICAgICAgICAgICAgICAgJFFEYXRheyJOYW1lIn0KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8c3Bhbj4kQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifTwvc3Bhbj4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICA8L2gzPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiAkUURhdGF7IlNpZGViYXJDbGFzcyJ9Ij4KCjwhLS0gZHRsOmJsb2NrOlF1aWNrU2VhcmNoIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IlNlYXJjaCJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ubGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJFFEYXRheyJBY3Rpb24ifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IiRRRGF0YXsiTmF2In0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IlNlYXJjaCJ9IiBpZD0iU2VhcmNoIiB0aXRsZT0iJFRleHR7IlNlYXJjaCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU2VhcmNoIn0iPjxzcGFuPjxpIGNsYXNzPSJpY29uLWJvbHQiPjwvaT4gJFRleHR7IlF1aWNrIFNlYXJjaCJ9PHNwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IldpbGRjYXJkcyBhcmUgYWxsb3dlZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZBUVNlYXJjaEJ1dHRvbiBTcGFjaW5nVG9wIiBpZD0iJExRRGF0YXsiQWN0aW9uIn0iIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JExRRGF0YXsiQWN0aW9uIn07TmF2PSRMUURhdGF7Ik5hdiJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iaWNvbi1zZWFyY2giPjwvaT4gJFRleHR7IkFkdmFuY2VkIFNlYXJjaCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjQWdlbnRGQVFTZWFyY2gnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coJ0FnZW50RkFRU2VhcmNoJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KCjwhLS0gZHRsOmJsb2NrOlF1aWNrU2VhcmNoIC0tPgoKPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IiREYXRheyJIZWFkZXIifSJ9PC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiTnVtYmVyIn0uCjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifTtOYXY9JExRRGF0YXsiTmF2In0iIHRpdGxlPSIkUURhdGF7IlRpdGxlIn0gKCRRRGF0YXsiQ2F0ZWdvcnlOYW1lIn0pIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIiwiNTAifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJDYXRlZ29yeVNob3J0TmFtZSIsIjE1In0gLSAkUURhdGF7Ikxhbmd1YWdlIn0gLSAkVGV4dHsiJERhdGF7IlN0YXRlIn0ifSAtICRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IC0tPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+Cgo8IS0tIGR0bDpibG9jazpTdWJjYXRlZ29yaWVzIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiU3ViY2F0ZWdvcmllcyJ9PC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBzdW1tYXJ5PSJGQVEgY2F0ZWdvcmllcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7Ik5hbWUifTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJDb21tZW50In08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiU3ViY2F0ZWdvcmllcyJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7IkZBUSBBcnRpY2xlcyJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07TmF2PSRMUURhdGF7Ik5hdiJ9Ij4kUURhdGF7Ik5hbWUifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kUURhdGF7IkNvbW1lbnQifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRRRGF0YXsiU3ViQ2F0ZWdvcnlDb3VudCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JFFEYXRheyJBcnRpY2xlQ291bnQifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0IC0tPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpTdWJjYXRlZ29yaWVzIC0tPgoKPCEtLSBkdGw6YmxvY2s6RkFRSXRlbUxpc3QgLS0+CiREYXRheyJGQVFJdGVtTGlzdEhUTUwifQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUl0ZW1MaXN0IC0tPgoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcuTWFzdGVyQWN0aW9uJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgaWYgKEV2ZW50LnRhcmdldCAhPT0gJE1hc3RlckFjdGlvbkxpbmsuZ2V0KDApKSB7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4K
IyAtLQojIEFnZW50RkFRSGlzdG9yeS5kdGwgLSBwcm92aWRlcyBIVE1MIGZvcm0gZm9yIEFnZW50RkFRSGlzdG9yeQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgICRUZXh0eyJIaXN0b3J5IG9mIn0gJENvbmZpZ3siRkFROjpGQVFIb29rIn06ICRRRGF0YXsiTnVtYmVyIn0gLSAkUURhdGF7IlRpdGxlIiwiNjAifQogICAgICAgIDwvaDE+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIj4kVGV4dHsiQ2FuY2VsICYgY2xvc2Ugd2luZG93In08L2E+CiAgICAgICAgPC9wPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj4KICAgICAgICAgICAgICAgICAgICAkVGV4dHsiSGlzdG9yeSBDb250ZW50In0KICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBzdW1tYXJ5PSJGQVEgaGlzdG9yeSBkYXRhIHRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiQWN0aW9uIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJVc2VyIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJDcmVhdGV0aW1lIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgoKPCEtLSBkdGw6YmxvY2s6Um93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IiREYXRheyJOYW1lIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkNyZWF0ZWRCeSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lTG9uZ3siJERhdGF7IkNyZWF0ZWQifSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSb3cgLS0+CgogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwuZHRsIC0gaHRtbCBmb3IgY2hhbmdlIG92ZXJ2aWV3IHRhYmxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5VSS5BY3Rpb25Sb3cuSW5pdCgpOwovL11dPjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KCjxkaXYgaWQ9Ik92ZXJ2aWV3Qm9keSIgY2xhc3M9Ik92ZXJ2aWV3IFRpY2tldExpc3QiPgo8IS0tIGR0bDpibG9jazpOb0ZBUUZvdW5kIC0tPgogICAgPGRpdiBpZD0iRW1wdHlNZXNzYWdlU21hbGwiPgogICAgICAgICRUZXh0eyJObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLiJ9CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Tm9GQVFGb3VuZCAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkRm9ybSAtLT4KICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCBOb0NlbGxzcGFjaW5nIiBzdW1tYXJ5PSJBIGdlbmVyaWMgRkFRIHRhYmxlIj4KICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgIDx0cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVySGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgT3ZlcnZpZXdIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9PC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVySGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaXRsZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgT3ZlcnZpZXdIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPiRUZXh0eyJUaXRsZSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGVIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5SGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSBPdmVydmlld0hlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7IkNhdGVnb3J5In08L3NwYW4+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDYXRlZ29yeUhlYWRlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTmFtZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQWN0aW9uIE92ZXJ2aWV3SGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiQWN0aW9uIn08L3NwYW4+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmROYW1lSGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaW1lSGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaW1lIE92ZXJ2aWV3SGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiVGltZSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGltZUhlYWRlciAtLT4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICA8dHIgaWQ9Ikl0ZW1JRF8kUURhdGF7Ikl0ZW1JRCJ9XyRRRGF0YXsiQ291bnRlciJ9IiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyIC0tPgogICAgICAgICAgICAgICAgPHRkPgo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJMaW5rU3RhcnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9IiB0aXRsZT0iJExRRGF0YXsiTnVtYmVyIn0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyTGlua1N0YXJ0IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik51bWJlciJ9CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlckxpbmtFbmQgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJMaW5rRW5kIC0tPgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaXRsZSAtLT4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSIkUURhdGF7IlN1YmplY3QifSI+JFFEYXRheyJTdWJqZWN0IiwiNDAifTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGUgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5IC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnkifSJ9Ij4kVGV4dHsiJERhdGF7IkNhdGVnb3J5In0ifTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkQ2F0ZWdvcnkgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE5hbWUgLS0+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iJFRleHR7IiREYXRheyJBY3Rpb24ifSJ9Ij4kVGV4dHsiJERhdGF7IkFjdGlvbiJ9In08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE5hbWUgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFRpbWUgLS0+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iJFRpbWVMb25neyIkUURhdGF7IkNyZWF0ZWQifSJ9Ij4kVGltZUxvbmd7IiRRRGF0YXsiQ3JlYXRlZCJ9In08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFRpbWUgLS0+CiAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICA8L3Rib2R5PgogICAgPC90YWJsZT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkRm9ybSAtLT4KPC9kaXY+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJy5NYXN0ZXJBY3Rpb24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAvLyBvbmx5IGFjdCBpZiB0aGUgbGluayB3YXMgbm90IGNsaWNrZWQgZGlyZWN0bHkKICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo=
IyAtLQojIEFnZW50RkFRTGFuZ3VhZ2UuZHRsIC0gcHJvdmlkZXMgSFRNTCBmcm9tIGZvciBBZ2VudEZBUUxhYWd1YWdlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXcgLS0+CjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgoKICAgIDxoMT4kVGV4dHsiRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQifTwvaDE+CgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+Cgo8IS0tIGR0bDpibG9jazpEaXNhYmxlZCAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJOb3RpY2UifTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50IEFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZG1pblN5c0NvbmZpZyIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkVkaXQiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTeXNDb25maWdHcm91cCIgdmFsdWU9IkZBUSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN5c0NvbmZpZ1N1Ykdyb3VwIiB2YWx1ZT0iQ29yZSIvPgogICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiVGhpcyBmZWF0dXJlIGlzIGRpc2FibGVkISJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4ifQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IkVuYWJsZSBpdCBoZXJlISJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiRW5hYmxlIGl0IGhlcmUhIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RGlzYWJsZWQgLS0+Cgo8IS0tIGR0bDpibG9jazpBY3Rpb25MaXN0IC0tPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJBY3Rpb25zIn08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgo8IS0tIGR0bDpibG9jazpBY3Rpb25PdmVydmlldyAtLT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIj48c3Bhbj4kVGV4dHsiR28gdG8gb3ZlcnZpZXcifTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uT3ZlcnZpZXcgLS0+Cgo8IS0tIGR0bDpibG9jazpBY3Rpb25BZGQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFBsdXMiPjxzcGFuPiRUZXh0eyJBZGQgbGFuZ3VhZ2UifTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uQWRkIC0tPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbkxpc3QgLS0+CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHQgLS0+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJMaXN0In08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgVmFyaWFibGVXaWR0aCIgc3VtbWFyeT0iRkFRIGxhbmd1YWdlcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7Ik5hbWUifTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7IkRlbGV0ZSJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTm8gZGF0YSBmb3VuZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0Um93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUNoYW5nZTtMYW5ndWFnZUlEPSRMUURhdGF7Ikxhbmd1YWdlSUQifSI+JFFEYXRheyJOYW1lIn08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJEZWxldGVMYW5ndWFnZUlEJFFEYXRheyJMYW5ndWFnZUlEIn0iIGNsYXNzPSJUcmFzaENhbiIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJEZWxldGUifTogJFFEYXRheyJOYW1lIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KICAgIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuQmluZENvbmZpcm1hdGlvbkRpYWxvZyh7CiAgICAgICAgRWxlbWVudElEOiAgICAgICAgICAgICAgICAgICdEZWxldGVMYW5ndWFnZUlEJFFEYXRheyJMYW5ndWFnZUlEIn0nLAogICAgICAgIEVsZW1lbnRTZWxlY3RvcjogICAgICAgICAgICAnI0RlbGV0ZUxhbmd1YWdlSUQkUURhdGF7Ikxhbmd1YWdlSUQifScsCiAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgICdBY3Rpb249QWdlbnRGQVFMYW5ndWFnZTtTdWJhY3Rpb249RGVsZXRlO0xhbmd1YWdlSUQ9JExRRGF0YXsiTGFuZ3VhZ2VJRCJ9JywKICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZzogJ0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlO1N1YmFjdGlvbj1EZWxldGVBY3Rpb247TGFuZ3VhZ2VJRD0kTFFEYXRheyJMYW5ndWFnZUlEIn0nLAogICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICAnJEpTVGV4dHsiRGVsZXRlIExhbmd1YWdlIn0gJFFEYXRheyJOYW1lIn0nLAogICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgIFllczogJyRKU1RleHR7IlllcyJ9JywKICAgICAgICAgICAgTm86ICAnJEpTVGV4dHsiTm8ifScsCiAgICAgICAgICAgIE9rOiAgJyRKU1RleHR7Ik9rIn0nCiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KCjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3VXBkYXRlIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkFkZCBMYW5ndWFnZSJ9PC9oMj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgo8IS0tIGR0bDpibG9jazpIZWFkZXJFZGl0IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkVkaXQgTGFuZ3VhZ2UifTwvaDI+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckVkaXQgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSIkTFFEYXRheyJBY3Rpb24ifUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IiRRRGF0YXsiTGFuZ3VhZ2VJRCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gJFRleHR7Ik5hbWUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIGlkPSJOYW1lIiB2YWx1ZT0iJFFEYXRheyJOYW1lIn0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCAkUURhdGF7Ik5hbWVTZXJ2ZXJFcnJvciJ9IiBtYXhsZW5ndGg9IjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyIkRGF0YXsiTmFtZVNlcnZlckVycm9yTWVzc2FnZSJ9In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlN1Ym1pdCJ9Ij4kVGV4dHsiU3VibWl0In08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Im9yIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifSI+JFRleHR7IkNhbmNlbCJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdVcGRhdGUgLS0+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3IC0tPgoKPCEtLSBkdGw6YmxvY2s6RGVsZXRlIC0tPgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkSXRlbXMgLS0+CjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+JFRleHR7Ikxhbmd1YWdlIn06PC9sYWJlbD4KICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgJFFEYXRheyJOYW1lIn0KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgICRUZXh0eyJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/In0KPC9wPgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkSXRlbXMgLS0+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZEl0ZW1zIC0tPgo8cD4KICAgICRUZXh0eyJZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhIn0KPC9wPgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tIj4KICAgICRUZXh0eyJUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSJ9Ogo8L3A+Cgo8dWw+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CiAgICA8bGkgY2xhc3M9IkluZGVudCBTcGFjaW5nQm90dG9tU21hbGwiPgogICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRGF0YXsiTGluayJ9O0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9Ij4KICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn06JFFEYXRheyJOdW1iZXIifTxzcGFuPiZuYnNwOyZtZGFzaDs8L3NwYW4+ICRRRGF0YXsiVGl0bGUiLCAiNjAifQogICAgICAgIDwvYT4KICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CjwvdWw+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZEl0ZW1zIC0tPgo8IS0tIGR0bDpibG9jazpEZWxldGUgLS0+Cg==
IyAtLQojIEFnZW50RkFRTGFuZ3VhZ2UuZHRsIC0gcHJvdmlkZXMgSFRNTCBmcm9tIGZvciBBZ2VudEZBUUxhYWd1YWdlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXcgLS0+CjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgoKICAgIDxoMT4kVGV4dHsiRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQifTwvaDE+CgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+Cgo8IS0tIGR0bDpibG9jazpEaXNhYmxlZCAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJOb3RpY2UifTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50IEFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZG1pblN5c0NvbmZpZyIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkVkaXQiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTeXNDb25maWdHcm91cCIgdmFsdWU9IkZBUSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN5c0NvbmZpZ1N1Ykdyb3VwIiB2YWx1ZT0iQ29yZSIvPgogICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiVGhpcyBmZWF0dXJlIGlzIGRpc2FibGVkISJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4ifQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IkVuYWJsZSBpdCBoZXJlISJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiRW5hYmxlIGl0IGhlcmUhIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RGlzYWJsZWQgLS0+Cgo8IS0tIGR0bDpibG9jazpBY3Rpb25MaXN0IC0tPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJBY3Rpb25zIn08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgo8IS0tIGR0bDpibG9jazpBY3Rpb25PdmVydmlldyAtLT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIj48c3Bhbj4kVGV4dHsiR28gdG8gb3ZlcnZpZXcifTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uT3ZlcnZpZXcgLS0+Cgo8IS0tIGR0bDpibG9jazpBY3Rpb25BZGQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFBsdXMiPjxzcGFuPiRUZXh0eyJBZGQgbGFuZ3VhZ2UifTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uQWRkIC0tPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbkxpc3QgLS0+CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHQgLS0+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJMaXN0In08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgVmFyaWFibGVXaWR0aCIgc3VtbWFyeT0iRkFRIGxhbmd1YWdlcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7Ik5hbWUifTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7IkRlbGV0ZSJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTm8gZGF0YSBmb3VuZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0Um93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUNoYW5nZTtMYW5ndWFnZUlEPSRMUURhdGF7Ikxhbmd1YWdlSUQifSI+JFFEYXRheyJOYW1lIn08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJEZWxldGVMYW5ndWFnZUlEJFFEYXRheyJMYW5ndWFnZUlEIn0iIGNsYXNzPSJUcmFzaENhbiIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJEZWxldGUifTogJFFEYXRheyJOYW1lIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KICAgIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuQmluZENvbmZpcm1hdGlvbkRpYWxvZyh7CiAgICAgICAgRWxlbWVudElEOiAgICAgICAgICAgICAgICAgICdEZWxldGVMYW5ndWFnZUlEJFFEYXRheyJMYW5ndWFnZUlEIn0nLAogICAgICAgIEVsZW1lbnRTZWxlY3RvcjogICAgICAgICAgICAnI0RlbGV0ZUxhbmd1YWdlSUQkUURhdGF7Ikxhbmd1YWdlSUQifScsCiAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgICdBY3Rpb249QWdlbnRGQVFMYW5ndWFnZTtTdWJhY3Rpb249RGVsZXRlO0xhbmd1YWdlSUQ9JExRRGF0YXsiTGFuZ3VhZ2VJRCJ9JywKICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZzogJ0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlO1N1YmFjdGlvbj1EZWxldGVBY3Rpb247TGFuZ3VhZ2VJRD0kTFFEYXRheyJMYW5ndWFnZUlEIn0nLAogICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICAnJEpTVGV4dHsiRGVsZXRlIExhbmd1YWdlIn0gJFFEYXRheyJOYW1lIn0nLAogICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgIFllczogJyRKU1RleHR7IlllcyJ9JywKICAgICAgICAgICAgTm86ICAnJEpTVGV4dHsiTm8ifScsCiAgICAgICAgICAgIE9rOiAgJyRKU1RleHR7Ik9rIn0nCiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KCjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3VXBkYXRlIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkFkZCBMYW5ndWFnZSJ9PC9oMj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgo8IS0tIGR0bDpibG9jazpIZWFkZXJFZGl0IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkVkaXQgTGFuZ3VhZ2UifTwvaDI+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckVkaXQgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSIkTFFEYXRheyJBY3Rpb24ifUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IiRRRGF0YXsiTGFuZ3VhZ2VJRCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gJFRleHR7Ik5hbWUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIGlkPSJOYW1lIiB2YWx1ZT0iJFFEYXRheyJOYW1lIn0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCAkUURhdGF7Ik5hbWVTZXJ2ZXJFcnJvciJ9IiBtYXhsZW5ndGg9IjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyIkRGF0YXsiTmFtZVNlcnZlckVycm9yTWVzc2FnZSJ9In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlN1Ym1pdCJ9Ij4kVGV4dHsiU3VibWl0In08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Im9yIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifSI+JFRleHR7IkNhbmNlbCJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdVcGRhdGUgLS0+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3IC0tPgoKPCEtLSBkdGw6YmxvY2s6RGVsZXRlIC0tPgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkSXRlbXMgLS0+CjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+JFRleHR7Ikxhbmd1YWdlIn06PC9sYWJlbD4KICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgJFFEYXRheyJOYW1lIn0KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgICRUZXh0eyJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/In0KPC9wPgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkSXRlbXMgLS0+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZEl0ZW1zIC0tPgo8cD4KICAgICRUZXh0eyJZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhIn0KPC9wPgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tIj4KICAgICRUZXh0eyJUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSJ9Ogo8L3A+Cgo8dWw+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CiAgICA8bGkgY2xhc3M9IkluZGVudCBTcGFjaW5nQm90dG9tU21hbGwiPgogICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRGF0YXsiTGluayJ9O0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9Ij4KICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn06JFFEYXRheyJOdW1iZXIifTxzcGFuPiZuYnNwOyZtZGFzaDs8L3NwYW4+ICRRRGF0YXsiVGl0bGUiLCAiNjAifQogICAgICAgIDwvYT4KICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXNSb3cgLS0+CjwvdWw+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZEl0ZW1zIC0tPgo8IS0tIGR0bDpibG9jazpEZWxldGUgLS0+Cg==
IyAtLQojIEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIuZHRsIC0gaHRtbCBmb3IgY2hhbmdlIG92ZXJ2aWV3IHRhYmxlCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXIgLS0+CjxkaXYgY2xhc3M9Ik92ZXJ2aWV3Qm94IEFSSUFSb2xlTWFpbiAkUURhdGF7IlZpZXcifSI+CiAgICA8aDE+JFRleHR7IiREYXRheyJUaXRsZU5hbWUifSJ9OiAkVGV4dHsiJERhdGF7IlRpdGxlVmFsdWUifSJ9PC9oMT4KCiREYXRheyJEYXRhSW5UaGVNaWRkbGUifQoKICAgIDxkaXYgY2xhc3M9Ik92ZXJ2aWV3Q29udHJvbCIgaWQ9Ik92ZXJ2aWV3Q29udHJvbCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyRmlsdGVyIC0tPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtIC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCAtLT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSAkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiRmlsdGVyTGluayJ9RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9Ij4kVGV4dHsiJERhdGF7Ik5hbWUifSJ9PHNwYW4+JFFEYXRheyJDb3VudCJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSIkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiRmlsdGVyTGluayJ9RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9Ij4kVGV4dHsiJERhdGF7Ik5hbWUifSJ9PHNwYW4+JFFEYXRheyJDb3VudCJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU3BsaXQgLS0+CiAgICAgICAgICAgICAgICAgICAgLQo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtIC0tPgogICAgICAgICAgICAgICAgPC91bD4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXIgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyUGFnZUJhY2sgLS0+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IiRMUURhdGF7IkxpbmtCYWNrSUQifSIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskUURhdGF7IkxpbmtCYWNrIn0iPiRUZXh0eyJDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJyNGQVFTZWFyY2gnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coICdBZ2VudEZBUVNlYXJjaCcsICIkUURhdGF7IlByb2ZpbGUifSIgKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclBhZ2VCYWNrIC0tPgoKPCEtLSBkdGw6YmxvY2s6Q29udGV4dFNldHRpbmdzIC0tPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJDb250ZXh0RnVuY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkNvbnRleHRTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nIiB0aXRsZT0iJFRleHR7IkNvbnRleHQgU2V0dGluZ3MifSI+PHNwYW4+JFRleHR7IkNvbnRleHQgU2V0dGluZ3MifTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyIiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZ2VudFByZWZlcmVuY2VzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlVwZGF0ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHcm91cCIgdmFsdWU9IiRRRGF0YXsiR3JvdXAifSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSZWRpcmVjdFVSTCIgdmFsdWU9IiRRRGF0YXsiUmVxdWVzdGVkVVJMIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iJFFEYXRheyJQcmVmZXJlbmNlc0tleSJ9Ij4kVGV4dHsiRkFRIGFydGljbGVzIHBlciBwYWdlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUGFnZVNob3duU3RyaW5nIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgoKPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgLy8gYmluZCB0aGUgQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyCiAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coJCgnI0NvbnRleHRTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lcicpLCAnJEpTVGV4dHsiU2V0dGluZ3MifScsICcyMCUnLCAnQ2VudGVyJywgdHJ1ZSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExhYmVsOiAnJEpTVGV4dHsiU3VibWl0In0nLAogICAgICAgICAgICAgICAgICAgIFR5cGU6ICdTdWJtaXQnLAogICAgICAgICAgICAgICAgICAgIENsYXNzOiAnUHJpbWFyeScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgICk7CiAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjwhLS0gZHRsOmJsb2NrOkNvbnRleHRTZXR0aW5ncyAtLT4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdBY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQWN0aW9uUm93In0KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Ik92ZXJ2aWV3Wm9vbSI+Cgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclZpZXdNb2RlIC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSIkUURhdGF7Ik5hbWUifSIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07Vmlldz0kTFFEYXRheyJWaWV3In07JFFEYXRheyJMaW5rRmlsdGVyIn0iIHRpdGxlPSIkVGV4dHsiJERhdGF7Ik5hbWUifSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW1hZ2VNb2RlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ik5hbWVTaG9ydCI+JFRleHR7IiREYXRheyJOYW1lU2hvcnQifSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTmFtZUxvbmciPiRUZXh0eyIkRGF0YXsiTmFtZSJ9In08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IiRRRGF0YXsiTmFtZSJ9IiBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O1ZpZXc9JExRRGF0YXsiVmlldyJ9OyREYXRheyJMaW5rRmlsdGVyIn0iIHRpdGxlPSIkVGV4dHsiJERhdGF7Ik5hbWUifSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW1hZ2VNb2RlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ik5hbWVTaG9ydCI+JFRleHR7IiREYXRheyJOYW1lU2hvcnQifSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTmFtZUxvbmciPiRUZXh0eyIkRGF0YXsiTmFtZSJ9In08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyVmlld01vZGUgLS0+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUGFnaW5hdGlvbiI+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IlJlc3VsdExvbmcifQogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiU2l0ZU5hdkJhckxvbmcifQo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhclBhZ2VOYXZCYXIgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KIyBzb3J0IG9yZGVyIGJhciBpZiBuZWVkZWQKICAgICAgICAgICAgICAgICREYXRheyJTb3J0T3JkZXJCYXIifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXIgLS0+Cg==
IyAtLQojIEFnZW50RkFRT3ZlcnZpZXdTbWFsbC5kdGwgLSBodG1sIGZvciBjaGFuZ2Ugb3ZlcnZpZXcgdGFibGUKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLlVJLkFjdGlvblJvdy5Jbml0KCk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgoKPGRpdiBpZD0iT3ZlcnZpZXdCb2R5IiBjbGFzcz0iT3ZlcnZpZXcgVGlja2V0TGlzdCI+CjwhLS0gZHRsOmJsb2NrOk5vRkFRRm91bmQgLS0+CiAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgJFRleHR7Ik5vIEZBUSBkYXRhIGZvdW5kLiJ9CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Tm9GQVFGb3VuZCAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkRm9ybSAtLT4KICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCBOb0NlbGxzcGFjaW5nIiBzdW1tYXJ5PSIkVGV4dHsiQSBnZW5lcmljIEZBUSB0YWJsZSJ9Ij4KICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgIDx0cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVySGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgJFFEYXRheyJDU1MifSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiTGlua1NvcnQifTtTb3J0Qnk9RkFRSUQ7T3JkZXJCeT0kTFFEYXRheyJPcmRlckJ5In0iPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVySGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaXRsZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgJFFEYXRheyJDU1MifSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiTGlua1NvcnQifTtTb3J0Qnk9VGl0bGU7T3JkZXJCeT0kTFFEYXRheyJPcmRlckJ5In0iPiRUZXh0eyJUaXRsZSJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGVIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5SGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSAkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9OyREYXRheyJMaW5rU29ydCJ9O1NvcnRCeT1DYXRlZ29yeTtPcmRlckJ5PSRMUURhdGF7Ik9yZGVyQnkifSI+JFRleHR7IkNhdGVnb3J5In08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDYXRlZ29yeUhlYWRlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2VIZWFkZXIgLS0+CiAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlICRRRGF0YXsiQ1NTIn0iPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07JERhdGF7IkxpbmtTb3J0In07U29ydEJ5PUxhbmd1YWdlO09yZGVyQnk9JExRRGF0YXsiT3JkZXJCeSJ9Ij4kVGV4dHsiTGFuZ3VhZ2UifTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlSGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRTdGF0ZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iU3RhdGUgJFFEYXRheyJDU1MifSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiTGlua1NvcnQifTtTb3J0Qnk9U3RhdGU7T3JkZXJCeT0kTFFEYXRheyJPcmRlckJ5In0iPiRUZXh0eyJTdGF0ZSJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkU3RhdGVIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFZhbGlkSGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJTdGF0ZSAkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9OyREYXRheyJMaW5rU29ydCJ9O1NvcnRCeT1WYWxpZDtPcmRlckJ5PSRMUURhdGF7Ik9yZGVyQnkifSI+JFRleHR7IlZhbGlkaXR5In08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmRWYWxpZEhlYWRlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkQ2hhbmdlZEhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCAkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9OyREYXRheyJMaW5rU29ydCJ9O1NvcnRCeT1DaGFuZ2VkO09yZGVyQnk9JExRRGF0YXsiT3JkZXJCeSJ9Ij4kVGV4dHsiQ2hhbmdlZCJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkQ2hhbmdlZEhlYWRlciAtLT4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICA8dHIgaWQ9Ikl0ZW1JRF8kUURhdGF7Ikl0ZW1JRCJ9XyRRRGF0YXsiQ291bnRlciJ9IiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyIC0tPgogICAgICAgICAgICAgICAgPHRkPgo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJMaW5rU3RhcnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9O05hdj0kTFFEYXRheyJOYXYifSIgdGl0bGU9IiRMUURhdGF7Ik51bWJlciJ9IiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlckxpbmtTdGFydCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJOdW1iZXIifQo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJMaW5rRW5kIC0tPgogICAgICAgICAgICAgICAgICAgIDwvYT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyTGlua0VuZCAtLT4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGUgLS0+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4kUURhdGF7IlRpdGxlIiwiNDAifTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGUgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5IC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnlOYW1lIn0ifSI+JFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSIsIjUwIn08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5IC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2PiRUZXh0eyIkRGF0YXsiTGFuZ3VhZ2UifSJ9PC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkU3RhdGUgLS0+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4kVGV4dHsiJERhdGF7IlN0YXRlIn0ifTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkU3RhdGUgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFZhbGlkIC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXY+JFRleHR7IiREYXRheyJWYWxpZCJ9In08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFZhbGlkIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDaGFuZ2VkIC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXY+JFRpbWVTaG9ydHsiJERhdGF7IkNoYW5nZWQifSJ9PC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDaGFuZ2VkIC0tPgogICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+CjwhLS0gZHRsOmJsb2NrOlJlY29yZEZvcm0gLS0+CjwvZGl2Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcuTWFzdGVyQWN0aW9uJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgdmFyICRNYXN0ZXJBY3Rpb25MaW5rID0gJCh0aGlzKS5maW5kKCcuTWFzdGVyQWN0aW9uTGluaycpOwogICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAkTWFzdGVyQWN0aW9uTGluay5hdHRyKCdocmVmJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIEFnZW50RkFRUHJpbnQuZHRsIC0gcHJvdmlkZXMgSFRNTCBwcmludCB2aWV3CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJtYWluaGVhZCI+JENvbmZpZ3siRkFROjpGQVFIb29rIn06ICRRRGF0YXsiTnVtYmVyIn0gLyAkUURhdGF7IlRpdGxlIn08L3RkPgogICAgPC90cj4KPC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIxMCIgd2lkdGg9IjEwMCUiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+CiAgICAgICAgICAgICRUZXh0eyJGQVEtSW5mbyJ9OgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUwJSIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJDYXRlZ29yeSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiQ2F0ZWdvcnlOYW1lIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJTdGF0ZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGV4dHsiJERhdGF7IlN0YXRlIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYW5ndWFnZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiTGFuZ3VhZ2UifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOlByaW50QXBwcm92YWwgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiQXBwcm92YWwifTo8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4gPGRpdiB0aXRsZT0iJFRleHR7IiREYXRheyJBcHByb3ZhbCJ9In0iPiRUZXh0eyIkRGF0YXsiQXBwcm92YWwifSJ9PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlByaW50QXBwcm92YWwgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI1MCUiIHZhbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+Cgo8IS0tIGR0bDpibG9jazpSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiVm90ZXMifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+ICRRRGF0YXsiVm90ZXMifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlJlc3VsdCJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4gJFFEYXRheyJWb3RlUmVzdWx0In0gJiMzNzs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmF0aW5nIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYXN0IHVwZGF0ZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8YnIvPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJLZXl3b3JkcyJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOTAlIiBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IktleXdvcmRzIn08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDxocj4KICAgICAgICA8L3RkPgogICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPgogICAgICAgICAgICAkVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9OiAgPHNwYW4gY2xhc3M9InNtYWxsIj4oJFRleHR7IiREYXRheyJTdGF0ZU5hbWUifSJ9KSA8L3NwYW4+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxMCIgY2VsbFBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JERhdGF7IkNvbnRlbnQifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGhyPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgoKPCEtLSBkdGw6YmxvY2s6TGluayAtLT4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPgogICAgICAgICAgICAkVGV4dHsiTGlua2VkLU9iamVjdCJ9OgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUwJSIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KPCEtLSBkdGw6YmxvY2s6TGlua1R5cGUgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSIgd2lkdGg9IjIwJSI+JFRleHR7IiREYXRheyJMaW5rVHlwZU5hbWUifSJ9OjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPgo8IS0tIGR0bDpibG9jazpMaW5rVHlwZVJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkxpbmtTdHJnIn08YnIvPgo8IS0tIGR0bDpibG9jazpMaW5rVHlwZVJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6TGlua1R5cGUgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkxpbmsgLS0+Cgo8L3RhYmxlPgo=
IyAtLQojIEFnZW50RkFRU2VhcmNoLmR0bCAtIHByb3ZpZGVzIEhUTUwgZm9ybSBmb3IgQWdlbnRGQVFTZWFyY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpTZWFyY2hBSkFYIC0tPgo8ZGl2IGNsYXNzPSJJbm5lckNvbnRlbnQiPgogICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBpZD0iU2VhcmNoRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJEVudnsiQWN0aW9uIn0iIGlkPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IiRRRGF0YXsiRW1wdHlTZWFyY2gifSIgaWQ9IkVtcHR5U2VhcmNoIi8+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTmF2IiB2YWx1ZT0iJFFEYXRheyJOYXYifSIvPgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+JFRleHR7IlNlYXJjaCB0ZW1wbGF0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICREYXRheyJQcm9maWxlc1N0cmcifQoKICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVOZXciIHZhbHVlPSIkVGV4dHsiQ3JlYXRlIE5ldyJ9Ij4kVGV4dHsiQ3JlYXRlIE5ldyJ9PC9idXR0b24+CgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZURlbGV0ZSIgY2xhc3M9IkhpZGRlbiIgdmFsdWU9IiRUZXh0eyJEZWxldGUifSI+JFRleHR7IkRlbGV0ZSJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iU2VhcmNoUHJvZmlsZUFkZE5hbWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgdGl0bGU9IiRUZXh0eyJDcmVhdGUgVGVtcGxhdGUifSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPiRUZXh0eyJBZGQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiU2F2ZSBjaGFuZ2VzIGluIHRlbXBsYXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJTYXZlUHJvZmlsZSIgaWQ9IlNhdmVQcm9maWxlIiB2YWx1ZT0iMSIvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIiBpZD0iU2VhcmNoSW5zZXJ0Ij48L2ZpZWxkc2V0PgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+JFRleHR7IkFkZCBhbm90aGVyIGF0dHJpYnV0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICREYXRheyJBdHRyaWJ1dGVzU3RyZyJ9CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IkFkZCIgdmFsdWU9IkFkZCIgdGl0bGU9IkFkZCBlbnRyeSI+JFRleHR7IkFkZCJ9PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiT3V0cHV0In06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgJERhdGF7IlJlc3VsdEZvcm1TdHJnIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KICAgIDwvZm9ybT4KCiAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSJTZWFyY2hBdHRyaWJ1dGVzSGlkZGVuIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IkZ1bGx0ZXh0ImlkPSJMYWJlbEZ1bGx0ZXh0Ij4kVGV4dHsiRnVsbHRleHQifTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkZ1bGx0ZXh0IiB2YWx1ZT0iJFFEYXRheyJGdWxsdGV4dCJ9IiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIiBpZD0iTGFiZWxOdW1iZXIiPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9ICRUZXh0eyIoZS4gZy4gMTAqNTE1NSBvciAxMDU2NTgqKSJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTnVtYmVyIiB2YWx1ZT0iJFFEYXRheyJOdW1iZXIifSIgY2xhc3M9Ilc1MHBjIi8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iVGl0bGUiIGlkPSJMYWJlbFRpdGxlIj4kVGV4dHsiVGl0bGUifTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iJFFEYXRheyJUaXRsZSJ9IiBjbGFzcz0iVzUwcGMiLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkIiBpZD0iTGFiZWxLZXl3b3JkIj4kVGV4dHsiS2V5d29yZCJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZCIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZCJ9IiBjbGFzcz0iVzUwcGMiLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEcyIgaWQ9IkxhYmVsVmFsaWRJRHMiPiRUZXh0eyJWYWxpZGl0eSJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiVmFsaWRTZWxlY3Rpb25TdHJnIn0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJMYW5ndWFnZUlEcyIgaWQ9IkxhYmVsTGFuZ3VhZ2VJRHMiPiRUZXh0eyJMYW5ndWFnZSJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiTGFuZ3VhZ2VzU2VsZWN0aW9uU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQ2F0ZWdvcnlJRHMiIGlkPSJMYWJlbENhdGVnb3J5SURzIj4kVGV4dHsiQ2F0ZWdvcnkifTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgJERhdGF7IkNhdGVnb3JpZXNTZWxlY3Rpb25TdHJnIn0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZUlEcyIgaWQ9IkxhYmVsU3RhdGVJRHMiPiRUZXh0eyJTdGF0ZSJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiU3RhdGVTZWxlY3Rpb25TdHJnIn0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJWb3RlU2VhcmNoVHlwZSIgaWQ9IkxhYmVsVm90ZVNlYXJjaFR5cGUiPiRUZXh0eyJWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICREYXRheyJWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmcifQogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVm90ZVNlYXJjaCIgdmFsdWU9IiRRRGF0YXsiVm90ZVNlYXJjaCJ9IiBjbGFzcz0iVzI1cGMiLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJSYXRlU2VhcmNoVHlwZSIgaWQ9IkxhYmVsUmF0ZVNlYXJjaFR5cGUiPiRUZXh0eyJSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSkifTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgJERhdGF7IlJhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZyJ9CiAgICAgICAgICAgICREYXRheyJSYXRlU2VhcmNoU2VsZWN0aW9uU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWRTZWFyY2giIGlkPSJMYWJlbEFwcHJvdmVkU2VhcmNoIj4kVGV4dHsiQXBwcm92ZWQifTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgJERhdGF7IkFwcHJvdmVkU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQ3JlYXRlZFVzZXJJRHMiIGlkPSJMYWJlbENyZWF0ZWRVc2VySURzIj4kVGV4dHsiQ3JlYXRlZCBieSJ9ICRUZXh0eyJBZ2VudCJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiQ3JlYXRlZFVzZXJTdHJnIn0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJMYXN0Q2hhbmdlZFVzZXJJRHMiIGlkPSJMYWJlbExhc3RDaGFuZ2VkVXNlcklEcyI+JFRleHR7Ikxhc3QgY2hhbmdlZCBieSJ9ICRUZXh0eyJBZ2VudCJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiTGFzdENoYW5nZWRVc2VyU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iSXRlbUNyZWF0ZVRpbWVQb2ludCIgaWQ9IkxhYmVsSXRlbUNyZWF0ZVRpbWVQb2ludCI+JFRleHR7IkZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiAkRGF0YXsiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCJ9Lz4KICAgICAgICAgICAgJERhdGF7Ikl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydFN0cmcifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludFN0cmcifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdFN0cmcifQogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IlJlbW92ZSIgdmFsdWU9IlJlbW92ZSIgdGl0bGU9IiRUZXh0eyJSZW1vdmUgdGhpcyBlbnRyeSJ9Ij4kVGV4dHsiUmVtb3ZlIn08L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9Ikl0ZW1DcmVhdGVUaW1lU2xvdCIgaWQ9IkxhYmVsSXRlbUNyZWF0ZVRpbWVTbG90Ij4kVGV4dHsiRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiICREYXRheyJUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QifS8+CiAgICAgICAgICAgICREYXRheyJJdGVtQ3JlYXRlVGltZVN0YXJ0U3RyZyJ9ICRUZXh0eyJhbmQifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVTdG9wU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iSXRlbUNoYW5nZVRpbWVQb2ludCIgaWQ9IkxhYmVsSXRlbUNoYW5nZVRpbWVQb2ludCI+JFRleHR7IkZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiAkRGF0YXsiQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCJ9Lz4KICAgICAgICAgICAgJERhdGF7Ikl0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydFN0cmcifSAkRGF0YXsiSXRlbUNoYW5nZVRpbWVQb2ludFN0cmcifSAkRGF0YXsiSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdFN0cmcifQogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IlJlbW92ZSIgdmFsdWU9IlJlbW92ZSIgdGl0bGU9IiRUZXh0eyJSZW1vdmUgdGhpcyBlbnRyeSJ9Ij4kVGV4dHsiUmVtb3ZlIn08L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9Ikl0ZW1DaGFuZ2VUaW1lU2xvdCIgaWQ9IkxhYmVsSXRlbUNoYW5nZVRpbWVTbG90Ij4kVGV4dHsiRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiICREYXRheyJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QifS8+CiAgICAgICAgICAgICREYXRheyJJdGVtQ2hhbmdlVGltZVN0YXJ0U3RyZyJ9ICRUZXh0eyJhbmQifSAkRGF0YXsiSXRlbUNoYW5nZVRpbWVTdG9wU3RyZyJ9CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgJERhdGF7IkF0dHJpYnV0ZXNPcmlnU3RyZyJ9CgogICAgPC9maWVsZHNldD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJDb250ZW50Rm9vdGVyIENlbnRlciI+CiAgICA8YnV0dG9uIGlkPSJTZWFyY2hGb3JtU3VibWl0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iUnVuIFNlYXJjaCI+PHNwYW4+PGkgY2xhc3M9Imljb24tc2VhcmNoIj48L2k+ICRUZXh0eyJSdW4gU2VhcmNoIn08L3NwYW4+PC9idXR0b24+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKXsKPCEtLSBkdGw6YmxvY2s6U2VhcmNoQUpBWFNob3cgLS0+CiAgICAgICAgQ29yZS5BZ2VudC5TZWFyY2guU2VhcmNoQXR0cmlidXRlQWRkKCIkUURhdGF7IkF0dHJpYnV0ZSJ9Iik7CjwhLS0gZHRsOmJsb2NrOlNlYXJjaEFKQVhTaG93IC0tPgogICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkKCk7CiAgICB9LCAwKTsKLy9dXT48L3NjcmlwdD4KCjwhLS0gZHRsOmJsb2NrOlNlYXJjaEFKQVggLS0+Cgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+Cgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5BZ2VudC5TZWFyY2guT3BlblNlYXJjaERpYWxvZyggJyRFbnZ7IkFjdGlvbiJ9JyApOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+Cgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+Cg==
IyAtLQojIEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyLmR0bCAtIHByb3ZpZGVzIG9wZW5zZWFyY2ggZm9ybSBmb3IgQWdlbnRGQVFTZWFyY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gKCRRdW90ZXsiJENvbmZpZ3siRkFROjpGQVFIb29rIn0ifSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPiRRdW90ZXsiJENvbmZpZ3siUHJvZHVjdE5hbWUifSJ9ICgkUXVvdGV7IiRDb25maWd7IkZBUTo6RkFRSG9vayJ9In0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+JEVudnsiVXNlckNoYXJzZXQifTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSIkQ29uZmlneyJIdHRwVHlwZSJ9Oi8vJEVudnsiSFRUUF9IT1NUIn0kRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7TnVtYmVyPXtzZWFyY2hUZXJtc30iIC8+CjxJbWFnZSBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIHR5cGU9ImltYWdlL3gtaWNvbiI+JENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JENvbmZpZ3siRnJvbnRlbmQ6OkltYWdlUGF0aCJ9aWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQuZHRsIC0gcHJvdmlkZXMgb3BlbnNlYXJjaCBmb3JtIGZvciBBZ2VudEZBUVNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxPcGVuU2VhcmNoRGVzY3JpcHRpb24geG1sbnM9Imh0dHA6Ly9hOS5jb20vLS9zcGVjL29wZW5zZWFyY2gvMS4xLyIgeG1sbnM6aWU9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vU2VhcmNoLzIwMDgvIj4KPFNob3J0TmFtZT4kUXVvdGV7IiRDb25maWd7IlByb2R1Y3ROYW1lIn0ifSAoJFRleHR7IkZBUUZ1bGx0ZXh0In0pPC9TaG9ydE5hbWU+CjxEZXNjcmlwdGlvbj4kUXVvdGV7IiRDb25maWd7IlByb2R1Y3ROYW1lIn0ifSAoJFRleHR7IkZBUUZ1bGx0ZXh0In0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+JEVudnsiVXNlckNoYXJzZXQifTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSIkQ29uZmlneyJIdHRwVHlwZSJ9Oi8vJEVudnsiSFRUUF9IT1NUIn0kRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7RnVsbHRleHQ9e3NlYXJjaFRlcm1zfSIgLz4KPEltYWdlIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdHlwZT0iaW1hZ2UveC1pY29uIj4kQ29uZmlneyJIdHRwVHlwZSJ9Oi8vJEVudnsiSFRUUF9IT1NUIn0kQ29uZmlneyJGcm9udGVuZDo6SW1hZ2VQYXRoIn1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQuZHRsIC0gaHRtbCBmb3IgcHJpbnRpbmcgRkFRIHNlYXJjaCByZXN1bHRzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBzdGFydCBmb3JtIC0tPgo8aT4kRGF0YXsiV2FybmluZyJ9PC9pPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9Im1haW5oZWFkIj4kVGV4dHsiU2VhcmNoIn08L3RkPgogICAgPC90cj4KPC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iNCI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50Ym9keSI+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjMiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzUlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlRpdGxlIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IkNhdGVnb3J5In08L3RkPgoKPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiTGFuZ3VhZ2UifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgoKICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1JSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJTdGF0ZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJDaGFuZ2VkIn08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7Ik51bWJlciJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJUaXRsZSIsIjQwIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IkNhdGVnb3J5TmFtZSIsIjMwIn08L3RkPgoKPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiTGFuZ3VhZ2UifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgoKICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFRleHR7IiREYXRheyJTdGF0ZSJ9In08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CjwvdGFibGU+CjwhLS0gZW5kIGZvcm0gLS0+Cg==
IyAtLQojIEFnZW50RkFRU2VhcmNoU21hbGwuZHRsIC0gcHJvdmlkZXMgSFRNTCBmb3JtIGZvciBDdXN0b21lckZBUVNlYXJjaC5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjwhLS0gZHRsOmJsb2NrOlNlYXJjaCAtLT4KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4iPgogICAgPGgxPiRUZXh0eyJGQVEgU2VhcmNoIn08L2gxPgogICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIENvbGxhcHNlZCI+CiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iJFRleHR7IlNob3cgb3IgaGlkZSB0aGUgY29udGVudCJ9Ij48aSBjbGFzcz0iaWNvbi1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJpY29uLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8aDI+JFRleHR7IlByb2ZpbGUgU2VsZWN0aW9uIn08L2gyPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkxvYWRQcm9maWxlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IiRRRGF0YXsiTmF2In0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUHJvZmlsZSI+JFRleHR7IlNlYXJjaCB0ZW1wbGF0ZSJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IlByb2ZpbGVzU3RyZyJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gU3BhY2luZ1RvcCIgbmFtZT0iU2VsZWN0VGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTZWxlY3QifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iaWNvbi1jaGVjayI+PC9pPiAkVGV4dHsiU2VsZWN0In08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFNwYWNpbmdUb3AiIG5hbWU9IkVyYXNlVGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJEZWxldGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iaWNvbi10cmFzaCI+PC9pPiAkVGV4dHsiRGVsZXRlIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFNwYWNpbmdUb3AiIG5hbWU9IlNlYXJjaFRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU2VhcmNoIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9Imljb24tc2VhcmNoIj48L2k+ICRUZXh0eyJTZWFyY2gifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSIkRW52eyJBY3Rpb24ifSIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTmF2IiB2YWx1ZT0iJFFEYXRheyJOYXYifSIvPgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBUYWJsZVNtYWxsIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkZ1bGx0ZXh0IiBpZD0iTGFiZWxGdWxsdGV4dCI+JFRleHR7IkZ1bGx0ZXh0In06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IkZ1bGx0ZXh0In0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJENvbmZpZ3siRkFROjpGQVFIb29rIn0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iJFFEYXRheyJOdW1iZXIifSIvPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4kVGV4dHsiZS4gZy4gMTAqNTE1NSBvciAxMDU2NTgqIn08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaXRsZSI+JFRleHR7IlRpdGxlIn08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7IlRpdGxlIn0iIHR5cGU9InRleHQiIGlkPSJUaXRsZSIgbmFtZT0iVGl0bGUiIHZhbHVlPSIkUURhdGF7IlRpdGxlIn0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmQiPiRUZXh0eyJLZXl3b3JkIn08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7IktleXdvcmQifSIgdHlwZT0idGV4dCIgaWQ9IktleXdvcmQiIG5hbWU9IktleXdvcmQiIHZhbHVlPSIkUURhdGF7IktleXdvcmQifSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+Cgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhbmd1YWdlSURzIj4kVGV4dHsiTGFuZ3VhZ2UifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikxhbmd1YWdlc1NlbGVjdGlvblN0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNhdGVnb3J5SURzIj4kVGV4dHsiQ2F0ZWdvcnkifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJDYXRlZ29yaWVzU2VsZWN0aW9uU3RyZyJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEcyI+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiVmFsaWRTZWxlY3Rpb25TdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSURzIj4kVGV4dHsiU3RhdGUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJTdGF0ZVNlbGVjdGlvblN0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWRTZWFyY2giID4kVGV4dHsiQXBwcm92ZWQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJBcHByb3ZlZFN0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9Wb3RlU2V0Ij4kVGV4dHsiVm90ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiTm8gdm90ZSBzZXR0aW5ncyJ9IiB0eXBlPSJyYWRpbyIgIGlkPSJOb1ZvdGVTZXQiIG5hbWU9IlZvdGVTZWFyY2hPcHRpb24iIHZhbHVlPSIiICREYXRheyJWb3RlU2VhcmNoT3B0aW9uOjpOb25lIn0gLz4KICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQWxsIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0kVGV4dHsiU3BlY2lmaWMgdm90ZXMifSB0eXBlPSJyYWRpbyIgaWQ9IlZvdGVQb2ludCIgbmFtZT0iVm90ZVNlYXJjaE9wdGlvbiIgIHZhbHVlPSJWb3RlUG9pbnQiICREYXRheyJWb3RlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQifSAvPgogICAgICAgICAgICAgICAgICAgICREYXRheyJWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmcifQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWb3RlU2VhcmNoIiB2YWx1ZT0iJFFEYXRheyJWb3RlU2VhcmNoIn0iIGNsYXNzPSJXMjVwYyIvPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4kVGV4dHsiZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwIn08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1JhdGVTZXQiPiRUZXh0eyJSYXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJObyByYXRlIHNldHRpbmdzIn0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vUmF0ZVNldCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgJERhdGF7IlJhdGVTZWFyY2hPcHRpb246Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgICRUZXh0eyJBbGwifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSRUZXh0eyJTcGVjaWZpYyByYXRlIn0gdHlwZT0icmFkaW8iIGlkPSJSYXRlUG9pbnQiIG5hbWU9IlJhdGVTZWFyY2hPcHRpb24iICB2YWx1ZT0iUmF0ZVBvaW50IiAkRGF0YXsiUmF0ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50In0gLz4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnIn0KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUmF0ZVNlYXJjaFNlbGVjdGlvblN0cmcifQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4kVGV4dHsiZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUifTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNyZWF0ZWRVc2VySURzIj4kVGV4dHsiQ3JlYXRlZCBieSJ9ICRUZXh0eyJBZ2VudCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7IkNyZWF0ZWRVc2VyU3RyZyJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMYXN0Q2hhbmdlZFVzZXJJRHMiPiRUZXh0eyJMYXN0IGNoYW5nZWQgYnkifSAkVGV4dHsiQWdlbnQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJMYXN0Q2hhbmdlZFVzZXJTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpbWVTZWFyY2hUeXBlIj4kVGV4dHsiRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7Ik5vIHRpbWUgc2V0dGluZ3MifSIgdHlwZT0icmFkaW8iIGlkPSJOb1RpbWVTZXQiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iIiAkRGF0YXsiVGltZVNlYXJjaFR5cGU6Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgICRUZXh0eyJBbGwifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiU3BlY2lmaWMgZGF0ZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGVQb2ludCIgbmFtZT0iVGltZVNlYXJjaFR5cGUiICB2YWx1ZT0iVGltZVBvaW50IiAkRGF0YXsiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCJ9IC8+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydFN0cmcifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludFN0cmcifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdFN0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiRGF0ZSByYW5nZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGVSYW5nZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgJERhdGF7IlRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCJ9IC8+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikl0ZW1DcmVhdGVUaW1lU3RhcnRTdHJnIn0gJFRleHR7ImFuZCJ9ICREYXRheyJJdGVtQ3JlYXRlVGltZVN0b3BTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIj4kVGV4dHsiRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7Ik5vIHRpbWUgc2V0dGluZ3MifSIgdHlwZT0icmFkaW8iIGlkPSJOb0NoYW5nZVRpbWVTZXQiIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iIiAkRGF0YXsiQ2hhbmdlVGltZVNlYXJjaFR5cGU6Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgICRUZXh0eyJBbGwifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiU3BlY2lmaWMgZGF0ZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkNoYW5nZURhdGVQb2ludCIgbmFtZT0iQ2hhbmdlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiICREYXRheyJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50In0gLz4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiSXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0U3RyZyJ9ICREYXRheyJJdGVtQ2hhbmdlVGltZVBvaW50U3RyZyJ9ICREYXRheyJJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0U3RyZyJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJEYXRlIHJhbmdlIn0iIHR5cGU9InJhZGlvIiBpZD0iQ2hhbmdlRGF0ZVJhbmdlIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiAkRGF0YXsiQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90In0gLz4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiSXRlbUNoYW5nZVRpbWVTdGFydFN0cmcifSAkVGV4dHsiYW5kIn0gJERhdGF7Ikl0ZW1DaGFuZ2VUaW1lU3RvcFN0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFRhYmxlU21hbGwiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVzc1cGMgU3BhY2luZ1RvcCBGQVFEaXZpZGVyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNhdmVQcm9maWxlIj4kVGV4dHsiU2F2ZSBhcyBUZW1wbGF0ZT8ifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJTYXZlIGFzIFRlbXBsYXRlIiB0eXBlPSJjaGVja2JveCIgaWQ9IlNhdmVQcm9maWxlIiBuYW1lPSJTYXZlUHJvZmlsZSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUHJvZmlsZSI+JFRleHR7IlRlbXBsYXRlIE5hbWUifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsZSBuYW1lIiB0eXBlPSJ0ZXh0IiBpZD0iUHJvZmlsZSIgbmFtZT0iUHJvZmlsZSIgdmFsdWU9IiRRRGF0YXsiUHJvZmlsZSJ9IiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxkaXYgaWQ9IkJvdHRvbUFjdGlvblJvdyIgY2xhc3M9IkNlbnRlciBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iJFRleHR7IlNlYXJjaCJ9Ij48c3Bhbj48aSBjbGFzcz0iaWNvbi1zZWFyY2giPjwvaT4gJFRleHR7IlNlYXJjaCJ9PC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KPC9kaXY+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaCAtLT4K
IyAtLQojIEFnZW50RkFRWm9vbS5kdGwgLSBwcm92aWRlcyBIVE1MIGZvciBBZ2VudEZBUVpvb20ucG0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxoMSB0aXRsZT0iJENvbmZpZ3siRkFROjpGQVFIb29rIn06ICRRRGF0YXsiTnVtYmVyIn0gJm5kYXNoOyAkUURhdGF7IlRpdGxlIn0iPgogICAgICAgICAgICAkQ29uZmlneyJGQVE6OkZBUUhvb2sifTogJERhdGF7Ik51bWJlciJ9IDxzcGFuPiZtZGFzaDs8L3NwYW4+ICRRRGF0YXsiVGl0bGUiLCAiNjAifQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJGQVFQYXRoQ2F0ZWdvcnkiPgogICAgICAgIDxoMz4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O05hdj0kTFFEYXRheyJOYXYifSI+CiAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxzcGFuPiRDb25maWd7IkZBUTo6RXhwbG9yZXI6OlBhdGg6OlNlcGFyYXRvciJ9PC9zcGFuPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgogICAgICAgIDwvaDM+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkZBUSBJbmZvcm1hdGlvbiJ9PC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJDYXRlZ29yeSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnlOYW1lIn0ifSI+JFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSIsIjE4In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiS2V5d29yZHMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtLZXl3b3JkPSRMUURhdGF7IktleXdvcmQifSIgdGl0bGU9IiRRRGF0YXsiS2V5d29yZCJ9Ij4kUURhdGF7IktleXdvcmQifTwvYT4KPCEtLSBkdGw6YmxvY2s6S2V5d29yZHMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJTdGF0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9Ij4kVGV4dHsiJERhdGF7IlN0YXRlIn0iLCIyNSJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJWYWxpZCJ9In0iPiRUZXh0eyIkRGF0YXsiVmFsaWQifSIsIjI1In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiTGFuZ3VhZ2UifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiJERhdGF7Ikxhbmd1YWdlIn0ifSI+JFRleHR7IiREYXRheyJMYW5ndWFnZSJ9IiwiMTgifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdBcHByb3ZhbCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJBcHByb3ZhbCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQXBwcm92YWwifSJ9Ij4kVGV4dHsiJERhdGF7IkFwcHJvdmFsIn0iLCIxOCJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOlZpZXdBcHByb3ZhbCAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiUmF0aW5nIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiUmF0aW5nIn0gJERhdGF7IlZvdGVSZXN1bHQifSUiPgoKPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPjxpIGNsYXNzPSJpY29uLXN0YXIiPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzIC0tPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnNDb3VudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJhdGVTdGFyVGV4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJTdGFycyJ9ICRUZXh0eyJvdXQgb2YgNSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzQ291bnQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+Cgo8IS0tIGR0bDpibG9jazpWaWV3Vm90ZXMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiVm90ZXMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiJERhdGF7IlZvdGVzIn0ifSI+JFRleHR7IiREYXRheyJWb3RlcyJ9IiwiMTgifTwvcD4KPCEtLSBkdGw6YmxvY2s6Vmlld1ZvdGVzIC0tPgo8IS0tIGR0bDpibG9jazpWaWV3Tm9Wb3RlcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJWb3RlcyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyJObyB2b3RlcyBmb3VuZCEifSI+JFRleHR7Ik5vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4ifTwvcD4KPCEtLSBkdGw6YmxvY2s6Vmlld05vVm90ZXMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkNyZWF0ZWQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPiRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifSAgKCREYXRheyJDcmVhdGVkQnlVc2VyIn0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkNoYW5nZWQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPiRUaW1lU2hvcnR7IiREYXRheyJDaGFuZ2VkIn0ifSAgKCREYXRheyJDaGFuZ2VkQnlVc2VyIn0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkxpbmtUYWJsZVNpbXBsZSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiTGlua2VkIE9iamVjdHMifTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJMaW5rVGFibGVTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGlua1RhYmxlU2ltcGxlIC0tPgoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBZGRpdGlvbmFsSW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ucyI+Cgo8IS0tIGR0bDpibG9jazpNZW51SXRlbSAtLT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRGF0YXsiTGluayJ9IiBpZD0iJFFEYXRheyJNZW51SUQifSIgY2xhc3M9IiRRRGF0YXsiQ2xhc3MifSIgJERhdGF7IkxpbmtQYXJhbSJ9IHRpdGxlPSIkVGV4dHsiJERhdGF7IkRlc2NyaXB0aW9uIn0ifSI+JFRleHR7IiREYXRheyJOYW1lIn0ifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgoKPCEtLSBkdGw6YmxvY2s6U2hvd0NvbmZpcm1hdGlvbkRpYWxvZyAtLT4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKLypnbG9iYWwgRkFROiB0cnVlICovCiAgICBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nLkJpbmRDb25maXJtYXRpb25EaWFsb2coewogICAgICAgIEVsZW1lbnRJRDogICAgICAgICAgICAgICAgICAnJERhdGF7Ik1lbnVJRCJ9JywKICAgICAgICBFbGVtZW50U2VsZWN0b3I6ICAgICAgICAgICAgJyREYXRheyJFbGVtZW50U2VsZWN0b3IifScsCiAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgICckRGF0YXsiRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nIn0nLAogICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiAnJERhdGF7IkNvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nIn0nLAogICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICAnJERhdGF7IkRpYWxvZ1RpdGxlIn0nLAogICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgIFllczogJyRKU1RleHR7IlllcyJ9JywKICAgICAgICAgICAgTm86ICAnJEpTVGV4dHsiTm8ifScsCiAgICAgICAgICAgIE9rOiAgJyRKU1RleHR7Ik9rIn0nCiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPCEtLSBkdGw6YmxvY2s6U2hvd0NvbmZpcm1hdGlvbkRpYWxvZyAtLT4KCjwhLS0gZHRsOmJsb2NrOk1lbnVJdGVtIC0tPgoKICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgaWQ9IkZBUUJvZHkiPgoKPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudEhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEJveCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJBdHRhY2htZW50cyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KCjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkRvd25sb2FkQXR0YWNobWVudCIgdGl0bGU9IiRUZXh0eyJEb3dubG9hZCBBdHRhY2htZW50In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9O0ZpbGVJRD0kTFFEYXRheyJGaWxlSUQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkZpbGVuYW1lIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICRRRGF0YXsiRmlsZXNpemUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50Um93IC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50SGVhZGVyIC0tPgoKPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kTFFEYXRheyJUaWNrZXRJRCJ9O0FydGljbGVJRD0kTFFEYXRheyJBcnRpY2xlSUQifSIgdGl0bGU9IiRUZXh0eyJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQifSI+PGkgY2xhc3M9Imljb24tY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iaWNvbi1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IiREYXRheyJDYXB0aW9uIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkZBUVN0YXRlTmFtZSI+KCRUZXh0eyIkRGF0YXsiU3RhdGVOYW1lIn0ifSk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnRIVE1MIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgojIFVzZSB0aGUgSFRNTDUgc2FuZGJveCBhdHRyaWJ1dGUgdG8gcHJldmVudCBwbHVnaW5zIGFuZCBzY3JpcHRzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIuCiMgVXNlIElFJ3MgKG5vbi1zdGFuZGFyZCkgc2VjdXJpdHkgYXR0cmlidXRlIHRvIGFjaGlldmUgc29tZXRoaW5nIHNpbWlsYXIgaW4gb2xkZXIgSUUgYnJvd3NlcnMuIEFwcGVuZCBzZXNzaW9uIGluZm8gdG8gVVJMIGJlY2F1c2UgSUUgd2lsbCBub3Qgc2VuZCBjb29raWVzLgojIFNldCAnYWxsb3ctcG9wdXBzJyB0byBhbGxvdyBJRTEwKyB0byBvcGVuIGxpbmtzLiByZWY6IGh0dHA6Ly93d3cudzMub3JnL2h0bWwvd2cvd2lraS9DaGFuZ2VQcm9wb3NhbHMvc2FuZGJveF9hbGxvd19wb3B1cHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctcG9wdXBzIiAkRGF0YXsiTVNTZWN1cml0eVJlc3RyaWN0ZWQifSBjbGFzcz0iRkFRRmllbGQiIGlkPSJJZnJhbWVGQVEkUURhdGF7IkZpZWxkIn0iIG9ubG9hZD0iaWYgKHR5cGVvZiBGQVEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQWdlbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQWdlbnQuRkFRWm9vbSA9PT0gJ29iamVjdCcpIHsgRkFRLkFnZW50LkZBUVpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjSWZyYW1lRkFRJFFEYXRheyJGaWVsZCJ9JykpOyB9OyIgc3JjPSIjIiBkYXRhLXNyYz0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPUhUTUxWaWV3O0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9O0ZpZWxkPSRRRGF0YXsiRmllbGQifTskUUVudnsiU2Vzc2lvbk5hbWUifT0kUUVudnsiU2Vzc2lvbklEIn0iPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudEhUTUwgLS0+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKCiAgICBDb3JlLkNvbmZpZy5TZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcsIHBhcnNlSW50KCIkQ29uZmlneyJGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodERlZmF1bHQifSIgfHwgMCwgMTApKTsKICAgIENvcmUuQ29uZmlnLlNldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnLCBwYXJzZUludCgiJENvbmZpZ3siRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgifSIgfHwgMCwgMTApKTsKCiAgICAvLyBjb3B5IGRhdGEtc3JjIGF0dHJpYnV0ZSB0byBzcmMgYXR0cmlidXRlIGZvciBhbGwgaWZyYW1lcyB0byBjb3JyZWN0bHkgZGlzcGxheSBpdHMgY29udGVudHMgYWZ0ZXIgSlMgaXMgZnVsbHkgbG9hZGVkCiAgICAkKCdpZnJhbWUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hdHRyKCJzcmMiLCAkKHRoaXMpLmF0dHIoImRhdGEtc3JjIikgKTsKICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudFBsYWluIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ29udGVudCJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnRQbGFpbiAtLT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgoKPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPSRMUURhdGF7IlRpY2tldElEIn07QXJ0aWNsZUlEPSRMUURhdGF7IkFydGljbGVJRCJ9IiB0aXRsZT0iJFRleHR7IlNob3cgb3IgaGlkZSB0aGUgY29udGVudCJ9Ij48aSBjbGFzcz0iaWNvbi1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJpY29uLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IlJhdGluZyJ9PC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFWb3RpbmcgQ29udGVudCIgaWQ9IkZBUVZvdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJDZW50ZXIiPiRUZXh0eyJIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEifTwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkZBUVZvdGUiIGNsYXNzPSJGQVFWb3RlRm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJSYXRlQnV0dG9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4kVGV4dHsibm90IGhlbHBmdWwifTwvbGk+CjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZ1JhdGVSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0iUmF0ZUJ1dHRvbiREYXRheyJWYWx1ZSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlQnV0dG9uIFJhdGVVbkNoZWNrZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLXN0YXItZW1wdHkiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJUaXRsZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZ1JhdGVSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4kVGV4dHsidmVyeSBoZWxwZnVsIn08L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIGNsYXNzPSJDbGVhciIgLz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24gSGlkZGVuIiBpZD0iUmF0ZVN1Ym1pdEJ1dHRvbiIgbmFtZT0iYnRuIiB2YWx1ZT0iJFRleHR7IlZvdGUifSI+PHNwYW4+PGkgY2xhc3M9Imljb24tY2hlY2siPjwvaT4gJFRleHR7IlZvdGUifTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZ2VudEZBUVpvb20iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJWb3RlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ2F0ZWdvcnlJRCIgdmFsdWU9IiRRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iJFFEYXRheyJJdGVtSUQifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJhdGUiIHZhbHVlPSIiIGlkPSJSYXRlVmFsdWUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nIC0tPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGlua1RhYmxlQ29tcGxleCAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAkRGF0YXsiTGlua1RhYmxlU3RyZyJ9CiAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpMaW5rVGFibGVDb21wbGV4IC0tPgoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCd1bC5BY3Rpb25zIGEuQXNQb3B1cCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAgKCQodGhpcykuYXR0cignaHJlZicpLCAnQWN0aW9uJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7CgogICAgJCgnLlJhdGVCdXR0b24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIHZhciBSYXRlTnVtYmVyID0gcGFyc2VJbnQoJCh0aGlzKS5jbG9zZXN0KCdsaScpLmF0dHIoJ2lkJykucmVwbGFjZSgvUmF0ZUJ1dHRvbi8sICcnKSwgMTApOwogICAgICAgICQoJyNSYXRlVmFsdWUnKS52YWwoUmF0ZU51bWJlcik7CiAgICAgICAgJCgnI1JhdGVTdWJtaXRCdXR0b24nKS5mYWRlSW4oMjUwKTsKICAgICAgICAkKCcjRkFRVm90aW5nJykuZmluZCgnLlJhdGVCdXR0b24nKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgSXRlbVJhdGVOdW1iZXIgPSBwYXJzZUludCgkKHRoaXMpLmNsb3Nlc3QoJ2xpJykuYXR0cignaWQnKS5yZXBsYWNlKC9SYXRlQnV0dG9uLywgJycpLCAxMCk7CiAgICAgICAgICAgIGlmICggSXRlbVJhdGVOdW1iZXIgPD0gUmF0ZU51bWJlciApIHsKICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdSYXRlVW5DaGVja2VkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdSYXRlVW5DaGVja2VkJyk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdSYXRlQ2hlY2tlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIEFnZW50RkFRWm9vbVNtYWxsLmR0bCAtIHByb3ZpZGVzIEhUTUwgc21hbGwgZm9yIEFnZW50RkFRWm9vbS5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJIZWFkbGluZSI+CiAgICAgICAgPGgxIHRpdGxlPSIkVGV4dHsiWm9vbSJ9ICRDb25maWd7IkZBUTo6RkFRSG9vayJ9OiAkUURhdGF7Ik51bWJlciJ9ICZuZGFzaDsgJFFEYXRheyJUaXRsZSJ9Ij4KICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn06ICREYXRheyJOdW1iZXIifSA8c3Bhbj4mbWRhc2g7PC9zcGFuPiAkUURhdGF7IlRpdGxlIiwgIjYwIn0KICAgICAgICA8L2gxPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iRkFRUGF0aENhdGVnb3J5Ij4KICAgICAgICA8aDM+Cgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgogICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07TmF2PSRMUURhdGF7Ik5hdiJ9Ij4KICAgICAgICAgICAgICAgICRRRGF0YXsiTmFtZSJ9CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPHNwYW4+JENvbmZpZ3siRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2VwYXJhdG9yIn08L3NwYW4+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CgogICAgICAgIDwvaDM+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiRkFRIEluZm9ybWF0aW9uIn08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSJ9Ij4kVGV4dHsiJERhdGF7IkNhdGVnb3J5TmFtZSJ9In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiS2V5d29yZHMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFTZWFyY2hTbWFsbDtTdWJhY3Rpb249U2VhcmNoO0tleXdvcmQ9JExRRGF0YXsiS2V5d29yZCJ9IiB0aXRsZT0iJFFEYXRheyJLZXl3b3JkIn0iPiRRRGF0YXsiS2V5d29yZCJ9PC9hPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlN0YXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJTdGF0ZSJ9In0iPiRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJWYWxpZCJ9In0iPiRUZXh0eyIkRGF0YXsiVmFsaWQifSIsIjI1In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7Ikxhbmd1YWdlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJMYW5ndWFnZSJ9In0iPiRUZXh0eyIkRGF0YXsiTGFuZ3VhZ2UifSJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgoKPCEtLSBkdGw6YmxvY2s6Vmlld0FwcHJvdmFsIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkFwcHJvdmFsIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJBcHByb3ZhbCJ9In0iPiRUZXh0eyIkRGF0YXsiQXBwcm92YWwifSJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOlZpZXdBcHByb3ZhbCAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiUmF0aW5nIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiUmF0aW5nIn0gJERhdGF7IlZvdGVSZXN1bHQifSUiPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhciI+U3Rhcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnMgLS0+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFyc0NvdW50IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmF0ZVN0YXJUZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlN0YXJzIn0gJFRleHR7Im91dCBvZiA1In0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnNDb3VudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Vmlld1JhdGluZyAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdWb3RlcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJWb3RlcyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+JFFEYXRheyJWb3RlcyJ9PC9wPgo8IS0tIGR0bDpibG9jazpWaWV3Vm90ZXMgLS0+CjwhLS0gZHRsOmJsb2NrOlZpZXdOb1ZvdGVzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlZvdGVzIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7Ik5vIHZvdGVzIGZvdW5kISJ9Ij4kVGV4dHsiTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLiJ9PC9wPgo8IS0tIGR0bDpibG9jazpWaWV3Tm9Wb3RlcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJDcmVhdGVkIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRpbWVMb25neyIkRGF0YXsiQ3JlYXRlZCJ9In0gKCRRRGF0YXsiQ3JlYXRlZEJ5TG9naW4ifSkiPiRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifSAgKCRRRGF0YXsiQ3JlYXRlZEJ5TG9naW4ifSk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiQ2hhbmdlZCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9ICgkUURhdGF7IkNyZWF0ZWRCeUxvZ2luIn0pIj4kVGltZVNob3J0eyIkRGF0YXsiQ2hhbmdlZCJ9In0gICgkUURhdGF7IkNyZWF0ZWRCeUxvZ2luIn0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9PC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudEhUTUwgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiMgVXNlIHRoZSBIVE1MNSBzYW5kYm94IGF0dHJpYnV0ZSB0byBwcmV2ZW50IHBsdWdpbnMgYW5kIHNjcmlwdHMgZnJvbSBiZWluZyBleGVjdXRlZCBpbiB0aGUgYnJvd3Nlci4KIyBVc2UgSUUncyAobm9uLXN0YW5kYXJkKSBzZWN1cml0eSBhdHRyaWJ1dGUgdG8gYWNoaWV2ZSBzb21ldGhpbmcgc2ltaWxhciBpbiBvbGRlciBJRSBicm93c2Vycy4gQXBwZW5kIHNlc3Npb24gaW5mbyB0byBVUkwgYmVjYXVzZSBJRSB3aWxsIG5vdCBzZW5kIGNvb2tpZXMuCiMgU2V0ICdhbGxvdy1wb3B1cHMnIHRvIGFsbG93IElFMTArIHRvIG9wZW4gbGlua3MuIHJlZjogaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy93aWtpL0NoYW5nZVByb3Bvc2Fscy9zYW5kYm94X2FsbG93X3BvcHVwcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMiICREYXRheyJNU1NlY3VyaXR5UmVzdHJpY3RlZCJ9IGNsYXNzPSJGQVFGaWVsZCIgaWQ9IklmcmFtZUZBUSRRRGF0YXsiRmllbGQifSIgb25sb2FkPSJpZiAodHlwZW9mIEZBUSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5BZ2VudCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5BZ2VudC5GQVFab29tID09PSAnb2JqZWN0JykgeyBGQVEuQWdlbnQuRkFRWm9vbS5JZnJhbWVBdXRvSGVpZ2h0KCQoJyNJZnJhbWVGQVEkUURhdGF7IkZpZWxkIn0nKSk7IH07IiBzcmM9IiMiIGRhdGEtc3JjPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249SFRNTFZpZXc7SXRlbUlEPSRRRGF0YXsiSXRlbUlEIn07RmllbGQ9JFFEYXRheyJGaWVsZCJ9OyRRRW52eyJTZXNzaW9uTmFtZSJ9PSRRRW52eyJTZXNzaW9uSUQifSI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50SFRNTCAtLT4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwoKICAgIENvcmUuQ29uZmlnLlNldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHREZWZhdWx0JywgcGFyc2VJbnQoIiRDb25maWd7IkZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCJ9IiB8fCAwLCAxMCkpOwogICAgQ29yZS5Db25maWcuU2V0KCdGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodE1heCcsIHBhcnNlSW50KCIkQ29uZmlneyJGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodE1heCJ9IiB8fCAwLCAxMCkpOwoKICAgIC8vIGNvcHkgZGF0YS1zcmMgYXR0cmlidXRlIHRvIHNyYyBhdHRyaWJ1dGUgZm9yIGFsbCBpZnJhbWVzIHRvIGNvcnJlY3RseSBkaXNwbGF5IGl0cyBjb250ZW50cyBhZnRlciBKUyBpcyBmdWxseSBsb2FkZWQKICAgICQoJ2lmcmFtZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLmF0dHIoInNyYyIsICQodGhpcykuYXR0cigiZGF0YS1zcmMiKSApOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50UGxhaW4gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJDb250ZW50In0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudFBsYWluIC0tPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CiAgICA8aW5wdXQgaWQ9IkZBUUlEIiB0eXBlPSJoaWRkZW4iIG5hbWU9IkZBUUlEIiB2YWx1ZT0iJFFEYXRheyJJRCJ9Ij4KICAgIDxpbnB1dCBpZD0iRkFRVGl0bGUiIHR5cGU9ImhpZGRlbiIgbmFtZT0iVGl0bGUiIHZhbHVlPSIkUURhdGF7IlRpdGxlIn0iPgogICAgPGlucHV0IGlkPSJGQVFCb2R5IiB0eXBlPSJoaWRkZW4iIG5hbWU9IkJvZHkiIHZhbHVlPSIkUURhdGF7IkZ1bGxCb2R5In0iPgogICAgPGlucHV0IGlkPSJGQVFQdWJsaWNMaW5rIiB0eXBlPSJoaWRkZW4iIG5hbWU9IkxpbmsiICB2YWx1ZT0iJERhdGF7IlB1YmxpY2xpbmsifSI+Cgo8L2Rpdj4KCjxkaXYgY2xhc3M9Ilpvb21TbWFsbEZvb3RlciI+CjwhLS0gZHRsOmJsb2NrOkluc2VydFRleHQgLS0+CiAgICA8YnV0dG9uIGlkPSJJbnNlcnRUZXh0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIFpvb21TbWFsbEJ1dHRvbiI+PHNwYW4+JFRleHR7Ikluc2VydCBGQVEgVGV4dCJ9PC9zcGFuPjwvYnV0dG9uPgo8IS0tIGR0bDpibG9jazpJbnNlcnRUZXh0IC0tPgoKPCEtLSBkdGw6YmxvY2s6SW5zZXJ0RnVsbCAtLT4KICAgIDxidXR0b24gaWQ9Ikluc2VydEZ1bGwiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24gWm9vbVNtYWxsQnV0dG9uIj48c3Bhbj4kVGV4dHsiSW5zZXJ0IEZ1bGwgRkFRIn08L3NwYW4+PC9idXR0b24+CjwhLS0gZHRsOmJsb2NrOkluc2VydEZ1bGwgLS0+Cgo8IS0tIGR0bDpibG9jazpJbnNlcnRMaW5rIC0tPgogICAgPGJ1dHRvbiBpZD0iSW5zZXJ0TGluayIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiBab29tU21hbGxCdXR0b24iPjxzcGFuPiRUZXh0eyJJbnNlcnQgRkFRIExpbmsifTwvc3Bhbj48L2J1dHRvbj4KPCEtLSBkdGw6YmxvY2s6SW5zZXJ0TGluayAtLT4KCjwhLS0gZHRsOmJsb2NrOkluc2VydFRleHRBbmRMaW5rIC0tPgogICAgPGJ1dHRvbiBpZD0iSW5zZXJ0VGV4dEFuZExpbmsiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24gWm9vbVNtYWxsQnV0dG9uIj48c3Bhbj4kVGV4dHsiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayJ9PC9zcGFuPjwvYnV0dG9uPgo8IS0tIGR0bDpibG9jazpJbnNlcnRUZXh0QW5kTGluayAtLT4KCjwhLS0gZHRsOmJsb2NrOkluc2VydEZ1bGxBbmRMaW5rIC0tPgogICAgPGJ1dHRvbiBpZD0iSW5zZXJ0RnVsbEFuZExpbmsiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24gWm9vbVNtYWxsQnV0dG9uIj48c3Bhbj4kVGV4dHsiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayJ9PC9zcGFuPjwvYnV0dG9uPgo8IS0tIGR0bDpibG9jazpJbnNlcnRGdWxsQW5kTGluayAtLT4KCjwhLS0gZHRsOmJsb2NrOk9yIC0tPgogICAgJFRleHR7Im9yIn0KPCEtLSBkdGw6YmxvY2s6T3IgLS0+CgogICAgPGEgaWQ9IkNhbmNlbCIgY2xhc3M9IiRRRGF0YXsiQ2FuY2VsQnV0dG9uQ2xhc3MifSIgaHJlZj0iIyI+JFRleHR7IkNhbmNlbCAmIGNsb3NlIHdpbmRvdyJ9PC9hPgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxiciAvPgoKPC9kaXY+Cgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KJCgnI0NhbmNlbCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwp9KTsKCiQoJyNJbnNlcnRUZXh0JykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIHZhciBJbnNlcnRUZXh0ID0gMSwKICAgICAgICBJbnNlcnRMaW5rID0gMDsKCiAgICBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5TZXRUZXh0KEluc2VydFRleHQsIEluc2VydExpbmspOwp9KTsKCiQoJyNJbnNlcnRMaW5rJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIHZhciBJbnNlcnRUZXh0ID0gMCwKICAgICAgICBJbnNlcnRMaW5rID0gMTsKCiAgICBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5TZXRUZXh0KEluc2VydFRleHQsIEluc2VydExpbmspOwp9KTsKCiQoJyNJbnNlcnRUZXh0QW5kTGluaycpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgSW5zZXJ0VGV4dCA9IDEsCiAgICAgICAgSW5zZXJ0TGluayA9IDE7CgogICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0VGV4dChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKTsKfSk7CgokKCcjSW5zZXJ0RnVsbCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgSW5zZXJ0VGV4dCA9IDEsCiAgICAgICAgSW5zZXJ0TGluayA9IDA7CgogICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0RnVsbEZBUShJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKTsKfSk7CgokKCcjSW5zZXJ0RnVsbEFuZExpbmsnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIEluc2VydFRleHQgPSAxLAogICAgICAgIEluc2VydExpbmsgPSAxOwoKICAgIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLlNldEZ1bGxGQVEoSW5zZXJ0VGV4dCwgSW5zZXJ0TGluayk7Cn0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+Cg==
IyAtLQojIEN1c3RvbWVyRkFRRXhwbG9yZXIuZHRsIC0gcHJvdmlkZXMgSFRNTCBmb3IgQ3VzdG9tZXJGQVFFeHBsb3Jlci5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJBUklBUm9sZU1haW4iPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IkZBUUhlYWRlciI+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4KICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUiLCI0MCJ9CiAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iRkFRUGF0aENhdGVnb3J5Ij4KICAgICAgICAgICAgPGgzPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgogICAgICAgICAgICAgICAgJENvbmZpZ3siRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2VwYXJhdG9yIn0KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifSI+CiAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJOYW1lIn0KICAgICAgICAgICAgICAgIDwvYT4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4gTGFyZ2UiPgoKPCEtLSBkdGw6YmxvY2s6UXVpY2tTZWFyY2ggLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiU2VhcmNoIn08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9IlNlYXJjaEJveCIgYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJFFEYXRheyJBY3Rpb24ifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTmF2IiB2YWx1ZT0iJFFEYXRheyJOYXYifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IlNlYXJjaCJ9IiBpZD0iU2VhcmNoIiB0aXRsZT0iJFRleHR7IlNlYXJjaCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlNlYXJjaCJ9Ij4kVGV4dHsiUXVpY2sgU2VhcmNoIn08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiV2lsZGNhcmRzIGFyZSBhbGxvd2VkLiJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGQVFTZWFyY2hCdXR0b24gU3BhY2luZ1RvcCIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kTFFEYXRheyJBY3Rpb24ifTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiQWR2YW5jZWQgU2VhcmNoIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpRdWlja1NlYXJjaCAtLT4KCjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiJERhdGF7IkhlYWRlciJ9In08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBGQVFNaW5pTGlzdCI+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik51bWJlciJ9Lgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9IiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9ICgkUURhdGF7IkNhdGVnb3J5TmFtZSJ9KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUiLCI1MCJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkNhdGVnb3J5U2hvcnROYW1lIiwiMTUifSAtICRRRGF0YXsiTGFuZ3VhZ2UifSAtICRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9IC0gJFRpbWVTaG9ydHsiJERhdGF7IkNyZWF0ZWQifSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0IC0tPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgoKPCEtLSBkdGw6YmxvY2s6U3ViY2F0ZWdvcmllcyAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0IC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiU3ViY2F0ZWdvcmllcyJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciIHN1bW1hcnk9IkZBUSBjYXRlZ29yaWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj4kVGV4dHsiTmFtZSJ9PC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj4kVGV4dHsiQ29tbWVudCJ9PC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj4kVGV4dHsiU3ViY2F0ZWdvcmllcyJ9PC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj4kVGV4dHsiRkFRIEFydGljbGVzIn08L2E+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9DYXRlZ29yeURhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPiRUZXh0eyJObyBzdWJjYXRlZ29yaWVzIGZvdW5kLiJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk5vQ2F0ZWdvcnlEYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0Um93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4kUURhdGF7Ik5hbWUifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JFFEYXRheyJDb21tZW50In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JFFEYXRheyJTdWJDYXRlZ29yeUNvdW50In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JFFEYXRheyJBcnRpY2xlQ291bnQifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpTdWJjYXRlZ29yaWVzIC0tPgoKCjwhLS0gZHRsOmJsb2NrOkZBUUl0ZW1MaXN0IC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJGQVEgQXJ0aWNsZXMifTwvaDM+CjwhLS0gZHRsOmJsb2NrOlBhZ2luYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4kUURhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JFFEYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOlBhZ2luYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgJERhdGF7IkZBUUlEU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07U29ydEJ5PUZBUUlEO09yZGVyPSRMUURhdGF7Ik9yZGVyIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWd7IkZBUTo6RkFRSG9vayJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgJERhdGF7IlRpdGxlU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07U29ydEJ5PVRpdGxlO09yZGVyPSRMUURhdGF7Ik9yZGVyIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJUaXRsZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2F0ZWdvcnkgJERhdGF7IkNhdGVnb3J5U29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07U29ydEJ5PUNhdGVnb3J5O09yZGVyPSRMUURhdGF7Ik9yZGVyIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJDYXRlZ29yeSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlICREYXRheyJMYW5ndWFnZVNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O1NvcnRCeT1MYW5ndWFnZTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTGFuZ3VhZ2UifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJTdGF0ZSAkRGF0YXsiU3RhdGVTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtTb3J0Qnk9U3RhdGU7T3JkZXI9JExRRGF0YXsiT3JkZXIifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlN0YXRlIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9GQVFEYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIj4kVGV4dHsiTm8gRkFRIGFydGljbGVzIGZvdW5kLiJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk5vRkFRRGF0YUZvdW5kTXNnIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkZBUU51bWJlciIgdGl0bGU9IiRRRGF0YXsiTnVtYmVyIn0iPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJGQVFJRCJ9Ij4kUURhdGF7Ik51bWJlciJ9PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iVGl0bGUiIHRpdGxlPSIkUURhdGF7IlRpdGxlIn0iPiRRRGF0YXsiVGl0bGUiLCI2MCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDYXRlZ29yeSIgdGl0bGU9IiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIn0iPiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIiwiNDUifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9Ikxhbmd1YWdlIiB0aXRsZT0iJFFEYXRheyJMYW5ndWFnZSJ9Ij4kUURhdGF7Ikxhbmd1YWdlIiwiNSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iU3RhdGUiPiRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgo8IS0tIGR0bDpibG9jazpCb3R0b21TdWJOYXZpZ2F0aW9uIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+JFFEYXRheyJSZXN1bHQifTwvc3Ryb25nPiAkVGV4dHsib2YifSA8c3Ryb25nPiRRRGF0YXsiVG90YWxIaXRzIn08L3N0cm9uZz4gLSAkVGV4dHsiUGFnZSJ9OiAkRGF0YXsiU2l0ZU5hdkJhciJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRSXRlbUxpc3QgLS0+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vIG1ha2Ugd2hvbGUgRkFRIEl0ZW0gcm93IGNsaWNrYWJsZSwgYnV0IG5vdCB0aGUgaGVhZGVycywgY2FuJ3QgdXNlIENvcmUuQ3VzdG9tZXIuQ2xpY2thYmxlUm93KCkKLy8gc2luY2UgaXQgdXNlcyAidGFibGUgdHIiIGFzIHNlbGVjdG9yLCBzZWUgYnVnIzkzMjkKJCgidGJvZHkgdHIiKS5jbGljayhmdW5jdGlvbigpewogICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAkKCJhIiwgdGhpcykuYXR0cigiaHJlZiIpOwogICAgcmV0dXJuIGZhbHNlOwp9KTsKPC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo=
IyAtLQojIEN1c3RvbWVyRkFRUHJpbnQuZHRsIC0gcHJvdmlkZXMgSFRNTCBwcmludCB2aWV3CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJtYWluaGVhZCI+JENvbmZpZ3siRkFROjpGQVFIb29rIn06ICRRRGF0YXsiTnVtYmVyIn0gLyAkUURhdGF7IlRpdGxlIn08L3RkPgogICAgPC90cj4KPC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIxMCIgd2lkdGg9IjEwMCUiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+CiAgICAgICAgICAgICRUZXh0eyJGQVEtSW5mbyJ9OgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUwJSIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJDYXRlZ29yeSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IkNhdGVnb3J5TmFtZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiU3RhdGUifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFRleHR7IiREYXRheyJTdGF0ZSJ9In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiTGFuZ3VhZ2UifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJMYW5ndWFnZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI1MCUiIHZhbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+Cgo8IS0tIGR0bDpibG9jazpSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiVm90ZXMifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+ICRRRGF0YXsiVm90ZXMifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlJlc3VsdCJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4gJFFEYXRheyJWb3RlUmVzdWx0In0gJiMzNzs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmF0aW5nIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYXN0IHVwZGF0ZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8YnIvPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJLZXl3b3JkcyJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOTAlIiBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiS2V5d29yZHMifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGhyPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+CiAgICAgICAgICAgICRUZXh0eyIkRGF0YXsiQ2FwdGlvbiJ9In06ICA8c3BhbiBjbGFzcz0ic21hbGwiPigkVGV4dHsiJERhdGF7IlN0YXRlTmFtZSJ9In0pIDwvc3Bhbj4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEwIiBjZWxsUGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiQ29udGVudCJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkPgogICAgICAgICAgICA8aHI+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+Cgo8L3RhYmxlPgo=
IyAtLQojIEN1c3RvbWVyRkFRU2VhcmNoLmR0bCAtIHByb3ZpZGVzIEhUTUwgZm9ybSBmb3IgQ3VzdG9tZXJGQVFTZWFyY2gucG0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+CjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJTZWFyY2ggQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkxvYWRQcm9maWxlIi8+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiUHJvZmlsZSJ9PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUHJvZmlsZSI+JFRleHR7IlNlYXJjaCB0ZW1wbGF0ZSJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUHJvZmlsZXNTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTZWxlY3RUZW1wbGF0ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlNlbGVjdCJ9Ij4kVGV4dHsiU2VsZWN0In08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iRXJhc2VUZW1wbGF0ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IkRlbGV0ZSJ9Ij4kVGV4dHsiRGVsZXRlIn08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iU2VhcmNoVGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTZWFyY2gifSI+JFRleHR7IlNlYXJjaCJ9PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9ybT4KCiAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBuYW1lPSJjb21wb3NlIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJEVudnsiQWN0aW9uIn0iLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj4kQ29uZmlneyJGQVE6OkZBUUhvb2sifTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJENvbmZpZ3siRkFROjpGQVFIb29rIn0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgc2l6ZT0iMzAiIHZhbHVlPSIkUURhdGF7Ik51bWJlciJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7ImUuIGcuIDEwKjUxNTUgb3IgMTA1NjU4KiJ9PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIikifTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpdGxlIj4kVGV4dHsiRnVsbHRleHQifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiRnVsbHRleHQifSIgdHlwZT0idGV4dCIgaWQ9IkZ1bGxUZXh0IiBuYW1lPSJGdWxsdGV4dCIgdmFsdWU9IiRRRGF0YXsiRnVsbHRleHQifSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGl0bGUiPiRUZXh0eyJUaXRsZSJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJUaXRsZSJ9IiB0eXBlPSJ0ZXh0IiBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iJFFEYXRheyJUaXRsZSJ9IiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkIj4kVGV4dHsiS2V5d29yZCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJLZXl3b3JkIn0iIHR5cGU9InRleHQiIGlkPSJLZXl3b3JkIiBuYW1lPSJLZXl3b3JkIiB2YWx1ZT0iJFFEYXRheyJLZXl3b3JkIn0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7Ikxhbmd1YWdlIn06PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikxhbmd1YWdlc1N0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkNhdGVnb3J5In06PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7IkNhdGVnb3JpZXNTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiVm90ZSByZXN0cmljdGlvbnMifTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7Ik5vIHZvdGUgc2V0dGluZ3MifSIgdHlwZT0icmFkaW8iICBpZD0iTm9Wb3RlU2V0IiBuYW1lPSJWb3RlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iIiAkRGF0YXsiVm90ZVNlYXJjaE9wdGlvbjo6Tm9uZSJ9IC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9UVm90ZVNldCI+JFRleHR7IkFsbCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9JFRleHR7IlNwZWNpZmljIHZvdGVzIn0gdHlwZT0icmFkaW8iIGlkPSJWb3RlUG9pbnQiIG5hbWU9IlZvdGVTZWFyY2hPcHRpb24iICB2YWx1ZT0iVm90ZVBvaW50IiAkRGF0YXsiVm90ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50In0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWb3RlUG9pbnQiPiRUZXh0eyJPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICREYXRheyJWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZyJ9CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlZvdGVTZWFyY2giIHZhbHVlPSIkUURhdGF7IlZvdGVTZWFyY2gifSIgY2xhc3M9IlcyNXBjIi8+CiAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7ImUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCJ9PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiUmF0ZSByZXN0cmljdGlvbnMifTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7Ik5vIHJhdGUgc2V0dGluZ3MifSIgdHlwZT0icmFkaW8iICBpZD0iTm9SYXRlU2V0IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iIiAkRGF0YXsiUmF0ZVNlYXJjaE9wdGlvbjo6Tm9uZSJ9IC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9SYXRlU2V0Ij4kVGV4dHsiQWxsIn08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0kVGV4dHsiU3BlY2lmaWMgcmF0ZSJ9IHR5cGU9InJhZGlvIiBpZD0iUmF0ZVBvaW50IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iUmF0ZVBvaW50IiAkRGF0YXsiUmF0ZVNlYXJjaE9wdGlvbjo6UmF0ZVBvaW50In0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJSYXRlUG9pbnQiPiRUZXh0eyJPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4ifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7IlJhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nIn0KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUmF0ZVNlYXJjaFNlbGVjdGlvblN0cmluZyJ9CiAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7ImUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlIn08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGltZVNlYXJjaFR5cGUiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJUaW1lIHJlc3RyaWN0aW9ucyJ9PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiTm8gdGltZSBzZXR0aW5ncyJ9IiB0eXBlPSJyYWRpbyIgIGlkPSJOb1RpbWVTZXQiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iIiAkRGF0YXsiVGltZVNlYXJjaFR5cGU6Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5vVGltZVNldCI+JFRleHR7IkFsbCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJTcGVjaWZpYyBkYXRlIn0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiICREYXRheyJUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50In0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlIj4kVGV4dHsiT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0In0gJERhdGF7Ikl0ZW1DcmVhdGVUaW1lUG9pbnQifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGVzdCJ7RGF0ZSByYW5nZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGVSYW5nZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgJERhdGF7IlRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCJ9IC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGF0ZVJhbmdlIj4kVGV4dHsiT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICREYXRheyJJdGVtQ3JlYXRlVGltZVN0YXJ0In0gJFRleHR7ImFuZCJ9ICREYXRheyJJdGVtQ3JlYXRlVGltZVN0b3AifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IlNlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyJ9PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2F2ZVByb2ZpbGUiPiRUZXh0eyJTYXZlIGFzIFRlbXBsYXRlPyJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlNhdmUgYXMgVGVtcGxhdGUiIHR5cGU9ImNoZWNrYm94IiBpZD0iU2F2ZVByb2ZpbGUiIG5hbWU9IlNhdmVQcm9maWxlIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbCI+JFRleHR7IlRlbXBsYXRlIE5hbWUifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsIG5hbWUiIHR5cGU9InRleHQiIGlkPSJQcm9maWwiIG5hbWU9IlByb2ZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iJFFEYXRheyJQcm9maWxlIn0iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlNlYXJjaCJ9Ij4kVGV4dHsiU2VhcmNoIn08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxzcGFuPiRUZXh0eyJPdXRwdXQgdG8ifTwvc3Bhbj4KICAgICAgICAgICAgICAgICREYXRheyJSZXN1bHRGb3JtU3RyZyJ9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgIENvcmUuQ3VzdG9tZXIuSW5pdEZvY3VzKCk7Cjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPCEtLSBkdGw6YmxvY2s6U2VhcmNoIC0tPgo=
IyAtLQojIEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyLmR0bCAtIHByb3ZpZGVzIG9wZW5zZWFyY2ggZm9ybSBmb3IgQ3VzdG9tZXJGQVFTZWFyY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiQ3VzdG9tZXIifSAoJFF1b3RleyIkQ29uZmlneyJGQVE6OkZBUUhvb2sifSJ9KTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiQ3VzdG9tZXIifSAoJFF1b3RleyIkQ29uZmlneyJGQVE6OkZBUUhvb2sifSJ9KTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPiRFbnZ7IlVzZXJDaGFyc2V0In08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iJENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO051bWJlcj17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPiRDb25maWd7Ikh0dHBUeXBlIn06Ly8kRW52eyJIVFRQX0hPU1QifSRDb25maWd7IkZyb250ZW5kOjpJbWFnZVBhdGgifWljb25zL3Byb2R1Y3QuaWNvPC9JbWFnZT4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==
IyAtLQojIEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQuZHRsIC0gcHJvdmlkZXMgb3BlbnNlYXJjaCBmb3JtIGZvciBDdXN0b21lckZBUVNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxPcGVuU2VhcmNoRGVzY3JpcHRpb24geG1sbnM9Imh0dHA6Ly9hOS5jb20vLS9zcGVjL29wZW5zZWFyY2gvMS4xLyIgeG1sbnM6aWU9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vU2VhcmNoLzIwMDgvIj4KPFNob3J0TmFtZT4kUXVvdGV7IiRDb25maWd7IlByb2R1Y3ROYW1lIn0ifSAtICRUZXh0eyJDdXN0b21lciJ9ICgkVGV4dHsiRkFRRnVsbHRleHQifSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPiRRdW90ZXsiJENvbmZpZ3siUHJvZHVjdE5hbWUifSJ9IC0gJFRleHR7IkN1c3RvbWVyIn0gKCRUZXh0eyJGQVFGdWxsdGV4dCJ9KTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPiRFbnZ7IlVzZXJDaGFyc2V0In08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iJENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0Z1bGx0ZXh0PXtzZWFyY2hUZXJtc30iIC8+CjxJbWFnZSBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIHR5cGU9ImltYWdlL3gtaWNvbiI+JENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JENvbmZpZ3siRnJvbnRlbmQ6OkltYWdlUGF0aCJ9aWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQuZHRsIC0gaHRtbCBmb3IgcHJpbnRpbmcgRkFRIHNlYXJjaCByZXN1bHRzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPCEtLSBzdGFydCBmb3JtIC0tPgo8aT4kRGF0YXsiV2FybmluZyJ9PC9pPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9Im1haW5oZWFkIj4kVGV4dHsiU2VhcmNoIn08L3RkPgogICAgPC90cj4KPC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iNCI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50Ym9keSI+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjMiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzUlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlRpdGxlIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IkNhdGVnb3J5In08L3RkPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYW5ndWFnZSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiU3RhdGUifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiQ2hhbmdlZCJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJOdW1iZXIifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiVGl0bGUiLCI0MCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJDYXRlZ29yeU5hbWUiLCIzMCJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiTGFuZ3VhZ2UifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGV4dHsiJERhdGF7IlN0YXRlIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgPC90cj4KPC90YWJsZT4KPCEtLSBlbmQgZm9ybSAtLT4K
IyAtLQojIEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQuZHRsIC0gaHRtbCBmb3IgRkFRIHNlYXJjaCByZXN1bHRzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKPGRpdiBpZD0iTWFpbkJveCIgY2xhc3M9IlRpY2tldFZpZXcgQVJJQVJvbGVNYWluIFNlYXJjaFJlc3VsdHMgJENvbmZpZ3siVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRPdmVydmlld1NvcnRhYmxlIn0gU29ydGFibGUiPgogICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTskUURhdGF7IkxpbmsifSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7ICRUZXh0eyJDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMifQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CjwhLS0gZHRsOmJsb2NrOlBhZ2luYXRpb24gLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz4kUURhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JFFEYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UGFnaW5hdGlvbiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iU2VhcmNoVGVybXMiPgogICAgICAgICAgICA8aDI+JFRleHR7IlNlYXJjaCBSZXN1bHRzIGZvciJ9OjwvaDI+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaFRlcm1zIC0tPgogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICRRRGF0YXsiQXR0cmlidXRlIn06ICRRRGF0YXsiVmFsdWUifQojIGhpZGUgcmVtb3ZlIGxpbmssIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHlldCBpbXBsZW1lbnRlZAojICAgICAgICAgICAgICAgIDxhIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgU2VhcmNoIFRlcm0uIn0iIGhyZWY9IiREYXRheyJTZWFyY2hWYWx1ZSJ9Ij4mdGltZXM7PC9hPgogICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaFRlcm1zIC0tPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8dGFibGUgY2xhc3M9Ik92ZXJ2aWV3Ij4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRkFRTnVtYmVyICREYXRheyJGQVFJRFNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9RkFRSUQ7T3JkZXI9JExRRGF0YXsiT3JkZXIifTtQcm9maWxlPSRMUURhdGF7IlByb2ZpbGUifTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj0kTFFEYXRheyJGaWx0ZXIifTtMaW1pdD0kTFFEYXRheyJMaW1pdCJ9O1R5cGU9JExRRGF0YXsiVHlwZSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWd7IkZBUTo6RkFRSG9vayJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgJERhdGF7IlRpdGxlU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1UaXRsZTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9O1Byb2ZpbGU9JExRRGF0YXsiUHJvZmlsZSJ9O1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O0xpbWl0PSRMUURhdGF7IkxpbWl0In07VHlwZT0kTFFEYXRheyJUeXBlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlRpdGxlIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSAkRGF0YXsiQ2F0ZWdvcnlTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUNhdGVnb3J5O09yZGVyPSRMUURhdGF7Ik9yZGVyIn07UHJvZmlsZT0kTFFEYXRheyJQcm9maWxlIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2F0ZWdvcnkifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSAkRGF0YXsiTGFuZ3VhZ2VTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUxhbmd1YWdlO09yZGVyPSRMUURhdGF7Ik9yZGVyIn07UHJvZmlsZT0kTFFEYXRheyJQcm9maWxlIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTGFuZ3VhZ2UifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDaGFuZ2VkICREYXRheyJDaGFuZ2VkU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1DaGFuZ2VkO09yZGVyPSRMUURhdGF7Ik9yZGVyIn07UHJvZmlsZT0kTFFEYXRheyJQcm9maWxlIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2hhbmdlZCJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgIDx0ciBpZD0iRW1wdHlNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPiRUZXh0eyJObyBGQVEgZGF0YSBmb3VuZC4ifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgIDx0ciB0aXRsZT0iJFFEYXRheyJUaWNrZXROdW1iZXIifSI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJGQVFJRCJ9Ij4kUURhdGF7Ik51bWJlciJ9PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJUaXRsZSI+JFFEYXRheyJUaXRsZSIsIjYwIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2F0ZWdvcnkiPiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIiwiNjAifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiPiRRRGF0YXsiTGFuZ3VhZ2UiLCI1In08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNoYW5nZWQiPiRUaW1lU2hvcnR7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgPC90YWJsZT4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpCb3R0b21TdWJOYXZpZ2F0aW9uIC0tPgogICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93IEJpZ0J1dHRvbnMiPgogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUxvYWRQcm9maWxlOyRMUURhdGF7IkxpbmsifSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7ICRUZXh0eyJDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMifQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz4kUURhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JFFEYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Qm90dG9tU3ViTmF2aWdhdGlvbiAtLT4KPC9kaXY+Cgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgQ29yZS5DdXN0b21lci5DbGlja2FibGVSb3coKTsKPC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo=
IyAtLQojIEN1c3RvbWVyRkFRWm9vbS5kdGwgLSBwcm92aWRlcyBIVE1MIGZvciBDdXN0b21lckZBUVpvb20ucG0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0Wm9vbSBBUklBUm9sZU1haW4iPgoKPCEtLSBkdGw6YmxvY2s6QmFjayAtLT4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRW52eyJMYXN0U2NyZWVuT3ZlcnZpZXcifSI+JmxhcnI7ICRUZXh0eyJCYWNrIn08L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpCYWNrIC0tPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IkZBUUhlYWRlciI+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4KICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8dWwgaWQ9IkZBUU9wdGlvbnMiPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFQcmludDtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iIGNsYXNzPSJQcmludCBBc1BvcHVwIiB0aXRsZT0iJFRleHR7IlByaW50In0iPiRUZXh0eyJQcmludCJ9PC9hPjwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iRkFRUGF0aENhdGVnb3J5IEZBUVpvb20iPgogICAgICAgICAgICA8aDM+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CiAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifQogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4KICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifQogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iPgogICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDx1bCBpZD0iTWVzc2FnZXMiPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50SGVhZGVyIC0tPgogICAgICAgICAgICA8bGkgY2xhc3M9IkN1c3RvbWVyIFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJBdHRhY2htZW50cyJ9OjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBdHRhY2htZW50cyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGFiZWwiPiRUZXh0eyJBdHRhY2htZW50In06PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkRvd25sb2FkQXR0YWNobWVudCIgdGl0bGU9IiRUZXh0eyJEb3dubG9hZCBBdHRhY2htZW50In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifTtGaWxlSUQ9JExRRGF0YXsiRmlsZUlEIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiRmlsZW5hbWUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAkUURhdGF7IkZpbGVzaXplIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50Um93IC0tPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iQ3VzdG9tZXIgVmlzaWJsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IiREYXRheyJDYXB0aW9uIn0ifTo8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9InRydWUiIG5hbWU9IkZpZWxkU3RhdGUiPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50SFRNTCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VCb2R5Ij4KIyBVc2UgdGhlIEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIHRvIHByZXZlbnQgcGx1Z2lucyBhbmQgc2NyaXB0cyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSBicm93c2VyLgojIFVzZSBJRSdzIChub24tc3RhbmRhcmQpIHNlY3VyaXR5IGF0dHJpYnV0ZSB0byBhY2hpZXZlIHNvbWV0aGluZyBzaW1pbGFyIGluIG9sZGVyIElFIGJyb3dzZXJzLiBBcHBlbmQgc2Vzc2lvbiBpbmZvIHRvIFVSTCBiZWNhdXNlIElFIHdpbGwgbm90IHNlbmQgY29va2llcy4KIyBTZXQgJ2FsbG93LXBvcHVwcycgdG8gYWxsb3cgSUUxMCsgdG8gb3BlbiBsaW5rcy4gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL3dpa2kvQ2hhbmdlUHJvcG9zYWxzL3NhbmRib3hfYWxsb3dfcG9wdXBzCiAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMiICREYXRheyJNU1NlY3VyaXR5UmVzdHJpY3RlZCJ9IGNsYXNzPSJGQVFGaWVsZCIgaWQ9IklmcmFtZUZBUSRRRGF0YXsiRmllbGQifSIgb25sb2FkPSJpZiAodHlwZW9mIEZBUSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5DdXN0b21lciA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5DdXN0b21lci5GQVFab29tID09PSAnb2JqZWN0JykgeyBGQVEuQ3VzdG9tZXIuRkFRWm9vbS5JZnJhbWVBdXRvSGVpZ2h0KCQoJyNJZnJhbWVGQVEkUURhdGF7IkZpZWxkIn0nKSk7IH07IiBzcmM9IiMiIGRhdGEtc3JjPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUN1c3RvbWVyRkFRWm9vbTtTdWJhY3Rpb249SFRNTFZpZXc7SXRlbUlEPSRRRGF0YXsiSXRlbUlEIn07RmllbGQ9JFFEYXRheyJGaWVsZCJ9OyRRRW52eyJTZXNzaW9uTmFtZSJ9PSRRRW52eyJTZXNzaW9uSUQifSI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudEhUTUwgLS0+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgIENvcmUuQ29uZmlnLlNldCgnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHREZWZhdWx0JywgcGFyc2VJbnQoIiRDb25maWd7IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCJ9IiB8fCAwLCAxMCkpOwogICAgQ29yZS5Db25maWcuU2V0KCdGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodE1heCcsIHBhcnNlSW50KCIkQ29uZmlneyJGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodE1heCJ9IiB8fCAwLCAxMCkpOwoKICAgIC8vIGNvcHkgZGF0YS1zcmMgYXR0cmlidXRlIHRvIHNyYyBhdHRyaWJ1dGUgZm9yIGFsbCBpZnJhbWVzIHRvIGNvcnJlY3RseSBkaXNwbGF5IGl0cyBjb250ZW50cyBhZnRlciBKUyBpcyBmdWxseSBsb2FkZWQKICAgICQoJ2lmcmFtZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLmF0dHIoInNyYyIsICQodGhpcykuYXR0cigiZGF0YS1zcmMiKSApOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50UGxhaW4gLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJDb250ZW50In0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50UGxhaW4gLS0+CiAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBpZD0iWm9vbVNpZGViYXIiPgogICAgICAgICAgICA8dWwgaWQ9Ik1ldGFkYXRhIj4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJGQVEgSW5mb3JtYXRpb24ifTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+JFRleHR7IkFydGljbGUgTnVtYmVyIn06PC9zcGFuPiA8c3Bhbj4kUURhdGF7Ik51bWJlciJ9PC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+JFRleHR7IkNhdGVnb3J5In06PC9zcGFuPiA8c3BhbiB0aXRsZT0iJFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSJ9Ij4kVGV4dHsiJERhdGF7IkNhdGVnb3J5TmFtZSJ9In08L3NwYW4+PC9saT4KCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IktleXdvcmRzQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiS2V5d29yZHMifTo8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOktleXdvcmRzIC0tPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXl3b3JkIiB0aXRsZT0iJFRleHR7IlNlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkIn06ICRRRGF0YXsiS2V5d29yZCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0tleXdvcmQ9JExRRGF0YXsiS2V5d29yZCJ9Ij4kUURhdGF7IktleXdvcmQifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOktleXdvcmRzIC0tPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiU3RhdGUifTo8L3NwYW4+IDxzcGFuIHRpdGxlPSIkVGV4dHsiJERhdGF7IlN0YXRlIn0ifSI+JFRleHR7IiREYXRheyJTdGF0ZSJ9In08L3NwYW4+PC9saT4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+JFRleHR7Ikxhbmd1YWdlIn06PC9zcGFuPiA8c3BhbiB0aXRsZT0iJFRleHR7IiREYXRheyJMYW5ndWFnZSJ9In0iPiRUZXh0eyIkRGF0YXsiTGFuZ3VhZ2UifSJ9PC9zcGFuPjwvbGk+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgoKPCEtLSBkdGw6YmxvY2s6Vmlld1JhdGluZyAtLT4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5IFJhdGluZ0xhYmVsIj4kVGV4dHsiUmF0aW5nIn06PC9zcGFuPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnMgLS0+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyIj48aSBjbGFzcz0iaWNvbi1zdGFyIj48L2k+PC9zcGFuPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnMgLS0+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFyc0NvdW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhclRleHQiIHRpdGxlPSIkUURhdGF7IlN0YXJzIn0gJFRleHR7Im91dCBvZiA1In0iPgogICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlN0YXJzIn0gJFRleHR7Im91dCBvZiA1In0KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFyc0NvdW50IC0tPgogICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6Vmlld1JhdGluZyAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdWb3RlcyAtLT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiVm90ZXMifTo8L3NwYW4+IDxzcGFuIHRpdGxlPSIkUURhdGF7IlZvdGVzIn0iPiRRRGF0YXsiVm90ZXMifTwvc3Bhbj48L2xpPgo8IS0tIGR0bDpibG9jazpWaWV3Vm90ZXMgLS0+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+Cgo8IS0tIGR0bDpibG9jazpGQVFWb3RpbmcgLS0+CiAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJGQVFWb3RlIiBjbGFzcz0iUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZvdGluZ0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWb3RpbmdCb3ggVmlzaWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRkFRVm90aW5nIiBjbGFzcz0iRkFRVm90aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IlJhdGluZyJ9OjwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJNZXNzZW5nZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iVm90aW5nUXVlc3Rpb24iPiRUZXh0eyJIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZUxhYmVsQmVmb3JlIj4kVGV4dHsibm90IGhlbHBmdWwifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nUmF0ZVJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJhdGVCdXR0b24kRGF0YXsiVmFsdWUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVCdXR0b24gUmF0ZVVuQ2hlY2tlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLXN0YXItZW1wdHkiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nUmF0ZVJvdyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlTGFiZWxBZnRlciI+JFRleHR7InZlcnkgaGVscGZ1bCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJDdXN0b21lckZBUVpvb20iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlZvdGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNhdGVnb3J5SUQiIHZhbHVlPSIkUURhdGF7IkNhdGVnb3J5SUQifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iJFFEYXRheyJJdGVtSUQifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93IFZvdGluZ0FjdGlvblJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiICBpZD0iUmF0ZVN1Ym1pdEJ1dHRvbiIgY2xhc3M9IkhpZGRlbiIgdmFsdWU9IiRUZXh0eyJTdWJtaXQifSI+JFRleHR7IlN1Ym1pdCJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmF0ZSIgdmFsdWU9IiRRRGF0YXsiU2VsZWN0ZWRSYXRlIn0iaWQ9IlJhdGVWYWx1ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9ybT4KPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nIC0tPgoKICAgIDwvZGl2Pgo8L2Rpdj4KCjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwpGQVEuQ3VzdG9tZXIuRkFRWm9vbS5Jbml0KCk7CgokKCdhLkFzUG9wdXAnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAoJCh0aGlzKS5hdHRyKCdocmVmJyksICdUaWNrZXRBY3Rpb24nKTsKICAgIHJldHVybiBmYWxzZTsKfSk7CgokKCcuUmF0ZUJ1dHRvbicpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICB2YXIgUmF0ZU51bWJlciA9IHBhcnNlSW50KCQodGhpcykuY2xvc2VzdCgnZGl2JykuYXR0cignaWQnKS5yZXBsYWNlKC9SYXRlQnV0dG9uLywgJycpLCAxMCk7CiAgICAkKCcjUmF0ZVZhbHVlJykudmFsKFJhdGVOdW1iZXIpOwogICAgJCgnI1JhdGVTdWJtaXRCdXR0b24nKS5mYWRlSW4oMjUwKTsKICAgICQoJyNGQVFWb3RpbmcnKS5maW5kKCcuUmF0ZUJ1dHRvbicpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIEl0ZW1SYXRlTnVtYmVyID0gcGFyc2VJbnQoJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5hdHRyKCdpZCcpLnJlcGxhY2UoL1JhdGVCdXR0b24vLCAnJyksIDEwKTsKICAgICAgICBpZiAoIEl0ZW1SYXRlTnVtYmVyIDw9IFJhdGVOdW1iZXIgKSB7CiAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ1JhdGVVbkNoZWNrZWQnKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ1JhdGVVbkNoZWNrZWQnKTsKICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnUmF0ZUNoZWNrZWQnKTsKICAgICAgICB9CiAgICB9KTsKfSk7Cjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4K
IyAtLQojIFB1YmxpY0ZBUUV4cGxvcmVyLmR0bC5kdGwgLSBwcm92aWRlcyBIVE1MIGZvciBQdWJsaWNGQVFFeHBsb3Jlci5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJBUklBUm9sZU1haW4iPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IkZBUUhlYWRlciI+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4KICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUiLCI0MCJ9CiAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iRkFRUGF0aENhdGVnb3J5Ij4KICAgICAgICAgICAgPGgzPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgogICAgICAgICAgICAgICAgJENvbmZpZ3siRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2VwYXJhdG9yIn0KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn0iPgogICAgICAgICAgICAgICAgICAgICRRRGF0YXsiTmFtZSJ9CiAgICAgICAgICAgICAgICA8L2E+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIExhcmdlIj4KCjwhLS0gZHRsOmJsb2NrOlF1aWNrU2VhcmNoIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IlNlYXJjaCJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRRRGF0YXsiQWN0aW9uIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IiRRRGF0YXsiTmF2In0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkZ1bGx0ZXh0IiB2YWx1ZT0iJFFEYXRheyJTZWFyY2gifSIgaWQ9IlNlYXJjaCIgdGl0bGU9IiRUZXh0eyJTZWFyY2gifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTZWFyY2gifSI+JFRleHR7IlF1aWNrIFNlYXJjaCJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IldpbGRjYXJkcyBhcmUgYWxsb3dlZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRkFRU2VhcmNoQnV0dG9uIFNwYWNpbmdUb3AiIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JExRRGF0YXsiQWN0aW9uIn07Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7IkFkdmFuY2VkIFNlYXJjaCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UXVpY2tTZWFyY2ggLS0+Cgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3QgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IiREYXRheyJIZWFkZXIifSJ9PC9oMz4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0TmV3c1JTUyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFSU1M7VHlwZT0kTFFEYXRheyJUeXBlIn0iIHRpdGxlPSIkVGV4dHsiJERhdGF7IlRpdGxlIn0ifSIgY2xhc3M9IlJTU0ljb24gQXNCbG9jayI+PGkgY2xhc3M9Imljb24tcnNzIj48L2k+PC9hPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3ROZXdzUlNTIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBGQVFNaW5pTGlzdCI+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik51bWJlciJ9Lgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifSIgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSAoJFFEYXRheyJDYXRlZ29yeU5hbWUifSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIiwiNTAifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJDYXRlZ29yeVNob3J0TmFtZSIsIjE1In0gLSAkUURhdGF7Ikxhbmd1YWdlIn0gLSAkVGV4dHsiJERhdGF7IlN0YXRlIn0ifSAtICRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KCjwhLS0gZHRsOmJsb2NrOlN1YmNhdGVnb3JpZXMgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IlN1YmNhdGVnb3JpZXMifTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9Ik92ZXJ2aWV3IiBzdW1tYXJ5PSJGQVEgY2F0ZWdvcmllcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+JFRleHR7Ik5hbWUifTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+JFRleHR7IkNvbW1lbnQifTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+JFRleHR7IlN1YmNhdGVnb3JpZXMifTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+JFRleHR7IkZBUSBBcnRpY2xlcyJ9PC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CjwhLS0gZHRsOmJsb2NrOk5vQ2F0ZWdvcnlEYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIj4kVGV4dHsiTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4ifTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpOb0NhdGVnb3J5RGF0YUZvdW5kTXNnIC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifSI+JFFEYXRheyJOYW1lIn08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRRRGF0YXsiQ29tbWVudCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRRRGF0YXsiU3ViQ2F0ZWdvcnlDb3VudCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRRRGF0YXsiQXJ0aWNsZUNvdW50In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0Um93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHQgLS0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6U3ViY2F0ZWdvcmllcyAtLT4KCgo8IS0tIGR0bDpibG9jazpGQVFJdGVtTGlzdCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiRkFRIEFydGljbGVzIn08L2gzPgo8IS0tIGR0bDpibG9jazpQYWdpbmF0aW9uIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+JFFEYXRheyJSZXN1bHQifTwvc3Ryb25nPiAkVGV4dHsib2YifSA8c3Ryb25nPiRRRGF0YXsiVG90YWxIaXRzIn08L3N0cm9uZz4gLSAkVGV4dHsiUGFnZSJ9OiAkRGF0YXsiU2l0ZU5hdkJhciJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpQYWdpbmF0aW9uIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9Ik92ZXJ2aWV3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRkFRTnVtYmVyICREYXRheyJGQVFJRFNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O1NvcnRCeT1GQVFJRDtPcmRlcj0kTFFEYXRheyJPcmRlciJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkZBUUhvb2sifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlICREYXRheyJUaXRsZVNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O1NvcnRCeT1UaXRsZTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiVGl0bGUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNhdGVnb3J5ICREYXRheyJDYXRlZ29yeVNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O1NvcnRCeT1DYXRlZ29yeTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2F0ZWdvcnkifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSAkRGF0YXsiTGFuZ3VhZ2VTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtTb3J0Qnk9TGFuZ3VhZ2U7T3JkZXI9JExRRGF0YXsiT3JkZXIifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Ikxhbmd1YWdlIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CjwhLS0gZHRsOmJsb2NrOk5vRkFRRGF0YUZvdW5kTXNnIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyI+JFRleHR7Ik5vIEZBUSBhcnRpY2xlcyBmb3VuZC4ifTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpOb0ZBUURhdGFGb3VuZE1zZyAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiIHRpdGxlPSIkUURhdGF7Ik51bWJlciJ9Ij48YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPSRMUURhdGF7IkZBUUlEIn07Wm9vbUJhY2tMaW5rPSRMUURhdGF7Ilpvb21CYWNrTGluayJ9OyI+JFFEYXRheyJOdW1iZXIifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4kUURhdGF7IlRpdGxlIiwiNjAifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2F0ZWdvcnkiIHRpdGxlPSIkUURhdGF7IkNhdGVnb3J5TmFtZSJ9Ij4kUURhdGF7IkNhdGVnb3J5TmFtZSIsIjQ1In08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJMYW5ndWFnZSIgdGl0bGU9IiRRRGF0YXsiTGFuZ3VhZ2UifSI+JFFEYXRheyJMYW5ndWFnZSIsIjUifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4kUURhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JFFEYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Qm90dG9tU3ViTmF2aWdhdGlvbiAtLT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFJdGVtTGlzdCAtLT4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy8gbWFrZSB3aG9sZSBGQVEgSXRlbSByb3cgY2xpY2thYmxlLCBidXQgbm90IHRoZSBoZWFkZXJzLCBjYW4ndCB1c2UgQ29yZS5DdXN0b21lci5DbGlja2FibGVSb3coKQovLyBzaW5jZSBpdCB1c2VzICJ0YWJsZSB0ciIgYXMgc2VsZWN0b3IsIHNlZSBidWcjOTMyOQokKCJ0Ym9keSB0ciIpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICQoImEiLCB0aGlzKS5hdHRyKCJocmVmIik7CiAgICByZXR1cm4gZmFsc2U7Cn0pOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIFB1YmxpY0ZBUVByaW50LmR0bCAtIHByb3ZpZGVzIEhUTUwgcHJpbnQgdmlldwojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0ibWFpbmhlYWQiPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9OiAkUURhdGF7Ik51bWJlciJ9IC8gJFFEYXRheyJUaXRsZSJ9PC90ZD4KICAgIDwvdHI+CjwvdGFibGU+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMTAiIHdpZHRoPSIxMDAlIj4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPgogICAgICAgICAgICAkVGV4dHsiRkFRLUluZm8ifToKICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI1MCUiIHZhbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiQ2F0ZWdvcnkifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJDYXRlZ29yeU5hbWUifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYW5ndWFnZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7Ikxhbmd1YWdlIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUwJSIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KCjwhLS0gZHRsOmJsb2NrOlJhdGluZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJWb3RlcyJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IlZvdGVzIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJSZXN1bHQifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJWb3RlUmVzdWx0In0gJiMzNzs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmF0aW5nIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYXN0IHVwZGF0ZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8YnIvPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJLZXl3b3JkcyJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOTAlIiBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IktleXdvcmRzIn08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDxocj4KICAgICAgICA8L3RkPgogICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPgogICAgICAgICAgICAkVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9OiAgPHNwYW4gY2xhc3M9InNtYWxsIj4oJFRleHR7IiREYXRheyJTdGF0ZU5hbWUifSJ9KSA8L3NwYW4+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxMCIgY2VsbFBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JERhdGF7IkNvbnRlbnQifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGhyPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgoKPC90YWJsZT4K
IyAtLQojIFB1YmxpY0ZBUVNlYXJjaC5kdGwgLSBwcm92aWRlcyBIVE1MIGZvcm0gZm9yIFB1YmxpY0ZBUVNlYXJjaC5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjwhLS0gZHRsOmJsb2NrOlNlYXJjaCAtLT4KPGRpdiBpZD0iTWFpbkJveCIgY2xhc3M9IlNlYXJjaCBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOdW1iZXIiPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRDb25maWd7IkZBUTo6RkFRSG9vayJ9IiB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIGlkPSJOdW1iZXIiIHNpemU9IjMwIiB2YWx1ZT0iJFFEYXRheyJOdW1iZXIifSIvPgogICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCoifTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkZ1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpIn08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaXRsZSI+JFRleHR7IkZ1bGx0ZXh0In08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7IkZ1bGx0ZXh0In0iIHR5cGU9InRleHQiIGlkPSJGdWxsVGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IkZ1bGx0ZXh0In0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpdGxlIj4kVGV4dHsiVGl0bGUifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiVGl0bGUifSIgdHlwZT0idGV4dCIgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdmFsdWU9IiRRRGF0YXsiVGl0bGUifSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZCI+JFRleHR7IktleXdvcmQifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiS2V5d29yZCJ9IiB0eXBlPSJ0ZXh0IiBpZD0iS2V5d29yZCIgbmFtZT0iS2V5d29yZCIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZCJ9IiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0Pgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJMYW5ndWFnZSJ9OjwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICREYXRheyJMYW5ndWFnZXNTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0Pgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJDYXRlZ29yeSJ9OjwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICREYXRheyJDYXRlZ29yaWVzU3RyZyJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUaW1lU2VhcmNoVHlwZSI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IlZvdGUgcmVzdHJpY3Rpb25zIn08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJObyB2b3RlIHNldHRpbmdzIn0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vVm90ZVNldCIgbmFtZT0iVm90ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgJERhdGF7IlZvdGVTZWFyY2hPcHRpb246Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5vVFZvdGVTZXQiPiRUZXh0eyJBbGwifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSRUZXh0eyJTcGVjaWZpYyB2b3RlcyJ9IHR5cGU9InJhZGlvIiBpZD0iVm90ZVBvaW50IiBuYW1lPSJWb3RlU2VhcmNoT3B0aW9uIiAgdmFsdWU9IlZvdGVQb2ludCIgJERhdGF7IlZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCJ9IC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVm90ZVBvaW50Ij4kVGV4dHsiT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLiJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiVm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmcifQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWb3RlU2VhcmNoIiB2YWx1ZT0iJFFEYXRheyJWb3RlU2VhcmNoIn0iIGNsYXNzPSJXMjVwYyIvPgogICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAifTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUaW1lU2VhcmNoVHlwZSI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IlJhdGUgcmVzdHJpY3Rpb25zIn08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJObyByYXRlIHNldHRpbmdzIn0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vUmF0ZVNldCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgJERhdGF7IlJhdGVTZWFyY2hPcHRpb246Ok5vbmUifSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5vUmF0ZVNldCI+JFRleHR7IkFsbCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9JFRleHR7IlNwZWNpZmljIHJhdGUifSB0eXBlPSJyYWRpbyIgaWQ9IlJhdGVQb2ludCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IlJhdGVQb2ludCIgJERhdGF7IlJhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCJ9IC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmF0ZVBvaW50Ij4kVGV4dHsiT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICREYXRheyJSYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZyJ9CiAgICAgICAgICAgICAgICAgICAgJERhdGF7IlJhdGVTZWFyY2hTZWxlY3Rpb25TdHJpbmcifQogICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSJ9PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiVGltZSByZXN0cmljdGlvbnMifTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7Ik5vIHRpbWUgc2V0dGluZ3MifSIgdHlwZT0icmFkaW8iICBpZD0iTm9UaW1lU2V0IiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IiIgJERhdGF7IlRpbWVTZWFyY2hUeXBlOjpOb25lIn0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1RpbWVTZXQiPiRUZXh0eyJBbGwifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiU3BlY2lmaWMgZGF0ZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGUiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiAgdmFsdWU9IlRpbWVQb2ludCIgJERhdGF7IlRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQifSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRhdGUiPiRUZXh0eyJPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICREYXRheyJJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQifSAkRGF0YXsiSXRlbUNyZWF0ZVRpbWVQb2ludCJ9ICREYXRheyJJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0In0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJEYXRlIHJhbmdlIn0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZVJhbmdlIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiAkRGF0YXsiVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90In0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlUmFuZ2UiPiRUZXh0eyJPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4ifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikl0ZW1DcmVhdGVUaW1lU3RhcnQifSAkVGV4dHsiYW5kIn0gJERhdGF7Ikl0ZW1DcmVhdGVUaW1lU3RvcCJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgIDxkaXYgaWQ9IkJvdHRvbUFjdGlvblJvdyIgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTZWFyY2gifSI+JFRleHR7IlNlYXJjaCJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiT3V0cHV0IHRvIn08L3NwYW4+CiAgICAgICAgICAgICAgICAkRGF0YXsiUmVzdWx0Rm9ybVN0cmcifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KPC9kaXY+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBDb3JlLkN1c3RvbWVyLkluaXRGb2N1cygpOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaCAtLT4K
IyAtLQojIFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlci5kdGwgLSBwcm92aWRlcyBvcGVuc2VhcmNoIGZvcm0gZm9yIFB1YmxpY0ZBUVNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxPcGVuU2VhcmNoRGVzY3JpcHRpb24geG1sbnM9Imh0dHA6Ly9hOS5jb20vLS9zcGVjL29wZW5zZWFyY2gvMS4xLyIgeG1sbnM6aWU9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vU2VhcmNoLzIwMDgvIj4KPFNob3J0TmFtZT4kUXVvdGV7IiRDb25maWd7IlByb2R1Y3ROYW1lIn0ifSAtICRUZXh0eyJQdWJsaWMifSAoJFF1b3RleyIkQ29uZmlneyJGQVE6OkZBUUhvb2sifSJ9KTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiUHVibGljIn0gKCRRdW90ZXsiJENvbmZpZ3siRkFROjpGQVFIb29rIn0ifSk8L0Rlc2NyaXB0aW9uPgo8SW5wdXRFbmNvZGluZz4kRW52eyJVc2VyQ2hhcnNldCJ9PC9JbnB1dEVuY29kaW5nPgo8VXJsIHR5cGU9InRleHQvaHRtbCIgdGVtcGxhdGU9IiRDb25maWd7Ikh0dHBUeXBlIn06Ly8kRW52eyJIVFRQX0hPU1QifSRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7RnVsbHRleHQ9e3NlYXJjaFRlcm1zfSIgLz4KPEltYWdlIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdHlwZT0iaW1hZ2UveC1pY29uIj4kQ29uZmlneyJIdHRwVHlwZSJ9Oi8vJEVudnsiSFRUUF9IT1NUIn0kQ29uZmlneyJGcm9udGVuZDo6SW1hZ2VQYXRoIn1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0LmR0bCAtIHByb3ZpZGVzIG9wZW5zZWFyY2ggZm9ybSBmb3IgQ3VzdG9tZXJGQVFTZWFyY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiUHVibGljIn0gKCRUZXh0eyJGQVFGdWxsdGV4dCJ9KTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiUHVibGljIn0gKCRUZXh0eyJGQVFGdWxsdGV4dCJ9KTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPiRFbnZ7IlVzZXJDaGFyc2V0In08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iJENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtGdWxsdGV4dD17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPiRDb25maWd7Ikh0dHBUeXBlIn06Ly8kRW52eyJIVFRQX0hPU1QifSRDb25maWd7IkZyb250ZW5kOjpJbWFnZVBhdGgifWljb25zL3Byb2R1Y3QuaWNvPC9JbWFnZT4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==
IyAtLQojIFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50LmR0bCAtIGh0bWwgZm9yIHByaW50aW5nIEZBUSBzZWFyY2ggcmVzdWx0cwojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjwhLS0gc3RhcnQgZm9ybSAtLT4KPGk+JERhdGF7Ildhcm5pbmcifTwvaT4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJtYWluaGVhZCI+JFRleHR7IlNlYXJjaCJ9PC90ZD4KICAgIDwvdHI+CjwvdGFibGU+Cjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjQiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGJvZHkiPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJUaXRsZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJDYXRlZ29yeSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiTGFuZ3VhZ2UifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IkNoYW5nZWQifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiTnVtYmVyIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IlRpdGxlIiwiNDAifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIiwiMzAifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7Ikxhbmd1YWdlIn08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFRpbWVMb25neyIkRGF0YXsiQ2hhbmdlZCJ9In08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgo8IS0tIGVuZCBmb3JtIC0tPgo=
IyAtLQojIFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0LmR0bCAtIGh0bWwgZm9yIEZBUSBzZWFyY2ggcmVzdWx0cwojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJUaWNrZXRWaWV3IEFSSUFSb2xlTWFpbiBTZWFyY2hSZXN1bHRzICRDb25maWd7IlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0T3ZlcnZpZXdTb3J0YWJsZSJ9IFNvcnRhYmxlIj4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskUURhdGF7IkxpbmsifSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7ICRUZXh0eyJDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMifQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CjwhLS0gZHRsOmJsb2NrOlBhZ2luYXRpb24gLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz4kUURhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JFFEYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UGFnaW5hdGlvbiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iU2VhcmNoVGVybXMiPgogICAgICAgICAgICA8aDI+JFRleHR7IlNlYXJjaCBSZXN1bHRzIGZvciJ9OjwvaDI+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaFRlcm1zIC0tPgogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICRRRGF0YXsiQXR0cmlidXRlIn06ICRRRGF0YXsiVmFsdWUifQojIGhpZGUgcmVtb3ZlIGxpbmssIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHlldCBpbXBsZW1lbnRlZAojICAgICAgICAgICAgICAgIDxhIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgU2VhcmNoIFRlcm0uIn0iIGhyZWY9IiREYXRheyJTZWFyY2hWYWx1ZSJ9Ij4mdGltZXM7PC9hPgogICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaFRlcm1zIC0tPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8dGFibGUgY2xhc3M9Ik92ZXJ2aWV3Ij4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRkFRTnVtYmVyICREYXRheyJGQVFJRFNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPVNlYXJjaDskUURhdGF7IlByb2ZpbGUifVNvcnRCeT1GQVFJRDtPcmRlcj0kTFFEYXRheyJPcmRlciJ9O1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O0xpbWl0PSRMUURhdGF7IkxpbWl0In07VHlwZT0kTFFEYXRheyJUeXBlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaXRsZSAkRGF0YXsiVGl0bGVTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7JFFEYXRheyJQcm9maWxlIn1Tb3J0Qnk9VGl0bGU7T3JkZXI9JExRRGF0YXsiT3JkZXIifTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj0kTFFEYXRheyJGaWx0ZXIifTtMaW1pdD0kTFFEYXRheyJMaW1pdCJ9O1R5cGU9JExRRGF0YXsiVHlwZSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJUaXRsZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2F0ZWdvcnkgJERhdGF7IkNhdGVnb3J5U29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249U2VhcmNoOyRRRGF0YXsiUHJvZmlsZSJ9U29ydEJ5PUNhdGVnb3J5O09yZGVyPSRMUURhdGF7Ik9yZGVyIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2F0ZWdvcnkifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSAkRGF0YXsiTGFuZ3VhZ2VTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7JFFEYXRheyJQcm9maWxlIn1Tb3J0Qnk9TGFuZ3VhZ2U7T3JkZXI9JExRRGF0YXsiT3JkZXIifTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj0kTFFEYXRheyJGaWx0ZXIifTtMaW1pdD0kTFFEYXRheyJMaW1pdCJ9O1R5cGU9JExRRGF0YXsiVHlwZSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJMYW5ndWFnZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNoYW5nZWQgJERhdGF7IkNoYW5nZWRTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7JFFEYXRheyJQcm9maWxlIn1Tb3J0Qnk9Q2hhbmdlZDtPcmRlcj0kTFFEYXRheyJPcmRlciJ9O1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O0xpbWl0PSRMUURhdGF7IkxpbWl0In07VHlwZT0kTFFEYXRheyJUeXBlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IkNoYW5nZWQifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CiAgICAgICAgICAgICAgICA8dHIgaWQ9IkVtcHR5TWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjYiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIj4kVGV4dHsiTm8gRkFRIGRhdGEgZm91bmQuIn08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk5vRGF0YUZvdW5kTXNnIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgICAgICA8dHIgdGl0bGU9IiRRRGF0YXsiVGlja2V0TnVtYmVyIn0iPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRkFRTnVtYmVyIj48YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPSRMUURhdGF7IkZBUUlEIn07Wm9vbUJhY2tMaW5rPSRMUURhdGF7Ilpvb21CYWNrTGluayJ9OyI+JFFEYXRheyJOdW1iZXIifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iVGl0bGUiPiRRRGF0YXsiVGl0bGUiLCI2MCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNhdGVnb3J5Ij4kUURhdGF7IkNhdGVnb3J5TmFtZSIsIjYwIn08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9Ikxhbmd1YWdlIj4kUURhdGF7Ikxhbmd1YWdlIiwiNSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDaGFuZ2VkIiB0aXRsZT0iJFRpbWVTaG9ydHsiJERhdGF7IkNoYW5nZWQifSJ9Ij4kUURhdGF7IkNoYW5nZWQiLCIyMCJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPgogICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CiAgICA8ZGl2IGlkPSJCb3R0b21BY3Rpb25Sb3ciIGNsYXNzPSJBY3Rpb25Sb3cgQmlnQnV0dG9ucyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249TG9hZFByb2ZpbGU7JExRRGF0YXsiTGluayJ9Ij4KICAgICAgICAgICAgICAgICAgICAmbGFycjsgJFRleHR7IkNoYW5nZSBzZWFyY2ggb3B0aW9ucyJ9CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJUYWJzIFBhZ2luYXRpb24iPgogICAgICAgICAgICA8c3Ryb25nPiRRRGF0YXsiUmVzdWx0In08L3N0cm9uZz4gJFRleHR7Im9mIn0gPHN0cm9uZz4kUURhdGF7IlRvdGFsSGl0cyJ9PC9zdHJvbmc+IC0gJFRleHR7IlBhZ2UifTogJERhdGF7IlNpdGVOYXZCYXIifQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpCb3R0b21TdWJOYXZpZ2F0aW9uIC0tPgo8L2Rpdj4KCjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBDb3JlLkN1c3RvbWVyLkNsaWNrYWJsZVJvdygpOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIFB1YmxpY0ZBUVpvb20uZHRsIC0gcHJvdmlkZXMgSFRNTCBmb3IgUHVibGljRkFRWm9vbS5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJUaWNrZXRab29tIEFSSUFSb2xlTWFpbiI+Cgo8IS0tIGR0bDpibG9jazpCYWNrIC0tPgogICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifTskUURhdGF7Ilpvb21CYWNrTGluayJ9IiBjbGFzcz0iSGlzdG9yeUJhY2siPiZsYXJyOyAkVGV4dHsiQmFjayJ9PC9hPjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QmFjayAtLT4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJGQVFIZWFkZXIiPgogICAgICAgICAgICA8aDIgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSI+CiAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIn0KICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgPHVsIGlkPSJGQVFPcHRpb25zIj4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVByaW50O0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifSIgY2xhc3M9IlByaW50IEFzUG9wdXAiIHRpdGxlPSIkVGV4dHsiUHJpbnQifSI+JFRleHR7IlByaW50In08L2E+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJGQVFQYXRoQ2F0ZWdvcnkgRkFRWm9vbSI+CiAgICAgICAgICAgIDxoMz4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgICAgICRDb25maWd7IkZBUTo6RXhwbG9yZXI6OlBhdGg6OlNlcGFyYXRvciJ9CiAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4KICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifQogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iPgogICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDx1bCBpZD0iTWVzc2FnZXMiPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50SGVhZGVyIC0tPgogICAgICAgICAgICA8bGkgY2xhc3M9IkN1c3RvbWVyIFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJBdHRhY2htZW50cyJ9OjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBdHRhY2htZW50cyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGFiZWwiPiRUZXh0eyJBdHRhY2htZW50In06PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkRvd25sb2FkQXR0YWNobWVudCIgdGl0bGU9IiRUZXh0eyJEb3dubG9hZCBBdHRhY2htZW50In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifTtGaWxlSUQ9JExRRGF0YXsiRmlsZUlEIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiRmlsZW5hbWUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAkUURhdGF7IkZpbGVzaXplIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50Um93IC0tPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iQ3VzdG9tZXIgVmlzaWJsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IiREYXRheyJDYXB0aW9uIn0ifTo8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9InRydWUiIG5hbWU9IkZpZWxkU3RhdGUiPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50SFRNTCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VCb2R5Ij4KIyBVc2UgdGhlIEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIHRvIHByZXZlbnQgcGx1Z2lucyBhbmQgc2NyaXB0cyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSBicm93c2VyLgojIFVzZSBJRSdzIChub24tc3RhbmRhcmQpIHNlY3VyaXR5IGF0dHJpYnV0ZSB0byBhY2hpZXZlIHNvbWV0aGluZyBzaW1pbGFyIGluIG9sZGVyIElFIGJyb3dzZXJzLiBBcHBlbmQgc2Vzc2lvbiBpbmZvIHRvIFVSTCBiZWNhdXNlIElFIHdpbGwgbm90IHNlbmQgY29va2llcy4KIyBTZXQgJ2FsbG93LXBvcHVwcycgdG8gYWxsb3cgSUUxMCsgdG8gb3BlbiBsaW5rcy4gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL3dpa2kvQ2hhbmdlUHJvcG9zYWxzL3NhbmRib3hfYWxsb3dfcG9wdXBzCiAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMiICREYXRheyJNU1NlY3VyaXR5UmVzdHJpY3RlZCJ9IGNsYXNzPSJGQVFGaWVsZCIgaWQ9IklmcmFtZUZBUSRRRGF0YXsiRmllbGQifSIgb25sb2FkPSJpZiAodHlwZW9mIEZBUSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5DdXN0b21lciA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5DdXN0b21lci5GQVFab29tID09PSAnb2JqZWN0JykgeyBGQVEuQ3VzdG9tZXIuRkFRWm9vbS5JZnJhbWVBdXRvSGVpZ2h0KCQoJyNJZnJhbWVGQVEkUURhdGF7IkZpZWxkIn0nKSk7IH07IiBzcmM9IiMiIGRhdGEtc3JjPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVpvb207U3ViYWN0aW9uPUhUTUxWaWV3O0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9O0ZpZWxkPSRRRGF0YXsiRmllbGQifTsiPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnRIVE1MIC0tPgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLkNvbmZpZy5TZXQoJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcsIHBhcnNlSW50KCIkQ29uZmlneyJGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodERlZmF1bHQifSIgfHwgMCwgMTApKTsKICAgIENvcmUuQ29uZmlnLlNldCgnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHRNYXgnLCBwYXJzZUludCgiJENvbmZpZ3siRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHRNYXgifSIgfHwgMCwgMTApKTsKCiAgICAvLyBjb3B5IGRhdGEtc3JjIGF0dHJpYnV0ZSB0byBzcmMgYXR0cmlidXRlIGZvciBhbGwgaWZyYW1lcyB0byBjb3JyZWN0bHkgZGlzcGxheSBpdHMgY29udGVudHMgYWZ0ZXIgSlMgaXMgZnVsbHkgbG9hZGVkCiAgICAkKCdpZnJhbWUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hdHRyKCJzcmMiLCAkKHRoaXMpLmF0dHIoImRhdGEtc3JjIikgKTsKICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudFBsYWluIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXJ0aWNsZUZBUUNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ29udGVudCJ9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudFBsYWluIC0tPgogICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgoKICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgaWQ9Ilpvb21TaWRlYmFyIj4KICAgICAgICAgICAgPHVsIGlkPSJNZXRhZGF0YSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiRkFRIEluZm9ybWF0aW9uIn08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPiRUZXh0eyJBcnRpY2xlIE51bWJlciJ9Ojwvc3Bhbj4gPHNwYW4+JFFEYXRheyJOdW1iZXIifTwvc3Bhbj48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPiRUZXh0eyJDYXRlZ29yeSJ9Ojwvc3Bhbj4gPHNwYW4gdGl0bGU9IiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnlOYW1lIn0ifSI+JFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSJ9PC9zcGFuPjwvbGk+CgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJLZXl3b3Jkc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+JFRleHR7IktleXdvcmRzIn06PC9zcGFuPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5d29yZCIgdGl0bGU9IiRUZXh0eyJTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCJ9OiAkUURhdGF7IktleXdvcmQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7S2V5d29yZD0kTFFEYXRheyJLZXl3b3JkIn0iPiRRRGF0YXsiS2V5d29yZCJ9PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KPCEtLSBkdGw6YmxvY2s6S2V5d29yZHMgLS0+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPiRUZXh0eyJTdGF0ZSJ9Ojwvc3Bhbj4gPHNwYW4gdGl0bGU9IiRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9Ij4kVGV4dHsiJERhdGF7IlN0YXRlIn0ifTwvc3Bhbj48L2xpPgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiTGFuZ3VhZ2UifTo8L3NwYW4+IDxzcGFuIHRpdGxlPSIkVGV4dHsiJERhdGF7Ikxhbmd1YWdlIn0ifSI+JFRleHR7IiREYXRheyJMYW5ndWFnZSJ9In08L3NwYW4+PC9saT4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+Cgo8IS0tIGR0bDpibG9jazpWaWV3UmF0aW5nIC0tPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkgUmF0aW5nTGFiZWwiPiRUZXh0eyJSYXRpbmcifTo8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFycyAtLT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPjxpIGNsYXNzPSJpY29uLXN0YXIiPjwvaT48L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFycyAtLT4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzQ291bnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyVGV4dCIgdGl0bGU9IiRRRGF0YXsiU3RhcnMifSAkVGV4dHsib3V0IG9mIDUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiU3RhcnMifSAkVGV4dHsib3V0IG9mIDUifQogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzQ291bnQgLS0+CiAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpWaWV3UmF0aW5nIC0tPgoKPCEtLSBkdGw6YmxvY2s6Vmlld1ZvdGVzIC0tPgogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPiRUZXh0eyJWb3RlcyJ9Ojwvc3Bhbj4gPHNwYW4gdGl0bGU9IiRRRGF0YXsiVm90ZXMifSI+JFFEYXRheyJWb3RlcyJ9PC9zcGFuPjwvbGk+CjwhLS0gZHRsOmJsb2NrOlZpZXdWb3RlcyAtLT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwpGQVEuQ3VzdG9tZXIuRkFRWm9vbS5Jbml0KCk7CgokKCdhLkFzUG9wdXAnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAoJCh0aGlzKS5hdHRyKCdocmVmJyksICdUaWNrZXRBY3Rpb24nKTsKICAgIHJldHVybiBmYWxzZTsKfSk7Cjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4K
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRL0NhdGVnb3J5LnBtIC0gZmFxIGNhdGVnb3J5IGZ1bmN0aW9ucwojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkZBUTo6Q2F0ZWdvcnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6Q2F0ZWdvcnkgLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpGQVEKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGZhcSBjYXRlZ29yeSBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gQ2F0ZWdvcnlBZGQoKQoKYWRkIGEgY2F0ZWdvcnkKCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgICAgIE5hbWUgICAgID0+ICdDYXRlZ29yeUEnLAogICAgICAgIENvbW1lbnQgID0+ICdTb21lIGNvbW1lbnQnLAogICAgICAgIFBhcmVudElEID0+IDIsCiAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SUQgPSAzNDsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhdGVnb3J5IGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIENhdGVnb3J5QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17UGFyZW50SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBQYXJlbnRJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdGhhdCBQYXJlbnRJRCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nIGJ1dCBudW1iZXIgMCBpcyBhbGxvd2VkCiAgICBpZiAoICRQYXJhbXtQYXJlbnRJRH0gZXEgJycgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJlbnRJRCBjYW5ub3QgYmUgZW1wdHkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGluc2VydCByZWNvcmQKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV9jYXRlZ29yeSAobmFtZSwgcGFyZW50X2lkLCBjb21tZW50cywgdmFsaWRfaWQsIGNyZWF0ZWQsIGNyZWF0ZWRfYnksCiAgICAgICAgICAgICAgICBjaGFuZ2VkLCBjaGFuZ2VkX2J5KQogICAgICAgICAgICBWQUxVRVMgKCA/LCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtQYXJlbnRJRH0sIFwkUGFyYW17Q29tbWVudH0sIFwkUGFyYW17VmFsaWRJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZ2V0IG5ldyBjYXRlZ29yeSBpZAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnkKICAgICAgICAgICAgV0hFUkUgbmFtZSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtOYW1lfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRDYXRlZ29yeUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyBsb2cgbm90aWNlCiAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICBNZXNzYWdlICA9PiAiRkFRQ2F0ZWdvcnk6ICckUGFyYW17TmFtZX0nIENhdGVnb3J5SUQ6ICckQ2F0ZWdvcnlJRCcgIgogICAgICAgICAgICAuICJjcmVhdGVkIHN1Y2Nlc3NmdWxseSAoJFBhcmFte1VzZXJJRH0pISIsCiAgICApOwoKICAgIHJldHVybiAkQ2F0ZWdvcnlJRDsKfQoKPWl0ZW0gQ2F0ZWdvcnlDb3VudCgpCgpDb3VudCB0aGUgbnVtYmVyIG9mIGNhdGVnb3JpZXMuCgogICAgbXkgJENhdGVnb3J5Q291bnQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUNvdW50KAogICAgICAgIFBhcmVudElEcyA9PiBbIDEsIDIsIDMsIDQgXSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUNvdW50ID0gNjsKCj1jdXQKCnN1YiBDYXRlZ29yeUNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17UGFyZW50SURzfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUGFyZW50SURzIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBidWlsZCBTUUwKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIENPVU5UKCopCiAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnkKICAgICAgICBXSEVSRSB2YWxpZF9pZCBJTiAoJyAuIGpvaW4gJywgJywgJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkSURzR2V0KCkgLiAnKSc7CgogICAgIyBwYXJlbnQgaWRzIGFyZSBnaXZlbgogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJlbnRJRHN9ICkgewoKICAgICAgICAjIGludGVnZXIgcXVvdGUgdGhlIHBhcmVudCBpZHMKICAgICAgICBmb3IgbXkgJFBhcmVudElEICggQHsgJFBhcmFte1BhcmVudElEc30gfSApIHsKICAgICAgICAgICAgJFBhcmVudElEID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyZW50SUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiAnLCAnLCBAeyAkUGFyYW17UGFyZW50SURzfSB9OwoKICAgICAgICAkU1FMIC49ICcgQU5EIHBhcmVudF9pZCBJTiAoJyAuICRJblN0cmluZyAuICcpJzsKICAgIH0KCiAgICAjIGFkZCBncm91cCBieQogICAgJFNRTCAuPSAnIEdST1VQIEJZIHBhcmVudF9pZCc7CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDIwMCwKICAgICk7CgogICAgbXkgJENvdW50ID0gMDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJENvdW50Owp9Cgo9aXRlbSBDYXRlZ29yeURlbGV0ZSgpCgpEZWxldGUgYSBjYXRlZ29yeS4KCiAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgIENhdGVnb3J5SUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBEZWxldGVTdWNjZXNzID0gMTsgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgY2F0ZWdvcnkgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBDYXRlZ29yeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXR0cmlidXRlISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgdGhlIGNhdGVnb3J5CiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfY2F0ZWdvcnkKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDYXRlZ29yeUlEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgZ3JvdXBzCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfY2F0ZWdvcnlfZ3JvdXAKICAgICAgICAgICAgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDYXRlZ29yeUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ2F0ZWdvcnlEdXBsaWNhdGVDaGVjaygpCgpjaGVjayBhIGNhdGVnb3J5IGZvciBkdXBsaWNhdGUgbmFtZSB1bmRlciB0aGUgc2FtZSBwYXJlbnQKCiAgICBteSAkRXhpc3RzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEdXBsaWNhdGVDaGVjaygKICAgICAgICBDYXRlZ29yeUlEID0+IDEsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU29tZSBOYW1lJywKICAgICAgICBQYXJlbnRJRCAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEV4aXN0cyA9IDE7ICAgICAgICAgICAgICAgICMgaWYgY2F0ZWdvcnkgbmFtZSBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoZSBzYW1lIHBhcmVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCBpZiB0aGUgbmFtZSBkb2VzIG5vdCBleGlzdHMgd2l0aCB0aGUgc2FtZSBwYXJlbnQKCj1jdXQKCnN1YiBDYXRlZ29yeUR1cGxpY2F0ZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0cwogICAgJFBhcmFte05hbWV9IC8vPSAnJzsKICAgICRQYXJhbXtQYXJlbnRJRH0gfHw9IDA7CiAgICBteSBAVmFsdWVzOwogICAgcHVzaCBAVmFsdWVzLCBcJFBhcmFte05hbWV9OwogICAgcHVzaCBAVmFsdWVzLCBcJFBhcmFte1BhcmVudElEfTsKCiAgICAjIGRiIHF1b3RlCiAgICAkUGFyYW17UGFyZW50SUR9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17UGFyZW50SUR9LCAnSW50ZWdlcicgKTsKCiAgICAjIGJ1aWxkIHNxbAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQKICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgIFdIRVJFIG5hbWUgPSA/CiAgICAgICAgICAgIEFORCBwYXJlbnRfaWQgPSA/CiAgICAgICAgJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJFNRTCAuPSAiIEFORCBpZCAhPSA/IjsKICAgICAgICBwdXNoIEBWYWx1ZXMsIFwkUGFyYW17Q2F0ZWdvcnlJRH07CgogICAgfQoKICAgICMgcHJlcGFyZSBzcWwgc3RhdGVtZW50CiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gXEBWYWx1ZXMsCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRXhpc3RzID0gMTsKICAgIH0KCiAgICByZXR1cm4gJEV4aXN0czsKfQoKPWl0ZW0gQ2F0ZWdvcnlHZXQoKQoKZ2V0IGEgY2F0ZWdvcnkgYXMgaGFzaAoKICAgIG15ICVDYXRlZ29yeSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlQ2F0ZWdvcnkgPSAoLAogICAgICAgIENhdGVnb3J5SUQgPT4gMiwKICAgICAgICBQYXJlbnRJRCAgID0+IDAsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIENvbW1lbnQgICAgPT4gJ1RoaXMgaXMgbXkgZmlyc3QgY2F0ZWdvcnkuJywKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIENhdGVnb3J5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENhdGVnb3J5SUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnQ2F0ZWdvcnlHZXQ6OicgLiAkUGFyYW17Q2F0ZWdvcnlJRH07CiAgICBteSAkQ2FjaGUgICAgPSAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiAkQ2FjaGU7CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBwYXJlbnRfaWQsIG5hbWUsIGNvbW1lbnRzLCB2YWxpZF9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDYXRlZ29yeUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBQYXJlbnRJRCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgQ29tbWVudCAgICA9PiAkUm93WzNdLAogICAgICAgICAgICBWYWxpZElEICAgID0+ICRSb3dbNF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNhY2hlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPlNldCgKICAgICAgICBUeXBlICA9PiAnRkFRJywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDIsCiAgICApOwoKICAgIHJldHVybiAlRGF0YTsKfQoKPWl0ZW0gQ2F0ZWdvcnlHcm91cEdldCgpCgpnZXQgZ3JvdXBzIG9mIGEgY2F0ZWdvcnkKCiAgICBteSAkR3JvdXBBcnJheVJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R3JvdXBHZXQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAzLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRHcm91cEFycmF5UmVmID0gWwogICAgICAgIDIsCiAgICAgICAgOSwKICAgICAgICAxMCwKICAgIF07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlHcm91cEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZ3JvdXBzCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBncm91cF9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cAogICAgICAgICAgICBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgIG15IEBHcm91cHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQEdyb3VwcywgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gXEBHcm91cHM7Cn0KCj1pdGVtIENhdGVnb3J5R3JvdXBHZXRBbGwoKQoKZ2V0IGFsbCBjYXRlZ29yeS1ncm91cHMKCiAgICBteSAkQWxsQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdyb3VwR2V0QWxsKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEFsbENhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4gewogICAgICAgICAgICAyICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDIgID0+IDEsCiAgICAgICAgICAgIDkgID0+IDEsCiAgICAgICAgICAgIDEwID0+IDEsCiAgICAgICAgfSwKICAgICAgICAzID0+IHsKICAgICAgICAgICAgMiAgPT4gMSwKICAgICAgICAgICAgOSAgPT4gMSwKICAgICAgICAgICAgMTAgPT4gMSwKICAgICAgICB9LAogICAgICAgIDQgPT4gewogICAgICAgICAgICAxICA9PiAxLAogICAgICAgICAgICAyICA9PiAxLAogICAgICAgICAgICAzICA9PiAxLAogICAgICAgICAgICA0ICA9PiAxLAogICAgICAgICAgICA1ICA9PiAxLAogICAgICAgICAgICA5ICA9PiAxLAogICAgICAgICAgICAxMCA9PiAxLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIENhdGVnb3J5R3JvdXBHZXRBbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIGlmICggJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfTsKICAgIH0KCiAgICAjIGdldCBncm91cHMKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGdyb3VwX2lkLCBjYXRlZ29yeV9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cCcsCiAgICApOwoKICAgIG15ICVHcm91cHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRHcm91cHN7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSAxOwogICAgfQoKICAgICMgY2FjaGUKICAgICRTZWxmLT57Q2FjaGV9LT57Q2F0ZWdvcnlHcm91cEdldEFsbH0gPSBcJUdyb3VwczsKCiAgICByZXR1cm4gXCVHcm91cHM7Cn0KCj1pdGVtIENhdGVnb3J5TGlzdCgpCgpnZXQgdGhlIGNhdGVnb3J5IGxpc3QgYXMgaGFzaAoKICAgIG15ICRDYXRlZ29yeUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsICAgIyAob3B0aW9uYWwpCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlIYXNoUmVmID0gewogICAgICAgIDAgPT4gewogICAgICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDMgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICAgICAgNCA9PiAnU3ViIENhdGVnb3J5IEInLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIENhdGVnb3J5TGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgbXkgJFZhbGlkID0gMDsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsaWR9ICkgewogICAgICAgICRWYWxpZCA9ICRQYXJhbXtWYWxpZH07CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5TGlzdH0tPnskVmFsaWR9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5TGlzdH0tPnskVmFsaWR9OwogICAgfQoKICAgICMgYnVpbGQgc3FsCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBpZCwgcGFyZW50X2lkLCBuYW1lCiAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnknOwogICAgaWYgKCRWYWxpZCkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgaWRzCiAgICAgICAgJFNRTCAuPSAnIFdIRVJFIHZhbGlkX2lkIElOICgnIC4gam9pbiAnLCAnLCAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRJRHNHZXQoKSAuICcpJzsKICAgIH0KCiAgICAjIHByZXBhcmUgc3FsIHN0YXRlbWVudAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXsgJFJvd1sxXSB9LT57ICRSb3dbMF0gfSA9ICRSb3dbMl07CiAgICB9CgogICAgIyBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUxpc3R9LT57JFZhbGlkfSA9IFwlRGF0YTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aXRlbSBDYXRlZ29yeVNlYXJjaCgpCgpnZXQgdGhlIGNhdGVnb3J5IHNlYXJjaCBhcyBhbiBhcnJheSByZWYKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlTZWFyY2goCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1Rlc3QnLAogICAgICAgIFBhcmVudElEICAgID0+IDMsCiAgICAgICAgUGFyZW50SURzICAgPT4gWyAxLCAzLCA4IF0sCiAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyAyLCA1LCA3IF0sCiAgICAgICAgT3JkZXJCeSAgICAgPT4gJ05hbWUnLAogICAgICAgIFNvcnRCeSAgICAgID0+ICdkb3duJywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SURBcnJheVJlZiA9IFsKICAgICAgICAyLAogICAgXTsKCj1jdXQKCnN1YiBDYXRlZ29yeVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzcWwKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnkKICAgICAgICBXSEVSRSB2YWxpZF9pZCBJTiAoJyAuIGpvaW4gJywgJywgJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkSURzR2V0KCkgLiAnKSc7CiAgICBteSAkRXh0ID0gJyc7CgogICAgIyBzZWFyY2ggZm9yIG5hbWUKICAgIGlmICggZGVmaW5lZCAkUGFyYW17TmFtZX0gKSB7CgogICAgICAgICMgZGIgbGlrZSBxdW90ZQogICAgICAgICRQYXJhbXtOYW1lfSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFte05hbWV9LCAnTGlrZScgKTsKCiAgICAgICAgJEV4dCAuPSAiIEFORCBuYW1lIExJS0UgJyUiIC4gJFBhcmFte05hbWV9IC4gIiUnICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBwYXJlbnQgaWQKICAgIGVsc2lmICggZGVmaW5lZCAkUGFyYW17UGFyZW50SUR9ICkgewoKICAgICAgICAjIGRiIGludGVnZXIgcXVvdGUKICAgICAgICAkUGFyYW17UGFyZW50SUR9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17UGFyZW50SUR9LCAnSW50ZWdlcicgKTsKCiAgICAgICAgJEV4dCAuPSAnIEFORCBwYXJlbnRfaWQgPSAnIC4gJFBhcmFte1BhcmVudElEfTsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgcGFyZW50IGlkcwogICAgZWxzaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte1BhcmVudElEc30KICAgICAgICAmJiByZWYgJFBhcmFte1BhcmVudElEc30gZXEgJ0FSUkFZJwogICAgICAgICYmIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgcGFyZW50IGlkcwogICAgICAgIGZvciBteSAkUGFyZW50SUQgKCBAeyAkUGFyYW17UGFyZW50SURzfSB9ICkgewogICAgICAgICAgICAkUGFyZW50SUQgPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJlbnRJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBzdHJpbmcKICAgICAgICBteSAkSW5TdHJpbmcgPSBqb2luICcsICcsIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH07CgogICAgICAgICRFeHQgPSAnIEFORCBwYXJlbnRfaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNhdGVnb3J5IGlkcwogICAgZWxzaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0NhdGVnb3J5SURzfQogICAgICAgICYmIHJlZiAkUGFyYW17Q2F0ZWdvcnlJRHN9IGVxICdBUlJBWScKICAgICAgICAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgY2F0ZWdvcnkgaWRzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJENhdGVnb3J5SUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiAnLCAnLCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH07CgogICAgICAgICRFeHQgPSAnIEFORCBpZCBJTiAoJyAuICRJblN0cmluZyAuICcpJzsKICAgIH0KCiAgICAjIE9SREVSIEJZCiAgICBpZiAoICRQYXJhbXtPcmRlckJ5fSApIHsKICAgICAgICAkRXh0IC49ICIgT1JERVIgQlkgbmFtZSI7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IHNvcnQgb3JkZXIKICAgICAgICAkUGFyYW17U29ydEJ5fSB8fD0gJ3VwJzsKCiAgICAgICAgIyBTT1JUCiAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSApIHsKICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSBlcSAndXAnICkgewogICAgICAgICAgICAgICAgJEV4dCAuPSAiIEFTQyI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUGFyYW17U29ydEJ5fSBlcSAnZG93bicgKSB7CiAgICAgICAgICAgICAgICAkRXh0IC49ICIgREVTQyI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBTUUwgU1RBVEVNRU5UCiAgICAkU1FMIC49ICRFeHQ7CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDUwMCwKICAgICk7CgogICAgbXkgQExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxATGlzdDsKfQoKPWl0ZW0gQ2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgpCgpnZXQgYWxsIHN1YmNhdGVnb3J5IGlkcyBvZiBvZiBhIGNhdGVnb3J5CgogICAgbXkgJFN1YkNhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgUGFyZW50SUQgICAgID0+IDEsCiAgICAgICAgTW9kZSAgICAgICAgID0+ICdQdWJsaWMnLCAjIChBZ2VudCwgQ3VzdG9tZXIsIFB1YmxpYykKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ3R0JywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWJDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgMywKICAgICAgICA0LAogICAgICAgIDUsCiAgICAgICAgNiwKICAgIF07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUGFyZW50SUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ2F0ZWdvcmllcyA9IHt9OwoKICAgIGlmICggJFBhcmFte01vZGV9ICYmICRQYXJhbXtNb2RlfSBlcSAnQWdlbnQnICkgewoKICAgICAgICAjIGdldCBhZ2VudHMgY2F0ZWdvcmllcwogICAgICAgICRDYXRlZ29yaWVzID0gJFNlbGYtPkdldFVzZXJDYXRlZ29yaWVzKAogICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtNb2RlfSAmJiAkUGFyYW17TW9kZX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgIyBnZXQgY3VzdG9tZXIgY2F0ZWdvcmllcwogICAgICAgICRDYXRlZ29yaWVzID0gJFNlbGYtPkdldEN1c3RvbWVyQ2F0ZWdvcmllcygKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdybycsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMKICAgICAgICAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoCiAgICAgICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAU3ViQ2F0ZWdvcnlJRHM7CiAgICBteSBAVGVtcFN1YkNhdGVnb3J5SURzID0ga2V5cyAleyAkQ2F0ZWdvcmllcy0+eyAkUGFyYW17UGFyZW50SUR9IH0gfTsKICAgIFNVQkNBVEVHT1JZSUQ6CiAgICB3aGlsZSAoQFRlbXBTdWJDYXRlZ29yeUlEcykgewoKICAgICAgICAjIGdldCBuZXh0IHN1YmNhdGVnb3J5IGlkCiAgICAgICAgbXkgJFN1YkNhdGVnb3J5SUQgPSBzaGlmdCBAVGVtcFN1YkNhdGVnb3J5SURzOwoKICAgICAgICAjIGFkZCB0byByZXN1bHQKICAgICAgICBwdXNoIEBTdWJDYXRlZ29yeUlEcywgJFN1YkNhdGVnb3J5SUQ7CgogICAgICAgICMgY2hlY2sgaWYgc3ViY2F0ZWdvcnkgaGFzIG93biBzdWJjYXRlZ29yaWVzCiAgICAgICAgbmV4dCBTVUJDQVRFR09SWUlEIGlmICEkQ2F0ZWdvcmllcy0+eyRTdWJDYXRlZ29yeUlEfTsKCiAgICAgICAgIyBhZGQgbmV3IHN1YmNhdGVnb3JpZXMKICAgICAgICBwdXNoIEBUZW1wU3ViQ2F0ZWdvcnlJRHMsIGtleXMgJXsgJENhdGVnb3JpZXMtPnskU3ViQ2F0ZWdvcnlJRH0gfTsKICAgIH0KCiAgICAjIHNvcnQgc3ViY2F0ZWdvcmllcyBudW1lcmljYWxseQogICAgQFN1YkNhdGVnb3J5SURzID0gc29ydCB7ICRhIDw9PiAkYiB9IEBTdWJDYXRlZ29yeUlEczsKCiAgICByZXR1cm4gXEBTdWJDYXRlZ29yeUlEczsKfQoKPWl0ZW0gQ2F0ZWdvcnlUcmVlTGlzdCgpCgpnZXQgYWxsIGNhdGVnb3JpZXMgYXMgdHJlZSAod2l0aCB0aGVpciBsb25nIG5hbWVzKQoKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLCAgIyAoMHwxLCBvcHRpb25hbCkKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeVRyZWUgPSB7CiAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIDMgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgNCA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBCJywKICAgIH07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlUcmVlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgbXkgJFZhbGlkID0gMDsKICAgIGlmICggJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkVmFsaWQgPSAkUGFyYW17VmFsaWR9OwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIGlmICggJFNlbGYtPntDYWNoZX0tPntHZXRDYXRlZ29yeVRyZWV9LT57JFZhbGlkfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntHZXRDYXRlZ29yeVRyZWV9LT57JFZhbGlkfTsKICAgIH0KCiAgICAjIGJ1aWxkIHNxbAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIHBhcmVudF9pZCwgbmFtZQogICAgICAgIEZST00gZmFxX2NhdGVnb3J5JzsKCiAgICAjIGFkZCB3aGVyZSBjbGF1c2UgZm9yIHZhbGlkIGNhdGVnb3JpZXMKICAgIGlmICgkVmFsaWQpIHsKICAgICAgICAkU1FMIC49ICcgV0hFUkUgdmFsaWRfaWQgSU4gKCcgLiBqb2luICcsICcsICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZElEc0dldCgpIC4gJyknOwogICAgfQoKICAgICMgcHJlcGFyZSBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICRTUUwsCiAgICApOwoKICAgICMgZmV0Y2ggcmVzdWx0CiAgICBteSAlQ2F0ZWdvcnlNYXA7CiAgICBteSAlQ2F0ZWdvcnlOYW1lTG9va3VwOwogICAgbXkgJVBhcmVudElETG9va3VwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ2F0ZWdvcnlNYXB7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSAkUm93WzJdOwogICAgICAgICRDYXRlZ29yeU5hbWVMb29rdXB7ICRSb3dbMF0gfSAgICAgICA9ICRSb3dbMl07CiAgICAgICAgJFBhcmVudElETG9va3VweyAkUm93WzBdIH0gICAgICAgICAgID0gJFJvd1sxXTsKICAgIH0KCiAgICAjIHRvIHN0b3JlIHRoZSBjYXRlZ29yeSB0cmVlCiAgICBteSAlQ2F0ZWdvcnlUcmVlOwoKICAgICMgY2hlY2sgYWxsIHBhcmVudCBpZHMKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlQ2F0ZWdvcnlNYXAgKSB7CgogICAgICAgICMgZ2V0IHN1YmNhdGVnb3JpZXMgYW5kIG5hbWVzIGZvciB0aGlzIHBhcmVudCBpZAogICAgICAgIHdoaWxlICggbXkgKCAkQ2F0ZWdvcnlJRCwgJENhdGVnb3J5TmFtZSApID0gZWFjaCAleyAkQ2F0ZWdvcnlNYXB7JFBhcmVudElEfSB9ICkgewoKICAgICAgICAgICAgIyBsb29rdXAgdGhlIHBhcmVudHMgbmFtZQogICAgICAgICAgICBteSAkTmV3UGFyZW50SUQgPSAkUGFyZW50SUQ7CiAgICAgICAgICAgIHdoaWxlICgkTmV3UGFyZW50SUQpIHsKCiAgICAgICAgICAgICAgICAjIHByZWFwZW5kIHBhcmVudHMgY2F0ZWdvcnkgbmFtZQogICAgICAgICAgICAgICAgaWYgKCAkQ2F0ZWdvcnlOYW1lTG9va3VweyROZXdQYXJlbnRJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENhdGVnb3J5TmFtZSA9ICRDYXRlZ29yeU5hbWVMb29rdXB7JE5ld1BhcmVudElEfSAuICc6OicgLiAkQ2F0ZWdvcnlOYW1lOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZ2V0IHVwIG9uZSBwYXJlbnQgbGV2ZWwKICAgICAgICAgICAgICAgICROZXdQYXJlbnRJRCA9ICRQYXJlbnRJRExvb2t1cHskTmV3UGFyZW50SUR9IHx8IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGNhdGVnb3J5IHRvIHRyZWUKICAgICAgICAgICAgJENhdGVnb3J5VHJlZXskQ2F0ZWdvcnlJRH0gPSAkQ2F0ZWdvcnlOYW1lOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+e0dldENhdGVnb3J5VHJlZX0tPnskVmFsaWR9ID0gXCVDYXRlZ29yeVRyZWU7CgogICAgcmV0dXJuIFwlQ2F0ZWdvcnlUcmVlOwp9Cgo9aXRlbSBDYXRlZ29yeVVwZGF0ZSgpCgp1cGRhdGUgYSBjYXRlZ29yeQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlVcGRhdGUoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAyLAogICAgICAgIFBhcmVudElEICAgPT4gMSwKICAgICAgICBOYW1lICAgICAgID0+ICdTb21lIENhdGVnb3J5JywKICAgICAgICBDb21tZW50ICAgID0+ICdzb21lIGNvbW1lbnQnLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYXRlZ29yeSBjb3VsZCBub3QgYmUgdXBkYXRlZAoKPWN1dAoKc3ViIENhdGVnb3J5VXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBQYXJlbnRJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoYXQgUGFyZW50SUQgaXMgbm90IGFuIGVtcHR5IHN0cmluZyBidXQgbnVtYmVyIDAgaXMgYWxsb3dlZAogICAgaWYgKCAkUGFyYW17UGFyZW50SUR9IGVxICcnICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyZW50SUQgY2Fubm90IGJlIGVtcHR5ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBmYXFfY2F0ZWdvcnkKICAgICAgICAgICAgU0VUIHBhcmVudF9pZCA9ID8sIG5hbWUgPSA/LCBjb21tZW50cyA9ID8sIHZhbGlkX2lkID0gPywgY2hhbmdlZCA9IGN1cnJlbnRfdGltZXN0YW1wLAogICAgICAgICAgICAgICAgY2hhbmdlZF9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtQYXJlbnRJRH0sIFwkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIFwkUGFyYW17Q29tbWVudH0sICBcJFBhcmFte1ZhbGlkSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sICAgXCRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGxvZyBub3RpY2UKICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgIE1lc3NhZ2UgID0+ICJGQVFDYXRlZ29yeTogJyRQYXJhbXtOYW1lfScgIgogICAgICAgICAgICAuICJJRDogJyRQYXJhbXtDYXRlZ29yeUlEfScgdXBkYXRlZCBzdWNjZXNzZnVsbHkgKCRQYXJhbXtVc2VySUR9KSEiLAogICAgKTsKCiAgICAjIGRlbGV0ZSBhbGwgY2FjaGUsIGFzIEZBUUdldCgpIHdpbGwgYmUgYWxzbyBhZmZlY3RlZC4KICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBBZ2VudENhdGVnb3J5U2VhcmNoKCkKCmdldCB0aGUgY2F0ZWdvcnkgc2VhcmNoIGFzIGFycmF5IHJlZgoKICAgIG15ICRDYXRlZ29yeUlEQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5BZ2VudENhdGVnb3J5U2VhcmNoKAogICAgICAgIFBhcmVudElEID0+IDMsICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SURBcnJheVJlZiA9IFsKICAgICAgICAnNCcsCiAgICAgICAgJzgnLAogICAgXTsKCj1jdXQKCnN1YiBBZ2VudENhdGVnb3J5U2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHBhcmVudCBpZAogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17UGFyZW50SUR9ICkgewogICAgICAgICRQYXJhbXtQYXJlbnRJRH0gPSAwOwogICAgfQogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAlQ2F0ZWdvcnkgPSAleyAkQ2F0ZWdvcmllcy0+eyAkUGFyYW17UGFyZW50SUR9IH0gfTsKICAgIG15IEBDYXRlZ29yeUlEcyA9IHNvcnQgeyAkQ2F0ZWdvcnl7JGF9IGNtcCAkQ2F0ZWdvcnl7JGJ9IH0gKCBrZXlzICVDYXRlZ29yeSApOwoKICAgIHJldHVybiBcQENhdGVnb3J5SURzOwp9Cgo9aXRlbSBDdXN0b21lckNhdGVnb3J5U2VhcmNoKCkKCmdldCB0aGUgY2F0ZWdvcnkgc2VhcmNoIGFzIGhhc2gKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gQHskRkFRT2JqZWN0LT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgIEN1c3RvbWVyVXNlciAgPT4gJ3R0JywKICAgICAgICBQYXJlbnRJRCAgICAgID0+IDMsICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCkKICAgICAgICBNb2RlICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKX07CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgJzQnLAogICAgICAgICc4JywKICAgIF07Cgo9Y3V0CgpzdWIgQ3VzdG9tZXJDYXRlZ29yeVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDdXN0b21lclVzZXIgTW9kZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyZW50IGlkCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgJFBhcmFte1BhcmVudElEfSA9IDA7CiAgICB9CgogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVDYXRlZ29yeSA9ICV7ICRDYXRlZ29yaWVzLT57ICRQYXJhbXtQYXJlbnRJRH0gfSB9OwogICAgbXkgQENhdGVnb3J5SURzID0gc29ydCB7ICRDYXRlZ29yeXskYX0gY21wICRDYXRlZ29yeXskYn0gfSAoIGtleXMgJUNhdGVnb3J5ICk7CgogICAgbXkgQEFsbG93ZWRDYXRlZ29yeUlEczsKICAgIG15ICVBcnRpY2xlczsKCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnQ3VzdG9tZXJDYXRlZ29yeVNlYXJjaDo6QXJ0aWNsZXMnOwogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+eyRDYWNoZUtleX0gKSB7CiAgICAgICAgJUFydGljbGVzID0gJXsgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9IH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgICAgICBteSAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZElEc0dldCgpOwoKICAgICAgICBteSAkU1FMID0gIgogICAgICAgICAgICBTRUxFQ1QgZmFxX2l0ZW0uaWQsIGZhcV9pdGVtLmNhdGVnb3J5X2lkCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0sIGZhcV9zdGF0ZV90eXBlLCBmYXFfc3RhdGUKICAgICAgICAgICAgV0hFUkUgZmFxX3N0YXRlLmlkID0gZmFxX2l0ZW0uc3RhdGVfaWQKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGUudHlwZV9pZCA9IGZhcV9zdGF0ZV90eXBlLmlkCiAgICAgICAgICAgICAgICBBTkQgZmFxX3N0YXRlX3R5cGUubmFtZSAhPSAnaW50ZXJuYWwnCiAgICAgICAgICAgICAgICBBTkQgZmFxX2l0ZW0udmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykKICAgICAgICAgICAgICAgIEFORCBmYXFfaXRlbS5hcHByb3ZlZCA9IDEiOwoKICAgICAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJFNRTCwKICAgICAgICApOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRBcnRpY2xlc3sgJFJvd1sxXSB9Kys7CiAgICAgICAgfQoKICAgICAgICAjIGNhY2hlCiAgICAgICAgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9ID0gXCVBcnRpY2xlczsKICAgIH0KCiAgICBmb3IgbXkgJENhdGVnb3J5SUQgKEBDYXRlZ29yeUlEcykgewoKICAgICAgICAjIGdldCBhbGwgc3ViY2F0ZWdvcnkgaWRzIGZvciB0aGlzIGNhdGVnb3J5CiAgICAgICAgbXkgJFN1YkNhdGVnb3J5SURzID0gJFNlbGYtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgIFBhcmVudElEICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhpcyBjYXRlZ29yeSBpZAogICAgICAgIG15IEBJRHMgPSAoICRDYXRlZ29yeUlELCBAeyRTdWJDYXRlZ29yeUlEc30gKTsKCiAgICAgICAgIyBjaGVjayBpZiBjYXRlZ29yeSBjb250YWlucyBhcnRpY2xlcyB3aXRoIHN0YXRlIGV4dGVybmFsIG9yIHB1YmxpYwogICAgICAgIElEOgogICAgICAgIGZvciBteSAkSUQgKEBJRHMpIHsKICAgICAgICAgICAgbmV4dCBJRCBpZiAhJEFydGljbGVzeyRJRH07CiAgICAgICAgICAgIHB1c2ggQEFsbG93ZWRDYXRlZ29yeUlEcywgJENhdGVnb3J5SUQ7CiAgICAgICAgICAgIGxhc3QgSUQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcQEFsbG93ZWRDYXRlZ29yeUlEczsKfQoKPWl0ZW0gUHVibGljQ2F0ZWdvcnlTZWFyY2goKQoKZ2V0IHRoZSBjYXRlZ29yeSBzZWFyY2ggYXMgaGFzaAoKICAgIG15ICRDYXRlZ29yeUlEQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5QdWJsaWNDYXRlZ29yeVNlYXJjaCgKICAgICAgICBQYXJlbnRJRCAgICAgID0+IDMsICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCkKICAgICAgICBNb2RlICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgJzQnLAogICAgICAgICc4JywKICAgIF07Cgo9Y3V0CgpzdWIgUHVibGljQ2F0ZWdvcnlTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTW9kZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkUGFyYW17UGFyZW50SUR9ID0gMDsKICAgIH0KCiAgICBteSAkQ2F0ZWdvcnlMaXN0Q2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gW10gaWYgISRDYXRlZ29yeUxpc3RDYXRlZ29yaWVzLT57ICRQYXJhbXtQYXJlbnRJRH0gfTsKCiAgICBteSAlQ2F0ZWdvcnkgPSAleyAkQ2F0ZWdvcnlMaXN0Q2F0ZWdvcmllcy0+eyAkUGFyYW17UGFyZW50SUR9IH0gfTsKICAgIG15IEBDYXRlZ29yeUlEcyA9IHNvcnQgeyAkQ2F0ZWdvcnl7JGF9IGNtcCAkQ2F0ZWdvcnl7JGJ9IH0gKCBrZXlzICVDYXRlZ29yeSApOwogICAgbXkgQEFsbG93ZWRDYXRlZ29yeUlEczsKCiAgICAjIGJ1aWxkIHZhbGlkIGlkIHN0cmluZwogICAgbXkgJFZhbGlkSURzU3RyaW5nID0gam9pbiAnLCAnLCAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRJRHNHZXQoKTsKCiAgICBmb3IgbXkgJENhdGVnb3J5SUQgKEBDYXRlZ29yeUlEcykgewoKICAgICAgICAjIGdldCBhbGwgc3ViY2F0ZWdvcnkgaWRzIGZvciB0aGlzIGNhdGVnb3J5CiAgICAgICAgbXkgJFN1YkNhdGVnb3J5SURzID0gJFNlbGYtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgIFBhcmVudElEICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhpcyBjYXRlZ29yeSBpZAogICAgICAgIG15IEBJRHMgPSAoICRDYXRlZ29yeUlELCBAeyRTdWJDYXRlZ29yeUlEc30gKTsKCiAgICAgICAgIyBjaGVjayBpZiBjYXRlZ29yeSBjb250YWlucyBhcnRpY2xlcyB3aXRoIHN0YXRlIHB1YmxpYwogICAgICAgIG15ICRGb3VuZEFydGljbGUgPSAwOwoKICAgICAgICBteSAkU1FMID0gIgogICAgICAgICAgICBTRUxFQ1QgZmFxX2l0ZW0uaWQKICAgICAgICAgICAgRlJPTSBmYXFfaXRlbSwgZmFxX3N0YXRlX3R5cGUsIGZhcV9zdGF0ZQogICAgICAgICAgICBXSEVSRSBmYXFfaXRlbS5jYXRlZ29yeV9pZCA9ID8KICAgICAgICAgICAgICAgIEFORCBmYXFfaXRlbS52YWxpZF9pZCBJTiAoJFZhbGlkSURzU3RyaW5nKQogICAgICAgICAgICAgICAgQU5EIGZhcV9zdGF0ZS5pZCA9IGZhcV9pdGVtLnN0YXRlX2lkCiAgICAgICAgICAgICAgICBBTkQgZmFxX3N0YXRlLnR5cGVfaWQgPSBmYXFfc3RhdGVfdHlwZS5pZAogICAgICAgICAgICAgICAgQU5EIGZhcV9zdGF0ZV90eXBlLm5hbWUgPSAncHVibGljJwogICAgICAgICAgICAgICAgQU5EIGZhcV9pdGVtLmFwcHJvdmVkID0gMSI7CgogICAgICAgIElEOgogICAgICAgIGZvciBteSAkSUQgKEBJRHMpIHsKICAgICAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgICAgICBCaW5kICA9PiBbIFwkSUQgXSwKICAgICAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICAkRm91bmRBcnRpY2xlID0gJFJvd1swXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsYXN0IElEIGlmICRGb3VuZEFydGljbGU7CiAgICAgICAgfQoKICAgICAgICAjIGFuIGFydGljbGUgd2FzIGZvdW5kCiAgICAgICAgaWYgKCRGb3VuZEFydGljbGUpIHsKICAgICAgICAgICAgcHVzaCBAQWxsb3dlZENhdGVnb3J5SURzLCAkQ2F0ZWdvcnlJRDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFxAQWxsb3dlZENhdGVnb3J5SURzOwoKfQoKPWl0ZW0gR2V0VXNlckNhdGVnb3JpZXMoKQoKZ2V0IHVzZXIgY2F0ZWdvcnktZ3JvdXBzCgogICAgbXkgJFVzZXJDYXRlZ29yeUdyb3VwSGFzaFJlZiA9ICRGQVFPYmplY3QtPkdldFVzZXJDYXRlZ29yaWVzKAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFVzZXJDYXRlZ29yeUdyb3VwSGFzaFJlZiA9IHsKICAgICAgICAxID0+IHt9LAogICAgICAgIDAgPT4gewogICAgICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDMgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICAgICAgNCA9PiAnU3ViIENhdGVnb3J5IEInLAogICAgICAgIH0sCiAgICAgICAgMyA9PiB7fSwKICAgICAgICA0ID0+IHt9LAogICAgfTsKCj1jdXQKCnN1YiBHZXRVc2VyQ2F0ZWdvcmllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUeXBlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJENhdGVnb3J5R3JvdXBzID0gJFNlbGYtPkNhdGVnb3J5R3JvdXBHZXRBbGwoCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKICAgIG15ICVVc2VyR3JvdXBzOwogICAgaWYgKCAhJFNlbGYtPntDYWNoZX0tPntHZXRVc2VyQ2F0ZWdvcmllc30tPntHcm91cE1lbWJlckxpc3R9ICkgewogICAgICAgICVVc2VyR3JvdXBzID0gJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntDYWNoZX0tPntHZXRVc2VyQ2F0ZWdvcmllc30tPntHcm91cE1lbWJlckxpc3R9ID0gXCVVc2VyR3JvdXBzOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJVVzZXJHcm91cHMgPSAleyAkU2VsZi0+e0NhY2hlfS0+e0dldFVzZXJDYXRlZ29yaWVzfS0+e0dyb3VwTWVtYmVyTGlzdH0gfTsKICAgIH0KCiAgICBteSAkVXNlckNhdGVnb3JpZXMgPSAkU2VsZi0+X1VzZXJDYXRlZ29yaWVzKAogICAgICAgIENhdGVnb3JpZXMgICAgID0+ICRDYXRlZ29yaWVzLAogICAgICAgIENhdGVnb3J5R3JvdXBzID0+ICRDYXRlZ29yeUdyb3VwcywKICAgICAgICBVc2VyR3JvdXBzICAgICA9PiBcJVVzZXJHcm91cHMsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkVXNlckNhdGVnb3JpZXM7Cn0KCj1pdGVtIEdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzKCkKCmdldCB1c2VyIGNhdGVnb3J5LWdyb3VwcyAoc2hvdyBjYXRlZ29yeSBsb25nIG5hbWVzKQoKICAgIG15ICRVc2VyQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRVc2VyQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIDMgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgNCA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgIH07Cgo9Y3V0CgpzdWIgR2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNhdGVnb3JpZXMgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBteSAkVXNlckNhdGVnb3JpZXMgPSAkU2VsZi0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgdXNlciBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJVVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzOwoKICAgICMgZ2V0IHRoZSBsb25nIG5hbWVzIG9mIHRoZSBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgUEFSRU5USUQ6CiAgICBmb3IgbXkgJFBhcmVudElEICggc29ydCBrZXlzICV7JFVzZXJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiAhJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfTsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmIHJlZiAkVXNlckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IG5lICdIQVNIJzsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEleyAkVXNlckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH07CgogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIHNvcnQga2V5cyAleyAkVXNlckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lc3skQ2F0ZWdvcnlJRH0gPSAkQ2F0ZWdvcnlUcmVlLT57JENhdGVnb3J5SUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lczsKfQoKPWl0ZW0gR2V0Q3VzdG9tZXJDYXRlZ29yaWVzKCkKCmdldCBjdXN0b21lciB1c2VyIGNhdGVnb3JpZXMKCiAgICBteSAkQ3VzdG9tZXJVc2VyQ2F0ZWdvcnlIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnaGFucycsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdydycsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ3VzdG9tZXJVc2VyQ2F0ZWdvcnlIYXNoUmVmID0gewogICAgICAgIDEgPT4ge30sCiAgICAgICAgMCA9PiB7CiAgICAgICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgfSwKICAgICAgICAyID0+IHsKICAgICAgICAgICAgMyA9PiAnU3ViIENhdGVnb3J5IEEnLAogICAgICAgICAgICA0ID0+ICdTdWIgQ2F0ZWdvcnkgQicsCiAgICAgICAgfSwKICAgICAgICAzID0+IHt9LAogICAgICAgIDQgPT4ge30sCiAgICB9OwoKPWN1dAoKc3ViIEdldEN1c3RvbWVyQ2F0ZWdvcmllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDdXN0b21lclVzZXIgVHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdHZXRDdXN0b21lckNhdGVnb3JpZXM6OkN1c3RvbWVyVXNlcjo6JyAuICRQYXJhbXtDdXN0b21lclVzZXJ9OwogICAgaWYgKCBkZWZpbmVkICRTZWxmLT57Q2FjaGV9LT57JENhY2hlS2V5fSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9OwogICAgfQoKICAgICMgZ2V0IGFsbCB2YWxpZCBjYXRlZ29yaWVzCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAkQ2F0ZWdvcnlHcm91cHMgPSAkU2VsZi0+Q2F0ZWdvcnlHcm91cEdldEFsbCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVVc2VyR3JvdXBzID0gJFNlbGYtPntDdXN0b21lckdyb3VwT2JqZWN0fS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgKTsKCiAgICBteSAkQ3VzdG9tZXJDYXRlZ29yaWVzID0gJFNlbGYtPl9Vc2VyQ2F0ZWdvcmllcygKICAgICAgICBDYXRlZ29yaWVzICAgICA9PiAkQ2F0ZWdvcmllcywKICAgICAgICBDYXRlZ29yeUdyb3VwcyA9PiAkQ2F0ZWdvcnlHcm91cHMsCiAgICAgICAgVXNlckdyb3VwcyAgICAgPT4gXCVVc2VyR3JvdXBzLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+eyRDYWNoZUtleX0gPSAkQ3VzdG9tZXJDYXRlZ29yaWVzOwoKICAgIHJldHVybiAkQ3VzdG9tZXJDYXRlZ29yaWVzOwp9Cgo9aXRlbSBHZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoKQoKZ2V0IGN1c3RvbWVyIGNhdGVnb3J5LWdyb3VwcyAoc2hvdyBjYXRlZ29yeSBsb25nIG5hbWVzKQoKICAgIG15ICRDdXN0b21lckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnaGFucycsCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ3VzdG9tZXJDYXRlZ29yeUdyb3VwSGFzaFJlZiA9IHsKICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgMyA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgICAgICA0ID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgfTsKCj1jdXQKCnN1YiBHZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ3VzdG9tZXJVc2VyIFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJEN1c3RvbWVyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgIFR5cGUgICAgICAgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGV4dHJhY3QgY2F0ZWdvcnkgaWRzCiAgICBteSAlQWxsQ2F0ZWdvcnlJRHM7CiAgICBmb3IgbXkgJFBhcmVudElEICggc29ydCBrZXlzICV7JEN1c3RvbWVyQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRBbGxDYXRlZ29yeUlEc3skQ2F0ZWdvcnlJRH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgY3VzdG9tZXIgY2F0ZWdvcnkgaWRzCiAgICBteSBAQ3VzdG9tZXJDYXRlZ29yeUlEczsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIDAsIGtleXMgJUFsbENhdGVnb3J5SURzICkgewogICAgICAgIHB1c2ggQEN1c3RvbWVyQ2F0ZWdvcnlJRHMsIEB7CiAgICAgICAgICAgICRTZWxmLT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgICAgICAgICAgUGFyZW50SUQgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGJ1aWxkIGN1c3RvbWVyIGNhdGVnb3J5IGhhc2gKICAgICRDdXN0b21lckNhdGVnb3JpZXMgPSB7fTsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQEN1c3RvbWVyQ2F0ZWdvcnlJRHMpIHsKICAgICAgICBteSAlQ2F0ZWdvcnkgPSAkU2VsZi0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57ICRDYXRlZ29yeXtQYXJlbnRJRH0gfS0+eyAkQ2F0ZWdvcnl7Q2F0ZWdvcnlJRH0gfSA9ICRDYXRlZ29yeXtOYW1lfTsKICAgIH0KCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHVzZXIgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICVDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXM7CgogICAgIyBnZXQgdGhlIGxvbmcgbmFtZXMgb2YgdGhlIGNhdGVnb3JpZXMgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IGtleXMgJXskQ3VzdG9tZXJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiAhJEN1c3RvbWVyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH07CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiByZWYgJEN1c3RvbWVyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gbmUgJ0hBU0gnOwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISV7ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH07CgogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIHNvcnQga2V5cyAleyAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkQ3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzeyRDYXRlZ29yeUlEfSA9ICRDYXRlZ29yeVRyZWUtPnskQ2F0ZWdvcnlJRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUN1c3RvbWVyQ2F0ZWdvcmllc0xvbmdOYW1lczsKfQoKPWl0ZW0gR2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygpCgpnZXQgcHVibGljIGNhdGVnb3J5LWdyb3VwcyAoc2hvdyBjYXRlZ29yeSBsb25nIG5hbWVzKQoKICAgIG15ICRQdWJsaWNDYXRlZ29yeUdyb3VwSGFzaFJlZiA9ICRGQVFPYmplY3QtPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkUHVibGljQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIDMgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgNCA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgIH07Cgo9Y3V0CgpzdWIgR2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUeXBlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMKICAgIG15ICRQdWJsaWNDYXRlZ29yaWVzID0gJFNlbGYtPkNhdGVnb3J5TGlzdCggVXNlcklEID0+ICRQYXJhbXtVc2VySUR9ICk7CgogICAgIyBleHRyYWN0IGNhdGVnb3J5IGlkcwogICAgbXkgJUFsbENhdGVnb3J5SURzOwogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRQdWJsaWNDYXRlZ29yaWVzfSApIHsKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXsgJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRBbGxDYXRlZ29yeUlEc3skQ2F0ZWdvcnlJRH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgcHVibGljIGNhdGVnb3J5IGlkcwogICAgbXkgQFB1YmxpY0NhdGVnb3J5SURzOwogICAgZm9yIG15ICRDYXRlZ29yeUlEICggMCwga2V5cyAlQWxsQ2F0ZWdvcnlJRHMgKSB7CiAgICAgICAgcHVzaCBAUHVibGljQ2F0ZWdvcnlJRHMsIEB7CiAgICAgICAgICAgICRTZWxmLT5QdWJsaWNDYXRlZ29yeVNlYXJjaCgKICAgICAgICAgICAgICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgTW9kZSAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICkKICAgICAgICB9OwogICAgfQoKICAgICMgYnVpbGQgcHVibGljIGNhdGVnb3J5IGhhc2gKICAgICRQdWJsaWNDYXRlZ29yaWVzID0ge307CiAgICBmb3IgbXkgJENhdGVnb3J5SUQgKEBQdWJsaWNDYXRlZ29yeUlEcykgewogICAgICAgIG15ICVDYXRlZ29yeSA9ICRTZWxmLT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRQdWJsaWNDYXRlZ29yaWVzLT57ICRDYXRlZ29yeXtQYXJlbnRJRH0gfS0+eyAkQ2F0ZWdvcnl7Q2F0ZWdvcnlJRH0gfSA9ICRDYXRlZ29yeXtOYW1lfTsKICAgIH0KCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHVzZXIgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICVQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzOwoKICAgICMgZ2V0IHRoZSBsb25nIG5hbWVzIG9mIHRoZSBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgUEFSRU5USUQ6CiAgICBmb3IgbXkgJFBhcmVudElEICggc29ydCBrZXlzICV7JFB1YmxpY0NhdGVnb3JpZXN9ICkgewoKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEkUHVibGljQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH07CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiByZWYgJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9IG5lICdIQVNIJzsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEleyAkUHVibGljQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfTsKCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRQdWJsaWNDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkUHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lc3skQ2F0ZWdvcnlJRH0gPSAkQ2F0ZWdvcnlUcmVlLT57JENhdGVnb3J5SUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzOwp9Cgo9aXRlbSBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oKQoKZ2V0IHVzZXIgcGVybWlzc2lvbiBmb3IgYSBjYXRlZ29yeQoKICAgIG15ICRQZXJtaXNzaW9uU3RyaW5nID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIENhdGVnb3J5SUQgPT4gJzEyMycsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFBlcm1pc3Npb25TdHJpbmcgPSAncncnOyAgICAgICAgICAgICAgICMgb3IgJ3JvJyBvciAnJwoKPWN1dAoKc3ViIENoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFVzZXJDYXRlZ29yaWVzID0gJFNlbGYtPkdldFVzZXJDYXRlZ29yaWVzKAogICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgZm9yIG15ICRQZXJtaXNzaW9uIChxdyhydyBybykpIHsKICAgICAgICBmb3IgbXkgJFBhcmVudElEICggc29ydCBrZXlzICV7JFVzZXJDYXRlZ29yaWVzfSApIHsKICAgICAgICAgICAgbXkgJENhdGVnb3JpZXMgPSAkVXNlckNhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXskQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRDYXRlZ29yeUlEID09ICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFBlcm1pc3Npb247CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICcnOwp9Cgo9aXRlbSBDaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKCkKCmdldCBjdXN0b21lciB1c2VyIHBlcm1pc3Npb24gZm9yIGEgY2F0ZWdvcnkKCiAgICBteSAkUGVybWlzc2lvblN0cmluZyAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnbW0nLAogICAgICAgIENhdGVnb3J5SUQgICA9PiAnMTIzJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRQZXJtaXNzaW9uU3RyaW5nID0gJ3J3JzsgICAgICAgICAgICAgICAjIG9yICdybycgb3IgJycKCj1jdXQKCnN1YiBDaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEN1c3RvbWVyVXNlciBDYXRlZ29yeUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRQZXJtaXNzaW9uIChxdyhydyBybykpIHsKICAgICAgICBteSAkQ3VzdG9tZXJDYXRlZ29yaWVzID0gJFNlbGYtPkdldEN1c3RvbWVyQ2F0ZWdvcmllcygKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ3JvJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRDdXN0b21lckNhdGVnb3JpZXN9ICkgewogICAgICAgICAgICBteSAkQ2F0ZWdvcmllcyA9ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXskQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRDYXRlZ29yeUlEID09ICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFBlcm1pc3Npb247CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICcnOwp9Cgo9aXRlbSBTZXRDYXRlZ29yeUdyb3VwKCkKCnNldCBncm91cHMgdG8gYSBjYXRlZ29yeQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICBDYXRlZ29yeUlEID0+IDMsCiAgICAgICAgR3JvdXBJRHMgICA9PiBbIDIsNCwxLDUsNzcgXSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBncm91cHMgY291bGQgbm90IGJlIHNldCB0byBhIGNhdGVnb3J5Cgo9Y3V0CgpzdWIgU2V0Q2F0ZWdvcnlHcm91cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeUlEIEdyb3VwSURzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgb2xkIGdyb3VwcwogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gZmFxX2NhdGVnb3J5X2dyb3VwCiAgICAgICAgICAgIFdIRVJFIGNhdGVnb3J5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2F0ZWdvcnlJRH0gXSwKICAgICk7CgogICAgIyBpbnNlcnQgZ3JvdXBzCiAgICAkUGFyYW17Q2F0ZWdvcnlJRH0gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXtDYXRlZ29yeUlEfSwgJ0ludGVnZXInICk7CiAgICBmb3IgbXkgJEdyb3VwSUQgKCBAeyAkUGFyYW17R3JvdXBJRHN9IH0gKSB7CgogICAgICAgICMgZGIgcXVvdGUKICAgICAgICAkR3JvdXBJRCA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJEdyb3VwSUQsICdJbnRlZ2VyJyApOwoKICAgICAgICBteSAkU1FMID0gIgogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfY2F0ZWdvcnlfZ3JvdXAgKGNhdGVnb3J5X2lkLCBncm91cF9pZCwgY2hhbmdlZCwgY2hhbmdlZF9ieSwgY3JlYXRlZCwKICAgICAgICAgICAgICAgIGNyZWF0ZWRfYnkpCiAgICAgICAgICAgIFZBTFVFUyAoJFBhcmFte0NhdGVnb3J5SUR9LCAkR3JvdXBJRCwgY3VycmVudF90aW1lc3RhbXAsICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgY3VycmVudF90aW1lc3RhbXAsICRQYXJhbXtVc2VySUR9KSI7CgogICAgICAgICMgd3JpdGUgYXR0YWNobWVudCB0byBkYgogICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKCBTUUwgPT4gJFNRTCApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9aXRlbSBfVXNlckNhdGVnb3JpZXMoKQoKcmVkdWNlcyB0aGUgY2F0ZWdvcmllcyAoIGZyb20gQ2F0ZWdvcnlMaXN0KCkgKSB0byBvbmx5IHRoZSBvbmVzIHdoZXJlIHRoZSB1c2VyIGhhcyBwcml2aWxlZ2VzLgoKICAgIG15ICRVc2VyQ2F0ZWdvcmllcyA9ICRGQVFPYmplY3QtPl9Vc2VyQ2F0ZWdvcmllcygKICAgICAgICBDYXRlZ29yaWVzICAgICA9PiAkQ2F0ZWdvcnlIYXNoUmVmLCAgICAgICAgICMgYXMgcmV0dXJuZWQgZm9ybSBDYXRlZ29yeUxpc3QoKQogICAgICAgIENhdGVnb3J5R3JvdXBzID0+ICRDYXRlZ29yeUdyb3VwSGFzaFJlZiwgICAgICMgYXMgcmV0dXJuZWQgZnJvbSBDYXRlZ29yeUdyb3VwR2V0QWxsCiAgICAgICAgVXNlckdyb3VwcyAgICAgPT4gJFVzZXJHcm91cHNIYXNoUmVmLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEyMywKICAgICk7CgpSZXR1cm5zOgoKICAgICRVc2VyQ2F0ZWdvaWVzID0gewogICAgICAgIDAgPT4gewogICAgICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDMgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBfVXNlckNhdGVnb3JpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcmllcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVVc2VyQ2F0ZWdvcmllczsKCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkUGFyYW17Q2F0ZWdvcmllc30gfSApIHsKCiAgICAgICAgbXkgJVN1YkNhdGVnb3JpZXM7CgogICAgICAgIENBVEVHT1JZSUQ6CiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtDYXRlZ29yaWVzfS0+eyRQYXJlbnRJRH0gfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgY2F0ZWdvcnkgZ3JvdXBzCiAgICAgICAgICAgIG5leHQgQ0FURUdPUllJRCBpZiAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlHcm91cHN9LT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgIyBjaGVjayB1c2VyIGdyb3VwcwogICAgICAgICAgICBHUk9VUElEOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte0NhdGVnb3J5R3JvdXBzfS0+eyRDYXRlZ29yeUlEfSB9ICkgewoKICAgICAgICAgICAgICAgIG5leHQgR1JPVVBJRCBpZiAhZGVmaW5lZCAkUGFyYW17VXNlckdyb3Vwc30tPnskR3JvdXBJRH07CgogICAgICAgICAgICAgICAgIyBhZGQgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICRTdWJDYXRlZ29yaWVzeyRDYXRlZ29yeUlEfSA9ICRQYXJhbXtDYXRlZ29yaWVzfS0+eyRQYXJlbnRJRH0tPnskQ2F0ZWdvcnlJRH07CgogICAgICAgICAgICAgICAgIyBhZGQgZW1wdHkgaGFzaCBpZiBjYXRlZ29yeSBoYXMgbm8gc3ViY2F0ZWdvcmllcwogICAgICAgICAgICAgICAgaWYgKCAhJFVzZXJDYXRlZ29yaWVzeyRDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkVXNlckNhdGVnb3JpZXN7JENhdGVnb3J5SUR9ID0ge307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbGFzdCBHUk9VUElEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRVc2VyQ2F0ZWdvcmllc3skUGFyZW50SUR9ID0gXCVTdWJDYXRlZ29yaWVzOwogICAgfQogICAgcmV0dXJuIFwlVXNlckNhdGVnb3JpZXM7Cn0KCj1lbmQgSW50ZXJuYWw6Cgo9Y3V0CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRL0xhbmd1YWdlLnBtIC0gZmFxIGxhbmd1YWdlIGZ1bmN0aW9ucwojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkZBUTo6TGFuZ3VhZ2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6TGFuZ3VhZ2UgLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpGQVEKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGZhcSBsYW5ndWFnZSBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gTGFuZ3VhZ2VBZGQoKQoKYWRkIGEgbGFuZ3VhZ2UKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlQWRkKAogICAgICAgIE5hbWUgICA9PiAnU29tZSBMYW5hZ3VhZ2UnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgbGFuZ3VhZ2UgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgTGFuZ3VhZ2VBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV9sYW5ndWFnZSAobmFtZSkKICAgICAgICAgICAgVkFMVUVTICg/KScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIExhbmd1YWdlRGVsZXRlKCkKCkRlbGV0ZSBhIGxhbmd1YWdlLgoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VEZWxldGUoCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zCgogICAgJERlbGV0ZVN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGxhbmd1YWdlIGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgTGFuZ3VhZ2VEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KExhbmd1YWdlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEF0dHJpYnV0ZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIHRoZSBsYW5ndWFnZQogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TGFuZ3VhZ2VJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIExhbmd1YWdlRHVwbGljYXRlQ2hlY2soKQoKY2hlY2sgYSBsYW5ndWFnZQoKICAgIG15ICRFeGlzdHMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUR1cGxpY2F0ZUNoZWNrKAogICAgICAgIE5hbWUgICAgICAgPT4gJ1NvbWUgTmFtZScsCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLCAgICAgICAgIyBmb3IgdXBkYXRlCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEV4aXN0cyA9IDE7ICAgICAgICAgICAgICAgICMgaWYgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMsIG9yIDAgaWYgZG9lcyBub3QgZXhpc3QKCj1jdXQKCnN1YiBMYW5ndWFnZUR1cGxpY2F0ZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGJ1aWxkIHNxbAogICAgbXkgQEJpbmQgPSAoIFwkUGFyYW17TmFtZX0gKTsKICAgIG15ICRTUUwgID0gJwogICAgICAgIFNFTEVDVCBpZAogICAgICAgIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgV0hFUkUgbmFtZSA9ID8nOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtMYW5ndWFnZUlEfSApIHsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte0xhbmd1YWdlSUR9OwogICAgICAgICRTUUwgLj0gIiBBTkQgaWQgIT0gPyI7CiAgICB9CgogICAgIyBwcmVwYXJlIHNxbCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgIEJpbmQgID0+IFxAQmluZCwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRXhpc3RzID0gMTsKICAgIH0KCiAgICByZXR1cm4gJEV4aXN0czsKfQoKPWl0ZW0gTGFuZ3VhZ2VHZXQoKQoKZ2V0IGEgbGFuZ3VhZ2UgZGV0YWlscyBhcyBhIGhhc2gKCiAgICBteSAlTGFuZ3VhZ2UgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUdldCgKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUxhbmd1YWdlID0gKAogICAgICAgIExhbmd1YWdlSUQgPT4gJzEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ2VuJywKICAgICk7Cgo9Y3V0CgpzdWIgTGFuZ3VhZ2VHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTGFuZ3VhZ2VJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc3FsCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZQogICAgICAgICAgICBGUk9NIGZhcV9sYW5ndWFnZQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtMYW5ndWFnZUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRSb3dbMV0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIExhbmd1YWdlTGlzdCgpCgpnZXQgdGhlIGxhbmd1YWdlIGxpc3QgYXMgYSBoYXNoCgogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVMYW5ndWFnZXMgPSAoCiAgICAgICAgMSA9PiAnZW4nLAogICAgICAgIDIgPT4gJ2RlJywKICAgICAgICAzID0+ICdlcycsCiAgICApOwoKPWN1dAoKc3ViIExhbmd1YWdlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBidWlsZCBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lCiAgICAgICAgICAgIEZST00gZmFxX2xhbmd1YWdlJywKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuICVMaXN0Owp9Cgo9aXRlbSBMYW5ndWFnZUxvb2t1cCgpCgpUaGlzIG1ldGhvZCBkb2VzIGEgbG9va3VwIGZvciBhIGZhcSBsYW5ndWFnZS4KSWYgYSBsYW5ndWFnZSBpZCBpcyBnaXZlbiwgaXQgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgbGFuZ3VhZ2UuCklmIHRoZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSBpcyBnaXZlbiwgdGhlIGxhbmd1YWdlIGlkIGlzIHJldHVybmVkLgoKICAgIG15ICRMYW5ndWFnZU5hbWUgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICApOwoKICAgIG15ICRMYW5ndWFnZUlEID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgTmFtZSA9PiAnZW4nLAogICAgKTsKClJldHVybnM6CgogICAgJExhbmd1YWdlTmFtZSA9ICdlbic7CgogICAgJExhbmd1YWdlSUQgPSAxOwoKPWN1dAoKc3ViIExhbmd1YWdlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBpZiBib3RoIHBhcmFtZXRlcnMgYXJlIGdpdmVuCiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEfSAmJiAkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIExhbmd1YWdlSUQgb3IgTmFtZSAtIG5vdCBib3RoIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBpZiBib3RoIHBhcmFtZXRlcnMgYXJlIG5vdCBnaXZlbgogICAgaWYgKCAhJFBhcmFte0xhbmd1YWdlSUR9ICYmICEkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIExhbmd1YWdlSUQgb3IgTmFtZSAtIG5vbmUgaXMgZ2l2ZW4hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIExhbmd1YWdlSUQgaXMgYSBudW1iZXIKICAgIGlmICggJFBhcmFte0xhbmd1YWdlSUR9ICYmICRQYXJhbXtMYW5ndWFnZUlEfSAhfiBteyBcQSBcZCsgXHogfXhtcyApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkxhbmd1YWdlSUQgbXVzdCBiZSBhIG51bWJlciEgKExhbmd1YWdlSUQ6ICRQYXJhbXtMYW5ndWFnZUlEfSkiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgcHJlcGFyZSBTUUwgc3RhdGVtZW50cwogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gKSB7CiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBuYW1lCiAgICAgICAgICAgICAgICBGUk9NIGZhcV9sYW5ndWFnZQogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0xhbmd1YWdlSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte05hbWV9ICkgewogICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgICAgIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgICAgICAgICBXSEVSRSBuYW1lID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtOYW1lfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkTG9va3VwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkTG9va3VwID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJExvb2t1cDsKfQoKPWl0ZW0gTGFuZ3VhZ2VVcGRhdGUoKQoKdXBkYXRlIGEgbGFuZ3VhZ2UKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlVXBkYXRlKAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwKICAgICAgICBOYW1lICAgICAgID0+ICdkZScsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgbGFuZ3VhZ2UgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBMYW5ndWFnZVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhMYW5ndWFnZUlEIE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIHNxbAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIGZhcV9sYW5ndWFnZQogICAgICAgICAgICBTRVQgbmFtZSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtMYW5ndWFnZUlEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBhbGwgY2FjaGUsIGFzIEZBUUdldCgpIHdpbGwgYmUgYWxzbyBhZmZlY3RlZC4KICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRL1N0YXRlLnBtIC0gZmFxIHN0YXRlIGZ1bmN0aW9ucwojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkZBUTo6U3RhdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6U3RhdGUgLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpGQVEKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGZhcSBzdGF0ZSBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gU3RhdGVBZGQoKQoKYWRkIGEgc3RhdGUKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlN0YXRlQWRkKAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBUeXBlSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIHN0YXRlIGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIFN0YXRlQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgVHlwZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gZmFxX3N0YXRlIChuYW1lLCB0eXBlX2lkKQogICAgICAgICAgICBWQUxVRVMgKCA/LCA/ICknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9LCBcJFBhcmFte1R5cGVJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIFN0YXRlR2V0KCkKCmdldCBhIHN0YXRlIGFzIGhhc2gKCiAgICBteSAlU3RhdGUgPSAkRkFRT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICBTdGF0ZUlEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJVN0YXRlID0gKAogICAgICAgIFN0YXRlSUQgID0+IDEsCiAgICAgICAgTmFtZSAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgIFR5cGVJRCAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFN0YXRlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNxbAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIG5hbWUsIHR5cGVfaWQKICAgICAgICAgICAgRlJPTSBmYXFfc3RhdGUKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3RhdGVJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIFN0YXRlSUQgPT4gJFJvd1swXSwKICAgICAgICAgICAgTmFtZSAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBUeXBlSUQgID0+ICRSb3dbMl0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIFN0YXRlTGlzdCgpCgpnZXQgdGhlIHN0YXRlIGxpc3QgYXMgaGFzaAoKICAgIG15ICVTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlU3RhdGVzID0gKAogICAgICAgIDEgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgIDIgPT4gJ2V4dGVybmFsIChjdXN0b21lciknLAogICAgICAgIDMgPT4gJ3B1YmxpYyAoYWxsKScsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lCiAgICAgICAgICAgIEZST00gZmFxX3N0YXRlJwogICAgKTsKCiAgICBteSAlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuICVMaXN0Owp9Cgo9aXRlbSBTdGF0ZVVwZGF0ZSgpCgp1cGRhdGUgYSBzdGF0ZQoKICAgIG15IFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5TdGF0ZVVwZGF0ZSgKICAgICAgICBTdGF0ZUlEID0+IDEsCiAgICAgICAgTmFtZSAgICA9PiAncHVibGljJywKICAgICAgICBUeXBlSUQgID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgc3RhdGUgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBTdGF0ZVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdGF0ZUlEIE5hbWUgVHlwZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBmYXFfc3RhdGUKICAgICAgICAgICAgU0VUIG5hbWUgPSA/LCB0eXBlX2lkID0gPywKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtUeXBlSUR9LCBcJFBhcmFte1N0YXRlSUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBTdGF0ZVR5cGVHZXQoKQoKZ2V0IGEgc3RhdGUgYXMgaGFzaHJlZgoKICAgIG15ICRTdGF0ZVR5cGVIYXNoUmVmID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIFN0YXRlSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKT3IKCiAgICBteSAkU3RhdGVUeXBlSGFzaFJlZiA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN0YXRlVHlwZUhhc2hSZWYgPSB7CiAgICAgICAgJ1N0YXRlSUQnID0+IDEsCiAgICAgICAgJ05hbWUnICAgID0+ICdpbnRlcm5hbCcsCiAgICB9OwoKPWN1dAoKc3ViIFN0YXRlVHlwZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICBGUk9NIGZhcV9zdGF0ZV90eXBlCiAgICAgICAgV0hFUkUnOwogICAgbXkgQEJpbmQ7CiAgICBteSAkQ2FjaGVLZXkgPSAnU3RhdGVUeXBlR2V0OjonOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTdGF0ZUlEfSApIHsKICAgICAgICAkU1FMIC49ICcgaWQgPSA/JzsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte1N0YXRlSUR9OwogICAgICAgICRDYWNoZUtleSAuPSAnSUQ6OicgLiAkUGFyYW17U3RhdGVJRH07CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICkgewogICAgICAgICRTUUwgLj0gJyBuYW1lID0gPyc7CiAgICAgICAgcHVzaCBAQmluZCwgXCRQYXJhbXtOYW1lfTsKICAgICAgICAkQ2FjaGVLZXkgLj0gJ05hbWU6OicgLiAkUGFyYW17TmFtZX07CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlID0gJFNlbGYtPntDYWNoZU9iamVjdH0tPkdldCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIHJldHVybiAkQ2FjaGUgaWYgJENhY2hlOwoKICAgICMgc3FsCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJFNRTCwKICAgICAgICBCaW5kID0+IFxAQmluZCwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICVEYXRhID0gKAogICAgICAgICAgICBTdGF0ZUlEID0+ICRSb3dbMF0sCiAgICAgICAgICAgIE5hbWUgICAgPT4gJFJvd1sxXSwKICAgICAgICApOwogICAgfQoKICAgICMgY2FjaGUgcmVzdWx0CiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+U2V0KAogICAgICAgIFR5cGUgID0+ICdGQVEnLAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICAgICAgVFRMICAgPT4gNjAgKiA2MCAqIDI0ICogMiwKICAgICk7CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gU3RhdGVUeXBlTGlzdCgpCgpnZXQgdGhlIHN0YXRlIHR5cGUgbGlzdCBhcyBoYXNocmVmCgogICAgbXkgJFN0YXRlVHlwZUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCm9wdGlvbmFsLCBnZXQgc3RhdGUgdHlwZSBsaXN0IGZvciBzb21lIHN0YXRlczoKCiAgICBteSAkU3RhdGVUeXBlSGFzaFJlZiA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+IFsgJ3B1YmxpYycsICdpbnRlcm5hbCddLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN0YXRlVHlwZUhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiAnaW50ZXJuYWwnLAogICAgICAgIDMgPT4gJ3B1YmxpYycsCiAgICAgICAgMiA9PiAnZXh0ZXJuYWwnLAogICAgfTsKCj1jdXQKCnN1YiBTdGF0ZVR5cGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICBGUk9NIGZhcV9zdGF0ZV90eXBlJzsKCiAgICAjIHR5cGVzIGFyZSBnaXZlbgogICAgaWYgKCAkUGFyYW17VHlwZXN9ICkgewoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17VHlwZXN9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdUeXBlcyBzaG91bGQgYmUgYW4gYXJyYXkgcmVmZXJlbmNlIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNhbGwgU3RhdGVUeXBlTGlzdCB3aXRob3V0IHBhcmFtZXRlcnMgdG8gdmFsaWRhdGUgVHlwZXMKICAgICAgICBteSAkU3RhdGVUeXBlTGlzdCA9ICRTZWxmLT5TdGF0ZVR5cGVMaXN0KCBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0gKTsKICAgICAgICBteSAlU3RhdGVUeXBlcyA9IHJldmVyc2UgJXskU3RhdGVUeXBlTGlzdH07CiAgICAgICAgbXkgQFR5cGVzOwoKICAgICAgICAjIG9ubHkgYWRkIHR5cGVzIHRvIGxpc3QgdGhhdCBleGlzdAogICAgICAgIFRZUEU6CiAgICAgICAgZm9yIG15ICRUeXBlICggQHsgJFBhcmFte1R5cGVzfSB9ICkgewogICAgICAgICAgICBuZXh0ICRUeXBlIGlmICEkU3RhdGVUeXBlc3skVHlwZX07CiAgICAgICAgICAgIHB1c2ggQFR5cGVzLCAiJyRUeXBlJyI7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBzdHJpbmcKICAgICAgICBpZiAoQFR5cGVzKSB7CiAgICAgICAgICAgICRTUUwgLj0gJyBXSEVSRSBuYW1lIElOICggJyAuIGpvaW4oICcsICcsIEBUeXBlcyApIC4gJyApJzsKICAgICAgICB9CiAgICB9CgogICAgIyBwcmVwYXJlIFNRTAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkTGlzdHsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICByZXR1cm4gXCVMaXN0Owp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRL1ZvdGUucG0gLSBmYXEgdm90ZSBmdW5jdGlvbnMKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlZvdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6Vm90ZSAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OkZBUQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgZmFxIHZvdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIFZvdGVBZGQoKQoKYWRkIGEgdm90ZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Vm90ZUFkZCgKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICcxMjM0NTYnLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICdTb21lIFRleHQnLAogICAgICAgIFJhdGUgICAgICA9PiAxMDAsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIHZvdGUgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgVm90ZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDcmVhdGVkQnkgSXRlbUlEIElQIEludGVyZmFjZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV92b3RpbmcgKGNyZWF0ZWRfYnksIGl0ZW1faWQsIGlwLCBpbnRlcmZhY2UsIHJhdGUsIGNyZWF0ZWQgKQogICAgICAgICAgICBWQUxVRVMgKCA/LCA/LCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCApJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtDcmVhdGVkQnl9LCBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17SVB9LCBcJFBhcmFte0ludGVyZmFjZX0sCiAgICAgICAgICAgIFwkUGFyYW17UmF0ZX0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBkZWxldGUgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdJdGVtVm90ZURhdGFHZXQ6OicgLiAkUGFyYW17SXRlbUlEfTsKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIFZvdGVEZWxldGUoKQoKZGVsZXRlIGEgdm90ZQoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+Vm90ZURlbGV0ZSgKICAgICAgICBWb3RlSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWxldGVTdWNjZXNzID0gMTsgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgdm90ZSBjb3VsZCBub3QgYmUgZGVsZXRlZAoKPWN1dAoKc3ViIFZvdGVEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVm90ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gZmFxX3ZvdGluZwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1ZvdGVJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIFZvdGVHZXQoKQoKZ2V0IGEgdm90ZSBpbmZvcm1hdGlvbgoKICAgIG15ICVWb3RlRGF0YSA9ICRGQVFPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgQ3JlYXRlQnkgID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAnMTIzNDU2JywKICAgICAgICBJUCAgICAgICAgPT4gJzEyNy4wLjAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICdTb21lIFRleHQnLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJVZvdGVEYXRhID0gKAogICAgICAgIEl0ZW1JRCAgICA9PiAyMywKICAgICAgICBSYXRlICAgICAgPT4gNTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCBvciAyNSBvciA3NSBvciAxMDAKICAgICAgICBJUCAgICAgICAgPT4gJzE5Mi4xNjguMC4xJywKICAgICAgICBJbnRlcmZhY2UgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZXJmYWNlIElECiAgICAgICAgQ3JlYXRlZEJ5ID0+IDEsCiAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTA2LTE0IDEyOjMyOjAzJywKICAgICk7Cgo9Y3V0CgpzdWIgVm90ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDcmVhdGVCeSBJdGVtSUQgSW50ZXJmYWNlIElQIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgQFZhbHVlczsKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGNyZWF0ZWRfYnksIGl0ZW1faWQsIGludGVyZmFjZSwgaXAsIGNyZWF0ZWQsIHJhdGUKICAgICAgICBGUk9NIGZhcV92b3RpbmcKICAgICAgICBXSEVSRSc7CgogICAgIyBwdWJsaWMKICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzMnICkgewogICAgICAgICRTUUwgLj0gIgogICAgICAgICAgICBpcCA9ID8KICAgICAgICAgICAgQU5EIGl0ZW1faWQgPSA/IjsKICAgICAgICBwdXNoIEBWYWx1ZXMsICggXCRQYXJhbXtJUH0sIFwkUGFyYW17SXRlbUlEfSApOwogICAgfQoKICAgICMgY3VzdG9tZXIKICAgIGVsc2lmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzInIHx8ICRQYXJhbXtJbnRlcmZhY2V9IGVxICcxJyApIHsKICAgICAgICAkU1FMIC49ICIKICAgICAgICAgICAgY3JlYXRlZF9ieSA9ID8KICAgICAgICAgICAgQU5EIGl0ZW1faWQgPSA/IjsKICAgICAgICBwdXNoIEBWYWx1ZXMsICggXCRQYXJhbXtDcmVhdGVCeX0sIFwkUGFyYW17SXRlbUlEfSApOwogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBcQFZhbHVlcywKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkUm93WzBdLAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRSb3dbMl0sCiAgICAgICAgICAgIElQICAgICAgICA9PiAkUm93WzNdLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJFJvd1s0XSwKICAgICAgICAgICAgUmF0ZSAgICAgID0+ICRSb3dbNV0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gaWYgISVEYXRhOwogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gVm90ZVNlYXJjaCgpCgpyZXR1cm5zIGFuIGFycmF5IHdpdGggVm90ZUlEcwoKICAgIG15ICRWb3RlSURBcnJheXJlZiA9ICRGQVFPYmplY3QtPlZvdGVTZWFyY2goCiAgICAgICAgSXRlbUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVm90ZUlEQXJyYXlyZWYgPSBbCiAgICAgICAgMjMsCiAgICAgICAgNDUsCiAgICBdOwoKPWN1dAoKc3ViIFZvdGVTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBmYXFfdm90aW5nCiAgICAgICAgICAgIFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0gfHwgNTAwLAogICAgKTsKCiAgICBteSBAVm90ZUlEczsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAVm90ZUlEcywgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gXEBWb3RlSURzOwp9Cgo9aXRlbSBJdGVtVm90ZURhdGFHZXQoKQoKUmV0dXJucyBhIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlIG51bWJlciBvZiB2b3RlcyBhbmQgdGhlIHZvdGUgcmVzdWx0LgoKICAgIG15ICRWb3RlRGF0YUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5JdGVtVm90ZURhdGFHZXQoCiAgICAgICAgSXRlbUlEID0+IDEyMywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRWb3RlRGF0YUhhc2hSZWYgPSB7CiAgICAgICAgUmVzdWx0ID0+IDc1LjAwMDAsCiAgICAgICAgVm90ZXMgID0+IDUKICAgIH07Cgo9Y3V0CgpzdWIgSXRlbVZvdGVEYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdJdGVtVm90ZURhdGFHZXQ6OicgLiAkUGFyYW17SXRlbUlEfTsKICAgIG15ICRDYWNoZSAgICA9ICRTZWxmLT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJENhY2hlIGlmICRDYWNoZTsKCiAgICAjIGdldCB2b3RlIGZyb20gZGIKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGNvdW50KCopLCBhdmcocmF0ZSkKICAgICAgICAgICAgRlJPTSBmYXFfdm90aW5nCiAgICAgICAgICAgIFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0gfHwgNTAwLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEYXRhOwogICAgaWYgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXtWb3Rlc30gID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtSZXN1bHR9ID0gJFJvd1sxXTsKICAgIH0KCiAgICAjIGNhY2hlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPlNldCgKICAgICAgICBUeXBlICA9PiAnRkFRJywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDIsCiAgICApOwoKICAgIHJldHVybiBcJURhdGE7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRLnBtIC0gYWxsIGZhcSBmdW5jdGlvbnMKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0IHF3KCk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6Q2FjaGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VXNlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpHcm91cDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpDdXN0b21lckdyb3VwOwp1c2UgS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VGlja2V0Owp1c2UgS2VybmVsOjpTeXN0ZW06OlR5cGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZTsKCnVzZSBiYXNlIHF3KAogICAgS2VybmVsOjpTeXN0ZW06OkZBUVNlYXJjaAogICAgS2VybmVsOjpTeXN0ZW06OkZBUTo6TGFuZ3VhZ2UKICAgIEtlcm5lbDo6U3lzdGVtOjpGQVE6OkNhdGVnb3J5CiAgICBLZXJuZWw6OlN5c3RlbTo6RkFROjpTdGF0ZQogICAgS2VybmVsOjpTeXN0ZW06OkZBUTo6Vm90ZQopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVEgLSBmYXEgbGliCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBmYXEgZnVuY3Rpb25zLiBFLiBnLiB0byBhZGQgZmFxcyBvciB0byBnZXQgZmFxcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGEgZmFxIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OkNvbmZpZzsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6RW5jb2RlOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpMb2c7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok1haW47CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkRCOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpUaW1lOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgogICAgbXkgJENvbmZpZ09iamVjdCA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKICAgIG15ICRFbmNvZGVPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6RW5jb2RlLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICApOwogICAgbXkgJExvZ09iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpMb2ctPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBFbmNvZGVPYmplY3QgPT4gJEVuY29kZU9iamVjdCwKICAgICk7CiAgICBteSAkTWFpbk9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpNYWluLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgRW5jb2RlT2JqZWN0ID0+ICRFbmNvZGVPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICApOwogICAgbXkgJFRpbWVPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6VGltZS0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgKTsKICAgIG15ICREQk9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpEQi0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIEVuY29kZU9iamVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIE1haW5PYmplY3QgICA9PiAkTWFpbk9iamVjdCwKICAgICk7CiAgICBteSAkRkFRT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIEVuY29kZU9iamVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIERCT2JqZWN0ICAgICA9PiAkREJPYmplY3QsCiAgICAgICAgVGltZU9iamVjdCAgID0+ICRUaW1lT2JqZWN0LAogICAgICAgIE1haW5PYmplY3QgICA9PiAkTWFpbk9iamVjdCwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0IChxdyhEQk9iamVjdCBDb25maWdPYmplY3QgTG9nT2JqZWN0IEVuY29kZU9iamVjdCBNYWluT2JqZWN0IFRpbWVPYmplY3QpKSB7CiAgICAgICAgJFNlbGYtPnskT2JqZWN0fSA9ICRQYXJhbXskT2JqZWN0fSB8fCBkaWUgIkdvdCBubyAkT2JqZWN0ISI7CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0dyb3VwT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06Okdyb3VwLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkNhY2hlLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e0N1c3RvbWVyR3JvdXBPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAtPm5ldyggJXskU2VsZn0gKTsKICAgICRTZWxmLT57VXNlck9iamVjdH0gICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6VXNlci0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntUaWNrZXRPYmplY3R9ICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQtPm5ldyggJXskU2VsZn0gKTsKICAgICRTZWxmLT57VHlwZU9iamVjdH0gICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6VHlwZS0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntMaW5rT2JqZWN0fSAgICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0LT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUtPm5ldyggJXskU2VsZn0gKTsKCiAgICAjIGdldCBsaWtlIGVzY2FwZSBzdHJpbmcgbmVlZGVkIGZvciBzb21lIGRhdGFiYXNlcyAoZS5nLiBvcmFjbGUpCiAgICAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9ID0gJFNlbGYtPntEQk9iamVjdH0tPkdldERhdGFiYXNlRnVuY3Rpb24oJ0xpa2VFc2NhcGVTdHJpbmcnKTsKCiAgICAjIGdldCBkZWZhdWx0IG9wdGlvbnMKICAgICRTZWxmLT57Vm90aW5nfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgZ2V0IHRoZSBjYWNoZSBUVEwgKGluIHNlY29uZHMpCiAgICAkU2VsZi0+e0NhY2hlVFRMfSA9IGludCggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Q2FjaGVUVEwnKSB8fCA2MCAqIDYwICogMjQgKiAyICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBGQVFHZXQoKQoKZ2V0IGFuIGZhcSBpdGVtCgogICAgbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBJdGVtRmllbGRzID0+IDAsICAgICAgICAjIE9wdGlvbmFsLCBkZWZhdWx0IDAuIFRvIGluY2x1ZGUgdGhlIGl0ZW0gZmllbGQgY290bmVudCBmb3IgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBGQVEgaXRlbSBvbiB0aGUgcmV0dXJuIHN0cnVjdHVyZS4KICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlRkFRID0gKAogICAgICAgIElEICAgICAgICAgICAgICAgID0+IDMyLAogICAgICAgIEl0ZW1JRCAgICAgICAgICAgID0+IDMyLAogICAgICAgIEZBUUlEICAgICAgICAgICAgID0+IDMyLAogICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICBDYXRlZ29yeUlEICAgICAgICA9PiAnMicsCiAgICAgICAgQ2F0ZWdvcnlOYW1lJyAgICAgPT4gJ0NhdGVnb3J5QTo6Q2F0ZWdvcnlCJywKICAgICAgICBDYXRlZ29yeVNob3J0TmFtZSA9PiAnQ2F0ZWdvcnlCJywKICAgICAgICBMYW5ndWFnZUlEICAgICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlICAgICAgICAgID0+ICdlbicsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgPT4gJ0FydGljbGUgVGl0bGUnLAogICAgICAgIEFwcHJvdmVkICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwCiAgICAgICAgVmFsaWRJRCAgICAgICAgICAgPT4gMSwKICAgICAgICBWYWxpZCAgICAgICAgICAgICA9PiAndmFsaWQnLAogICAgICAgIEtleXdvcmRzICAgICAgICAgID0+ICdLZXlXb3JkMSBLZXlXb3JkMicsCiAgICAgICAgVm90ZXMgICAgICAgICAgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG51bWJlciBvZiB2b3RlcwogICAgICAgIFZvdGVSZXN1bHQgICAgICAgID0+ICcwLjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBiZXR3ZWVuIDAuMDAgYW5kIDEwMC4wMAogICAgICAgIFN0YXRlSUQgICAgICAgICAgID0+IDEsCiAgICAgICAgU3RhdGUgICAgICAgICAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLCAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCAoY3VzdG9tZXIpJyBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAncHVibGljIChhbGwpJwogICAgICAgIFN0YXRlVHlwZUlEICAgICAgID0+IDEsCiAgICAgICAgU3RhdGVUeXBlTmFtZSAgICAgPT4gJ2ludGVybmFsJywgICAgICAgICAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCcgb3IgJ3B1YmxpYycKICAgICAgICBDcmVhdGVkQnkgICAgICAgICA9PiAxLAogICAgICAgIENoYW5nZWQnICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICBDaGFuZ2VkQnkgICAgICAgICA9PiAnMScsCiAgICAgICAgQ3JlYXRlZCAgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICcxMjk0Mjg2MDMwLTMxLjE2OTcyOTcxMDQ3MzInLCAgIyBGQVEgQXJ0aWNsZSBuYW1lIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHN5c3RlbXRpbWUgKyAnLScgKyByYW5kb20gbnVtYmVyCiAgICApOwoKICAgIG15ICVGQVEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVGQVEgPSAoCiAgICAgICAgSUQgICAgICAgICAgICAgICAgPT4gMzIsCiAgICAgICAgSXRlbUlEICAgICAgICAgICAgPT4gMzIsCiAgICAgICAgRkFRSUQgICAgICAgICAgICAgPT4gMzIsCiAgICAgICAgTnVtYmVyICAgICAgICAgICAgPT4gMTAwMDMyLAogICAgICAgIENhdGVnb3J5SUQgICAgICAgID0+ICcyJywKICAgICAgICBDYXRlZ29yeU5hbWUnICAgICA9PiAnQ2F0ZWdvcnlBOjpDYXRlZ29yeUInLAogICAgICAgIENhdGVnb3J5U2hvcnROYW1lID0+ICdDYXRlZ29yeUInLAogICAgICAgIExhbmd1YWdlSUQgICAgICAgID0+IDEsCiAgICAgICAgTGFuZ3VhZ2UgICAgICAgICAgPT4gJ2VuJywKICAgICAgICBUaXRsZSAgICAgICAgICAgICA9PiAnQXJ0aWNsZSBUaXRsZScsCiAgICAgICAgRmllbGQxICAgICAgICAgICAgPT4gJ1RoZSBTeW1wdG9tcycsCiAgICAgICAgRmllbGQyICAgICAgICAgICAgPT4gJ1RoZSBQcm9ibGVtJywKICAgICAgICBGaWVsZDMgICAgICAgICAgICA9PiAnVGhlIFNvbHV0aW9uJywKICAgICAgICBGaWVsZDQgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgRmllbGQ1ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgIEZpZWxkNiAgICAgICAgICAgID0+ICdDb21tZW50cycsCiAgICAgICAgQXBwcm92ZWQgICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAKICAgICAgICBWYWxpZElEICAgICAgICAgICA9PiAxLAogICAgICAgIFZhbGlkICAgICAgICAgICAgID0+ICd2YWxpZCcsCiAgICAgICAgS2V5d29yZHMgICAgICAgICAgPT4gJ0tleVdvcmQxIEtleVdvcmQyJywKICAgICAgICBWb3RlcyAgICAgICAgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIHZvdGVzCiAgICAgICAgVm90ZVJlc3VsdCAgICAgICAgPT4gJzAuMDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIGJldHdlZW4gMC4wMCBhbmQgMTAwLjAwCiAgICAgICAgU3RhdGVJRCAgICAgICAgICAgPT4gMSwKICAgICAgICBTdGF0ZSAgICAgICAgICAgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsIChjdXN0b21lciknIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwdWJsaWMgKGFsbCknCiAgICAgICAgU3RhdGVUeXBlSUQgICAgICAgPT4gMSwKICAgICAgICBTdGF0ZVR5cGVOYW1lICAgICA9PiAnaW50ZXJuYWwnLCAgICAgICAgICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsJyBvciAncHVibGljJwogICAgICAgIENyZWF0ZWRCeSAgICAgICAgID0+IDEsCiAgICAgICAgQ2hhbmdlZCcgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgIENoYW5nZWRCeSAgICAgICAgID0+ICcxJywKICAgICAgICBDcmVhdGVkICAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJzEyOTQyODYwMzAtMzEuMTY5NzI5NzEwNDczMicsICAjIEZBUSBBcnRpY2xlIG5hbWUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3lzdGVtdGltZSArICctJyArIHJhbmRvbSBudW1iZXIKICAgICk7Cgo9Y3V0CgpzdWIgRkFRR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBGYWlsdXJlcyByZW5hbWUgZnJvbSBJdGVtSUQgdG8gRkFRSUQKICAgIGlmICggJFBhcmFte0ZBUUlEfSApIHsKICAgICAgICAkUGFyYW17SXRlbUlEfSA9ICRQYXJhbXtGQVFJRH07CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFVzZXJJRCBJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRGZXRjaEl0ZW1GaWVsZHMgPSAkUGFyYW17SXRlbUZpZWxkc30gPyAxIDogMDsKCiAgICBteSAkQ2FjaGVLZXkgPSAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkUGFyYW17SXRlbUlEfSAuICc6Okl0ZW1GaWVsZHM6OicgLiAkRmV0Y2hJdGVtRmllbGRzOwogICAgbXkgJENhY2hlICAgID0gJFNlbGYtPntDYWNoZU9iamVjdH0tPkdldCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKCiAgICAjIHNldCAlRGF0YSBmcm9tIGNhY2hlIGlmIGFueQogICAgbXkgJURhdGE7CiAgICBpZiAoIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnICkgewogICAgICAgICVEYXRhID0gJXskQ2FjaGV9OwogICAgfQoKICAgICMgb3RoZXJ3aXNlIGdldCAlRGF0YSBmcm9tIHRoZSBEQgogICAgZWxzZSB7CgogICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBTRUxFQ1QgaS5mX25hbWUsIGkuZl9sYW5ndWFnZV9pZCwgaS5mX3N1YmplY3QsIGkuY3JlYXRlZCwgaS5jcmVhdGVkX2J5LCBpLmNoYW5nZWQsCiAgICAgICAgICAgICAgICAgICAgaS5jaGFuZ2VkX2J5LCBpLmNhdGVnb3J5X2lkLCBpLnN0YXRlX2lkLCBjLm5hbWUsIHMubmFtZSwgbC5uYW1lLCBpLmZfa2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgaS5hcHByb3ZlZCwgaS52YWxpZF9pZCwgaS5mX251bWJlciwgc3QuaWQsIHN0Lm5hbWUKICAgICAgICAgICAgICAgIEZST00gZmFxX2l0ZW0gaSwgZmFxX2NhdGVnb3J5IGMsIGZhcV9zdGF0ZSBzLCBmYXFfc3RhdGVfdHlwZSBzdCwgZmFxX2xhbmd1YWdlIGwKICAgICAgICAgICAgICAgIFdIRVJFIGkuc3RhdGVfaWQgPSBzLmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIHMudHlwZV9pZCA9IHN0LmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIGkuY2F0ZWdvcnlfaWQgPSBjLmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIGkuZl9sYW5ndWFnZV9pZCA9IGwuaWQKICAgICAgICAgICAgICAgICAgICBBTkQgaS5pZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CgogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICAgICAlRGF0YSA9ICgKCiAgICAgICAgICAgICAgICAjIHZhciBmb3Igb2xkIHZlcnNpb25zCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIEZBUUlEID0+ICRQYXJhbXtJdGVtSUR9LAoKICAgICAgICAgICAgICAgICMgZ2V0IGRhdGEgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgSXRlbUlEICAgICAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgICAgIENyZWF0ZWQgICAgICAgPT4gJFJvd1szXSwKICAgICAgICAgICAgICAgIENyZWF0ZWRCeSAgICAgPT4gJFJvd1s0XSwKICAgICAgICAgICAgICAgIENoYW5nZWQgICAgICAgPT4gJFJvd1s1XSwKICAgICAgICAgICAgICAgIENoYW5nZWRCeSAgICAgPT4gJFJvd1s2XSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgICAgPT4gJFJvd1s3XSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICAgPT4gJFJvd1s4XSwKICAgICAgICAgICAgICAgIENhdGVnb3J5TmFtZSAgPT4gJFJvd1s5XSwKICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICAgPT4gJFJvd1sxMF0sCiAgICAgICAgICAgICAgICBMYW5ndWFnZSAgICAgID0+ICRSb3dbMTFdLAogICAgICAgICAgICAgICAgS2V5d29yZHMgICAgICA9PiAkUm93WzEyXSwKICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgICAgPT4gJFJvd1sxM10sCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICAgID0+ICRSb3dbMTRdLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICA9PiAkUm93WzE1XSwKICAgICAgICAgICAgICAgIFN0YXRlVHlwZUlEICAgPT4gJFJvd1sxNl0sCiAgICAgICAgICAgICAgICBTdGF0ZVR5cGVOYW1lID0+ICRSb3dbMTddLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISVEYXRhICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBJdGVtSUQgJFBhcmFte0l0ZW1JRH0hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBGQVEgaXRlbSBmaWVsZHMgYXJlIHJlcXVpcmVkCiAgICAgICAgaWYgKCRGZXRjaEl0ZW1GaWVsZHMpIHsKCiAgICAgICAgICAgIGZvciBteSAkRmllbGROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgIyBzZXQgZmllbGQgbmFtZQogICAgICAgICAgICAgICAgbXkgJEZpZWxkID0gIkZpZWxkJEZpZWxkTnVtYmVyIjsKCiAgICAgICAgICAgICAgICAjIGdldCBlYWNoIGZpZWxkIGNvbnRlbnQKICAgICAgICAgICAgICAgICREYXRheyRGaWVsZH0gPSAkU2VsZi0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSBudW1iZXIKICAgICAgICBpZiAoICEkRGF0YXtOdW1iZXJ9ICkgewoKICAgICAgICAgICAgbXkgJE51bWJlciA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdTeXN0ZW1JRCcpIC4gJzAwJyAuICREYXRhe0l0ZW1JRH07CgogICAgICAgICAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICAgICAgICAgIFNRTCAgPT4gJ1VQREFURSBmYXFfaXRlbSBTRVQgZl9udW1iZXIgPSA/IFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCROdW1iZXIsIFwkRGF0YXtJdGVtSUR9IF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkRGF0YXtOdW1iZXJ9ID0gJE51bWJlcjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGFsbCBjYXRlZ29yeSBsb25nIG5hbWVzCiAgICAgICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIHRoZSBjYXRlZ29yeSBzaG9ydCBuYW1lCiAgICAgICAgJERhdGF7Q2F0ZWdvcnlTaG9ydE5hbWV9ID0gJERhdGF7Q2F0ZWdvcnlOYW1lfTsKCiAgICAgICAgIyBnZXQgdGhlIGNhdGVnb3J5IGxvbmcgbmFtZQogICAgICAgICREYXRhe0NhdGVnb3J5TmFtZX0gPSAkQ2F0ZWdvcnlUcmVlLT57ICREYXRhe0NhdGVnb3J5SUR9IH07CgogICAgICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgICAgICBteSAlVmFsaWRMaXN0ID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkTGlzdCgpOwogICAgICAgICREYXRhe1ZhbGlkfSA9ICRWYWxpZExpc3R7ICREYXRhe1ZhbGlkSUR9IH07CgogICAgICAgICMgY2FjaGUgcmVzdWx0CiAgICAgICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHZvdGUgZGF0YSBmb3IgdGhpcyBGQVEgaXRlbQogICAgbXkgJFZvdGVEYXRhOwogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgJFZvdGVEYXRhID0gJFNlbGYtPkl0ZW1Wb3RlRGF0YUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgZnJvbSBjb25maWcKICAgIG15ICREZWNpbWFsUGxhY2VzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHREZWNpbWFsUGxhY2VzJykgfHwgMDsKCiAgICAjIGZvcm1hdCB0aGUgdm90ZSByZXN1bHQKICAgIG15ICRWb3RlUmVzdWx0ID0gc3ByaW50ZiggIiUwLiIgLiAkRGVjaW1hbFBsYWNlcyAuICJmIiwgJFZvdGVEYXRhLT57UmVzdWx0fSB8fCAwICk7CgogICAgIyBhZGQgdm90aW5nIGluZm9ybWF0aW9uIHRvIEZBUSBpdGVtCiAgICAkRGF0YXtWb3RlUmVzdWx0fSA9ICRWb3RlUmVzdWx0OwogICAgJERhdGF7Vm90ZXN9ID0gJFZvdGVEYXRhLT57Vm90ZXN9IHx8IDA7CgogICAgcmV0dXJuICVEYXRhOwp9CgpzdWIgSXRlbUZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFVzZXJJRCBJdGVtSUQgRmllbGQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgZm9yIHZhbGlkIGZpZWxkIG5hbWUKICAgIGlmICggJFBhcmFte0ZpZWxkfSAhfiBteyBcQSBGaWVsZCBbMS02XSBceiB9bXN4aSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkZpZWxkICckUGFyYW17RmllbGR9JyBpcyBpbnZhbGlkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0l0ZW1GaWVsZEdldDo6SXRlbUlEOjonIC4gJFBhcmFte0l0ZW1JRH07CgogICAgbXkgJENhY2hlID0gJFNlbGYtPntDYWNoZU9iamVjdH0tPkdldCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGEgY2FjaGUgZW50cnkgZXhpc3RzIGZvciB0aGUgZ2l2ZW4gRmllbGQKICAgIGlmICggcmVmICRDYWNoZSBlcSAnSEFTSCcgJiYgZXhpc3RzICRDYWNoZS0+eyAkUGFyYW17RmllbGR9IH0gKSB7CiAgICAgICAgcmV0dXJuICRDYWNoZS0+eyAkUGFyYW17RmllbGR9IH07CiAgICB9CgogICAgIyBjcmVhdGUgYSBmaWVsZCBsb29rdXAgdGFibGUKICAgIG15ICVGaWVsZExvb2t1cCA9ICgKICAgICAgICBGaWVsZDEgPT4gJ2ZfZmllbGQxJywKICAgICAgICBGaWVsZDIgPT4gJ2ZfZmllbGQyJywKICAgICAgICBGaWVsZDMgPT4gJ2ZfZmllbGQzJywKICAgICAgICBGaWVsZDQgPT4gJ2ZfZmllbGQ0JywKICAgICAgICBGaWVsZDUgPT4gJ2ZfZmllbGQ1JywKICAgICAgICBGaWVsZDYgPT4gJ2ZfZmllbGQ2JywKICAgICk7CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAnIC4gJEZpZWxkTG9va3VweyAkUGFyYW17RmllbGR9IH0gLiAnCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRGaWVsZDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEZpZWxkID0gJFJvd1swXSB8fCAnJzsKICAgIH0KCiAgICBpZiAoIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnICkgewoKICAgICAgICAjIENhY2hlIGZpbGUgZm9yIEl0ZW1JRCBhbHJlYWR5IGV4aXN0cywgYWRkIGZpZWxkIGRhdGEuCiAgICAgICAgJENhY2hlLT57ICRQYXJhbXtGaWVsZH0gfSA9ICRGaWVsZDsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIENyZWF0ZSBuZXcgY2FjaGUgZmlsZS4KICAgICAgICAkQ2FjaGUgPSB7CiAgICAgICAgICAgICRQYXJhbXtGaWVsZH0gPT4gJEZpZWxkLAogICAgICAgIH07CiAgICB9CgogICAgIyBzZXQgY2FjaGUKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+ICRDYWNoZSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICk7CgogICAgcmV0dXJuICRGaWVsZDsKfQoKPWl0ZW0gRkFRQWRkKCkKCmFkZCBhbiBhcnRpY2xlCgogICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgID0+IDEsCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgICAgIE51bWJlciAgICAgPT4gJzEzNDAyJywgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDEgICAgID0+ICdTeW1wdG9tLi4uJywgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkMiAgICAgPT4gJ1Byb2JsZW0uLi4nLCAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQzICAgICA9PiAnU29sdXRpb24uLi4nLCAgICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDQgICAgID0+ICdGaWVsZDQuLi4nLCAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkNSAgICAgPT4gJ0ZpZWxkNS4uLicsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQ2ICAgICA9PiAnQ29tbWVudC4uLicsICAgICAjIChvcHRpb25hbCkKICAgICAgICBBcHByb3ZlZCAgID0+IDEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkSXRlbUlEID0gMzQ7Cgo9Y3V0CgpzdWIgRkFRQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SUQgU3RhdGVJRCBMYW5ndWFnZUlEIFRpdGxlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgVmFsaWRJRAogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsaWRJRH0gKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCBpZHMKICAgICAgICBteSBAVmFsaWRJRHMgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRJRHNHZXQoKTsKCiAgICAgICAgJFBhcmFte1ZhbGlkSUR9ID0gJFZhbGlkSURzWzBdOwogICAgfQoKICAgICMgY2hlY2sgbmFtZQogICAgaWYgKCAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRQYXJhbXtOYW1lfSA9IHRpbWUoKSAuICctJyAuIHJhbmQoMTAwKTsKICAgIH0KCiAgICAjIGNoZWNrIG51bWJlcgogICAgaWYgKCAhJFBhcmFte051bWJlcn0gKSB7CiAgICAgICAgJFBhcmFte051bWJlcn0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnU3lzdGVtSUQnKSAuIHJhbmQoMTAwKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGFwcHJvdmFsIGZlYXR1cmUgaXMgdXNlZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgbXkgJEFwcHJvdmFsR3JvdXAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbEdyb3VwJyk7CgogICAgICAgICMgc2V0IGRlZmF1bHQgdG8gMCBpZiBhcHByb3ZlZCBwYXJhbSBpcyBub3QgZ2l2ZW4KICAgICAgICAjIG9yIGlmIHVzZXIgZG9lcyBub3QgaGF2ZSB0aGUgcmlnaHRzIHRvIGFwcHJvdmUKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtBcHByb3ZlZH0gfHwgISRHcm91cHN7JEFwcHJvdmFsR3JvdXB9ICkgewogICAgICAgICAgICAkUGFyYW17QXBwcm92ZWR9ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBhcHByb3ZhbCBmZWF0dXJlIGlzIG5vdCBhY3RpdmF0ZWQsIGEgbmV3IGZhcSBpdGVtIGlzIGFsd2F5cyBhcHByb3ZlZAogICAgZWxzZSB7CiAgICAgICAgJFBhcmFte0FwcHJvdmVkfSA9IDE7CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfaXRlbSAnCiAgICAgICAgICAgIC4gJyhmX251bWJlciwgZl9uYW1lLCBmX2xhbmd1YWdlX2lkLCBmX3N1YmplY3QsICcKICAgICAgICAgICAgLiAnY2F0ZWdvcnlfaWQsIHN0YXRlX2lkLCBmX2tleXdvcmRzLCBhcHByb3ZlZCwgdmFsaWRfaWQsICcKICAgICAgICAgICAgLiAnZl9maWVsZDEsIGZfZmllbGQyLCBmX2ZpZWxkMywgZl9maWVsZDQsIGZfZmllbGQ1LCBmX2ZpZWxkNiwgJwogICAgICAgICAgICAuICdjcmVhdGVkLCBjcmVhdGVkX2J5LCBjaGFuZ2VkLCBjaGFuZ2VkX2J5KScKICAgICAgICAgICAgLiAnVkFMVUVTICgnCiAgICAgICAgICAgIC4gJz8sID8sID8sID8sICcKICAgICAgICAgICAgLiAnPywgPywgPywgPywgPywgJwogICAgICAgICAgICAuICc/LCA/LCA/LCA/LCA/LCA/LCAnCiAgICAgICAgICAgIC4gJ2N1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte051bWJlcn0sICAgICBcJFBhcmFte05hbWV9LCAgICBcJFBhcmFte0xhbmd1YWdlSUR9LCBcJFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgXCRQYXJhbXtDYXRlZ29yeUlEfSwgXCRQYXJhbXtTdGF0ZUlEfSwgXCRQYXJhbXtLZXl3b3Jkc30sICAgXCRQYXJhbXtBcHByb3ZlZH0sCiAgICAgICAgICAgIFwkUGFyYW17VmFsaWRJRH0sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQxfSwgXCRQYXJhbXtGaWVsZDJ9LCBcJFBhcmFte0ZpZWxkM30sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQ0fSwgXCRQYXJhbXtGaWVsZDV9LCBcJFBhcmFte0ZpZWxkNn0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgYnVpbGQgU1FMIHRvIGdldCB0aGUgaWQgb2YgdGhlIG5ld2x5IGluc2VydGVkIEZBUSBhcnRpY2xlCiAgICBteSAkU1FMID0gJ1NFTEVDVCBpZCBGUk9NIGZhcV9pdGVtICcKICAgICAgICAuICdXSEVSRSBmX251bWJlciA9ID8gJwogICAgICAgIC4gJ0FORCBmX25hbWUgPSA/ICcKICAgICAgICAuICdBTkQgZl9sYW5ndWFnZV9pZCA9ID8gJwogICAgICAgIC4gJ0FORCBjYXRlZ29yeV9pZCA9ID8gJwogICAgICAgIC4gJ0FORCBzdGF0ZV9pZCA9ID8gJwogICAgICAgIC4gJ0FORCBhcHByb3ZlZCA9ID8gJwogICAgICAgIC4gJ0FORCB2YWxpZF9pZCA9ID8gJwogICAgICAgIC4gJ0FORCBjcmVhdGVkX2J5ID0gPyAnCiAgICAgICAgLiAnQU5EIGNoYW5nZWRfYnkgPSA/ICc7CgogICAgIyBoYW5kbGUgdGhlIHRpdGxlCiAgICBpZiAoICRQYXJhbXtUaXRsZX0gKSB7CiAgICAgICAgJFNRTCAuPSAnQU5EIGZfc3ViamVjdCA9ID8gJzsKICAgIH0KCiAgICAjIGFkZGl0aW9uYWwgU1FMIGZvciB0aGUgY2FzZSB0aGF0IHRoZSB0aXRsZSBpcyBhbiBlbXB0eSBzdHJpbmcKICAgICMgYW5kIHRoZSBkYXRhYmFzZSBpcyBvcmFjbGUsIHdoaWNoIHRyZWF0cyBlbXB0eSBzdHJpbmdzIGFzIE5VTEwKICAgIGVsc2UgewogICAgICAgICRTUUwgLj0gJ0FORCAoKGZfc3ViamVjdCA9ID8pIE9SIChmX3N1YmplY3QgSVMgTlVMTCkpICc7CiAgICB9CgogICAgIyBoYW5kbGUgdGhlIGtleXdvcmRzCiAgICBpZiAoICRQYXJhbXtLZXl3b3Jkc30gKSB7CiAgICAgICAgJFNRTCAuPSAnQU5EIGZfa2V5d29yZHMgPSA/ICc7CiAgICB9CgogICAgIyBhZGRpdGlvbmFsIFNRTCBmb3IgdGhlIGNhc2UgdGhhdCBrZXl3b3JkcyBpcyBhbiBlbXB0eSBzdHJpbmcKICAgICMgYW5kIHRoZSBkYXRhYmFzZSBpcyBvcmFjbGUsIHdoaWNoIHRyZWF0cyBlbXB0eSBzdHJpbmdzIGFzIE5VTEwKICAgIGVsc2UgewogICAgICAgICRTUUwgLj0gJ0FORCAoKGZfa2V5d29yZHMgPSA/KSBPUiAoZl9rZXl3b3JkcyBJUyBOVUxMKSkgJzsKICAgIH0KCiAgICAjIGdldCBpZAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TnVtYmVyfSwKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgXCRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtTdGF0ZUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtBcHByb3ZlZH0sCiAgICAgICAgICAgIFwkUGFyYW17VmFsaWRJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBcJFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgXCRQYXJhbXtLZXl3b3Jkc30sCiAgICAgICAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkSUQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRJRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyB1cGRhdGUgbnVtYmVyCiAgICBteSAkTnVtYmVyID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1N5c3RlbUlEJykgLiAnMDAnIC4gJElEOwogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMICA9PiAnVVBEQVRFIGZhcV9pdGVtIFNFVCBmX251bWJlciA9ID8gV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCROdW1iZXIsIFwkSUQgXSwKICAgICk7CgogICAgIyBhZGQgaGlzdG9yeQogICAgJFNlbGYtPkZBUUhpc3RvcnlBZGQoCiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkJywKICAgICAgICBJdGVtSUQgPT4gJElELAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBpZiBhcHByb3ZhbCBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICYmICEkUGFyYW17QXBwcm92ZWR9ICkgewoKICAgICAgICAjIGNyZWF0ZSBuZXcgYXBwcm92YWwgdGlja2V0CiAgICAgICAgbXkgJE9rID0gJFNlbGYtPl9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSUQsCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgRkFRTnVtYmVyICA9PiAkTnVtYmVyLAogICAgICAgICAgICBUaXRsZSAgICAgID0+ICRQYXJhbXtUaXRsZX0sCiAgICAgICAgICAgIFN0YXRlSUQgICAgPT4gJFBhcmFte1N0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkT2sgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDb3VsZCBub3QgY3JlYXRlIGFwcHJvdmFsIHRpY2tldCEnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJElEOwp9Cgo9aXRlbSBGQVFVcGRhdGUoKQoKdXBkYXRlIGFuIGFydGljbGUKCiAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRVXBkYXRlKAogICAgICAgIEl0ZW1JRCAgICAgID0+IDEyMywKICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICBBcHByb3ZhbE9mZiA9PiAxLCAob3B0aW9uYWwsIGlmIHNldCB0byAxIGFwcHJvdmFsIGlzIGlnbm9yZWQuIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gY2FsbGVkIGZyb20gRkFRSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSkKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMSA7ICAgICAgICAgICMgb3IgdW5kZWYgaWYgY2FuJ3QgdXBkYXRlIHRoZSBGQVEgYXJ0aWNsZQoKPWN1dAoKc3ViIEZBUVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVGl0bGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBmYXEgZGF0YQogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgaWYgbm8gbmFtZSB3YXMgZ2l2ZW4gdXNlIG9sZCBuYW1lIGZyb20gRkFRCiAgICBpZiAoICEkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJFBhcmFte05hbWV9ID0gJEZBUURhdGF7TmFtZX07CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgVmFsaWRJRAogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsaWRJRH0gKSB7CiAgICAgICAgJFBhcmFte1ZhbGlkSUR9ID0gJEZBUURhdGF7VmFsaWRJRH07CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUICcKICAgICAgICAgICAgLiAnZl9uYW1lID0gPywgZl9sYW5ndWFnZV9pZCA9ID8sICcKICAgICAgICAgICAgLiAnZl9zdWJqZWN0ID0gPywgY2F0ZWdvcnlfaWQgPSA/LCAnCiAgICAgICAgICAgIC4gJ3N0YXRlX2lkID0gPywgZl9rZXl3b3JkcyA9ID8sIHZhbGlkX2lkID0gPywgJwogICAgICAgICAgICAuICdmX2ZpZWxkMSA9ID8sIGZfZmllbGQyID0gPywgJwogICAgICAgICAgICAuICdmX2ZpZWxkMyA9ID8sIGZfZmllbGQ0ID0gPywgJwogICAgICAgICAgICAuICdmX2ZpZWxkNSA9ID8sIGZfZmllbGQ2ID0gPywgJwogICAgICAgICAgICAuICdjaGFuZ2VkID0gY3VycmVudF90aW1lc3RhbXAsICcKICAgICAgICAgICAgLiAnY2hhbmdlZF9ieSA9ID8gJwogICAgICAgICAgICAuICdXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte05hbWV9LCAgICBcJFBhcmFte0xhbmd1YWdlSUR9LAogICAgICAgICAgICBcJFBhcmFte1RpdGxlfSwgICBcJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBcJFBhcmFte1N0YXRlSUR9LCBcJFBhcmFte0tleXdvcmRzfSwgXCRQYXJhbXtWYWxpZElEfSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDF9LCAgXCRQYXJhbXtGaWVsZDJ9LAogICAgICAgICAgICBcJFBhcmFte0ZpZWxkM30sICBcJFBhcmFte0ZpZWxkNH0sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQ1fSwgIFwkUGFyYW17RmllbGQ2fSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBkZWxldGUgY2FjaGUKICAgICRTZWxmLT5fRGVsZXRlRnJvbUZBUUNhY2hlKCVQYXJhbSk7CgogICAgIyB1cGRhdGUgYXBwcm92YWwKICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICYmICEkUGFyYW17QXBwcm92YWxPZmZ9ICkgewoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgICAgICBteSAlR3JvdXBzID0gcmV2ZXJzZSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBhcHByb3ZhbCBncm91cAogICAgICAgIG15ICRBcHByb3ZhbEdyb3VwID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxHcm91cCcpOwoKICAgICAgICAjIHNldCBhcHByb3ZhbCB0byAwIGlmIHVzZXIgZG9lcyBub3QgaGF2ZSB0aGUgcmlnaHRzIHRvIGFwcHJvdmUKICAgICAgICBpZiAoICEkR3JvdXBzeyRBcHByb3ZhbEdyb3VwfSApIHsKICAgICAgICAgICAgJFBhcmFte0FwcHJvdmVkfSA9IDA7CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgYXBwcm92YWwKICAgICAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRTZWxmLT5fRkFRQXBwcm92YWxVcGRhdGUoCiAgICAgICAgICAgIEl0ZW1JRCAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBBcHByb3ZlZCA9PiAkUGFyYW17QXBwcm92ZWR9IHx8IDAsCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgYXBwcm92YWwgZm9yIEl0ZW1JRCAkUGFyYW17SXRlbUlEfSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSBjYWNoZQogICAgICAgICRTZWxmLT5fRGVsZXRlRnJvbUZBUUNhY2hlKCVQYXJhbSk7CiAgICB9CgogICAgIyBjaGVjayBpZiBoaXN0b3J5IGVudHJ5IHNob3VsZCBiZSBhZGRlZAogICAgcmV0dXJuIDEgaWYgJFBhcmFte0hpc3RvcnlPZmZ9OwoKICAgICMgd3JpdGUgaGlzdG9yeSBlbnRyeQogICAgJFNlbGYtPkZBUUhpc3RvcnlBZGQoCiAgICAgICAgTmFtZSAgID0+ICdVcGRhdGVkJywKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQXR0YWNobWVudEFkZCgpCgphZGQgYXJ0aWNsZSBhdHRhY2htZW50cywgcmV0dXJucyB0aGUgYXR0YWNobWVudCBpZAoKICAgIG15ICRBdHRhY2htZW50SUQgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgIEl0ZW1JRCAgICAgID0+IDEyMywKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgIEZpbGVuYW1lICAgID0+ICdzb21lbmFtZS54bWwnLAogICAgICAgIElubGluZSAgICAgID0+IDEsICAgKDB8MSwgZGVmYXVsdCAwKQogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQXR0YWNobWVudElEID0gMTIzIDsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhbid0IGFkZCB0aGUgYXR0YWNobWVudAoKPWN1dAoKc3ViIEF0dGFjaG1lbnRBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIENvbnRlbnQgQ29udGVudFR5cGUgRmlsZW5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBkZWZhdWx0CiAgICBpZiAoICEkUGFyYW17SW5saW5lfSApIHsKICAgICAgICAkUGFyYW17SW5saW5lfSA9IDA7CiAgICB9CgogICAgIyBnZXQgYXR0YWNobWVudCBzaXplCiAgICB7CiAgICAgICAgdXNlIGJ5dGVzOwogICAgICAgICRQYXJhbXtGaWxlc2l6ZX0gPSBsZW5ndGggJFBhcmFte0NvbnRlbnR9OwogICAgICAgIG5vIGJ5dGVzOwogICAgfQoKICAgICMgZ2V0IGFsbCBleGlzdGluZyBhdHRhY2htZW50cwogICAgbXkgQEluZGV4ID0gJFNlbGYtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgZmlsZW5hbWUKICAgIG15ICROZXdGaWxlTmFtZSA9ICRQYXJhbXtGaWxlbmFtZX07CgogICAgIyBidWlsZCBhIGxvb2t1cCBoYXNoIG9mIGFsbCBleGlzdGluZyBmaWxlIG5hbWVzCiAgICBteSAlVXNlZEZpbGU7CiAgICBmb3IgbXkgJEZpbGUgKEBJbmRleCkgewogICAgICAgICRVc2VkRmlsZXsgJEZpbGUtPntGaWxlbmFtZX0gfSA9IDE7CiAgICB9CgogICAgIyB0cnkgdG8gbW9kaWZ5IHRoZSB0aGUgZmlsZSBuYW1lIGJ5IGFkZGluZyBhIG51bWJlciBpZiBpdCBleGlzdHMgYWxyZWFkeQogICAgbXkgJENvdW50ID0gMDsKICAgIHdoaWxlICggJENvdW50IDwgNTAgKSB7CgogICAgICAgICMgaW5jcmVhc2UgY291bnRlcgogICAgICAgICRDb3VudCsrOwoKICAgICAgICAjIGlmIHRoZSBmaWxlIG5hbWUgZXhpc3RzCiAgICAgICAgaWYgKCBleGlzdHMgJFVzZWRGaWxleyROZXdGaWxlTmFtZX0gKSB7CgogICAgICAgICAgICAjIGZpbGVuYW1lIGhhcyBhIGZpbGUgbmFtZSBleHRlbnNpb24gKGUuZy4gdGVzdC5qcGcpCiAgICAgICAgICAgIGlmICggJFBhcmFte0ZpbGVuYW1lfSA9fiBteyBcQSAoLiopIFwuICguKz8pIFx6IH14bXMgKSB7CiAgICAgICAgICAgICAgICAkTmV3RmlsZU5hbWUgPSAiJDEtJENvdW50LiQyIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICROZXdGaWxlTmFtZSA9ICIkUGFyYW17RmlsZW5hbWV9LSRDb3VudCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzdG9yZSB0aGUgbmV3IGZpbGVuYW1lCiAgICAkUGFyYW17RmlsZW5hbWV9ID0gJE5ld0ZpbGVOYW1lOwoKICAgICMgZW5jb2RlIGF0dGFjaG1lbnQgaWYgaXQncyBhIHBvc3RncmVzcWwgYmFja2VuZCEhIQogICAgaWYgKCAhJFNlbGYtPntEQk9iamVjdH0tPkdldERhdGFiYXNlRnVuY3Rpb24oJ0RpcmVjdEJsb2InKSApIHsKICAgICAgICAkU2VsZi0+e0VuY29kZU9iamVjdH0tPkVuY29kZU91dHB1dCggXCRQYXJhbXtDb250ZW50fSApOwogICAgICAgICRQYXJhbXtDb250ZW50fSA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCggJFBhcmFte0NvbnRlbnR9ICk7CiAgICB9CgogICAgIyB3cml0ZSBhdHRhY2htZW50IHRvIGRiCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGZhcV9hdHRhY2htZW50ICcgLgogICAgICAgICAgICAnIChmYXFfaWQsIGZpbGVuYW1lLCBjb250ZW50X3R5cGUsIGNvbnRlbnRfc2l6ZSwgY29udGVudCwgaW5saW5lYXR0YWNobWVudCwgJyAuCiAgICAgICAgICAgICcgY3JlYXRlZCwgY3JlYXRlZF9ieSwgY2hhbmdlZCwgY2hhbmdlZF9ieSkgVkFMVUVTICcgLgogICAgICAgICAgICAnICg/LCA/LCA/LCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LCAgXCRQYXJhbXtGaWxlbmFtZX0sIFwkUGFyYW17Q29udGVudFR5cGV9LCBcJFBhcmFte0ZpbGVzaXplfSwKICAgICAgICAgICAgXCRQYXJhbXtDb250ZW50fSwgXCRQYXJhbXtJbmxpbmV9LCAgIFwkUGFyYW17VXNlcklEfSwgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBnZXQgdGhlIGF0dGFjaG1lbnQgaWQKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgJwogICAgICAgICAgICAuICdGUk9NIGZhcV9hdHRhY2htZW50ICcKICAgICAgICAgICAgLiAnV0hFUkUgZmFxX2lkID0gPyBBTkQgZmlsZW5hbWUgPSA/ICcKICAgICAgICAgICAgLiAnQU5EIGNvbnRlbnRfdHlwZSA9ID8gQU5EIGNvbnRlbnRfc2l6ZSA9ID8gJwogICAgICAgICAgICAuICdBTkQgaW5saW5lYXR0YWNobWVudCA9ID8gJwogICAgICAgICAgICAuICdBTkQgY3JlYXRlZF9ieSA9ID8gQU5EIGNoYW5nZWRfYnkgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte0ZpbGVuYW1lfSwgXCRQYXJhbXtDb250ZW50VHlwZX0sIFwkUGFyYW17RmlsZXNpemV9LAogICAgICAgICAgICBcJFBhcmFte0lubGluZX0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEF0dGFjaG1lbnRJRCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRBdHRhY2htZW50SUQ7Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXQoKQoKZ2V0IGF0dGFjaG1lbnQgb2YgYXJ0aWNsZQoKICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBJdGVtSUQgPT4gMTIzLAogICAgICAgIEZpbGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUZpbGUgPSAoCiAgICAgICAgRmlsZXNpemUgICAgPT4gJzU0MDI4NicsICAgICAgICAgICAgICAgICMgZmlsZSBzaXplIGluIGJ5dGVzCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgIEZpbGVuYW1lICAgID0+ICdFcnJvci5qcGcnLAogICAgICAgIENvbnRlbnQgICAgID0+ICcuLi4nICAgICAgICAgICAgICAgICAgICAjIGZpbGUgYmluYXJ5IGNvbnRlbnQKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgRmlsZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGZpbGVuYW1lLCBjb250ZW50X3R5cGUsIGNvbnRlbnRfc2l6ZSwgY29udGVudCAnCiAgICAgICAgICAgIC4gJ0ZST00gZmFxX2F0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdXSEVSRSBpZCA9ID8gQU5EIGZhcV9pZCA9ID8gJwogICAgICAgICAgICAuICdPUkRFUiBCWSBjcmVhdGVkJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtGaWxlSUR9LCBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICAgICBFbmNvZGUgPT4gWyAxLCAxLCAxLCAwIF0sCiAgICAgICAgTGltaXQgID0+IDEsCiAgICApOwoKICAgIG15ICVGaWxlOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgIyBkZWNvZGUgYXR0YWNobWVudCBpZiBpdCdzIGEgcG9zdGdyZXNxbCBiYWNrZW5kIGFuZCBub3QgQkxPQgogICAgICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdEaXJlY3RCbG9iJykgKSB7CiAgICAgICAgICAgICRSb3dbM10gPSBNSU1FOjpCYXNlNjQ6OmRlY29kZV9iYXNlNjQoICRSb3dbM10gKTsKICAgICAgICB9CgogICAgICAgICRGaWxle0ZpbGVuYW1lfSAgICA9ICRSb3dbMF07CiAgICAgICAgJEZpbGV7Q29udGVudFR5cGV9ID0gJFJvd1sxXTsKICAgICAgICAkRmlsZXtGaWxlc2l6ZX0gICAgPSAkUm93WzJdOwogICAgICAgICRGaWxle0NvbnRlbnR9ICAgICA9ICRSb3dbM107CiAgICB9CgogICAgcmV0dXJuICVGaWxlOwp9Cgo9aXRlbSBBdHRhY2htZW50RGVsZXRlKCkKCmRlbGV0ZSBhdHRhY2htZW50IG9mIGFydGljbGUKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgSXRlbUlEID0+IDEyMywKICAgICAgICBGaWxlSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMSA7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGF0dGFjaG1lbnQgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBBdHRhY2htZW50RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGZhcV9hdHRhY2htZW50IFdIRVJFIGlkID0gPyBBTkQgZmFxX2lkID0gPyAnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0ZpbGVJRH0sIFwkUGFyYW17SXRlbUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQXR0YWNobWVudEluZGV4KCkKCnJldHVybiBhbiBhdHRhY2htZW50IGluZGV4IG9mIGFuIGFydGljbGUKCiAgICBteSBASW5kZXggPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgU2hvd0lubGluZSA9PiAwLCAgICggMHwxLCBkZWZhdWx0IDEpCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgQEluZGV4ID0gKAogICAgICAgIHsKICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJzUyNy42IEtCeXRlcycsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ0Vycm9yLmpwZycsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+IDU0MDI4NiwKICAgICAgICAgICAgRmlsZUlEICAgICAgPT4gNiwKICAgICAgICAgICAgSW5saW5lICAgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIHssCiAgICAgICAgICAgIEZpbGVzaXplID0+ICc0MzAuMCBLQnl0ZXMnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgICAgIEZpbGVuYW1lID0+ICdTb2x1dGlvbi5qcGcnLAogICAgICAgICAgICBGaWxlc2l6ZVJhdyA9PiA0NDAyODYsCiAgICAgICAgICAgIEZpbGVJRCA9PiA1LAogICAgICAgICAgICBJbmxpbmUgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmlsZXNpemUgPT4gJzI5NiBCeXRlcycsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0FkZGl0aW9uYWxDb21tZW50cy50eHQnLAogICAgICAgICAgICBGaWxlc2l6ZVJhdyA9PiAyOTYsCiAgICAgICAgICAgIEZpbGVJRCA9PiA3LAogICAgICAgICAgICBJbmxpbmUgPT4gMCwKICAgICAgICB9LAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50SW5kZXggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBpbmxpbmVhdHRhY2htZW50ICcKICAgICAgICAgICAgLiAnRlJPTSBmYXFfYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGZhcV9pZCA9ID8gJwogICAgICAgICAgICAuICdPUkRFUiBCWSBmaWxlbmFtZScsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxMDAsCiAgICApOwoKICAgIG15IEBJbmRleDsKICAgIEFUVEFDSE1FTlQ6CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICBteSAkSUQgICAgICAgICAgPSAkUm93WzBdOwogICAgICAgIG15ICRGaWxlbmFtZSAgICA9ICRSb3dbMV07CiAgICAgICAgbXkgJENvbnRlbnRUeXBlID0gJFJvd1syXTsKICAgICAgICBteSAkRmlsZXNpemUgICAgPSAkUm93WzNdOwogICAgICAgIG15ICRJbmxpbmUgICAgICA9ICRSb3dbNF07CgogICAgICAgICMgZG8gbm90IHNob3cgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTaG93SW5saW5lfSAmJiAhJFBhcmFte1Nob3dJbmxpbmV9ICYmICRJbmxpbmUgKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICMgY29udmVydCB0byBodW1hbiByZWFkYWJsZSBmaWxlIHNpemUKICAgICAgICBteSAkRmlsZVNpemVSYXcgPSAkRmlsZXNpemU7CiAgICAgICAgaWYgKCRGaWxlc2l6ZSkgewogICAgICAgICAgICBpZiAoICRGaWxlc2l6ZSA+ICggMTAyNCAqIDEwMjQgKSApIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZXNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRGaWxlc2l6ZSA+IDEwMjQgKSB7CiAgICAgICAgICAgICAgICAkRmlsZXNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggKCAkRmlsZXNpemUgLyAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9ICRGaWxlc2l6ZSAuICcgQnl0ZXMnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBJbmRleCwgewogICAgICAgICAgICBGaWxlSUQgICAgICA9PiAkSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAkRmlsZXNpemUsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+ICRGaWxlU2l6ZVJhdywKICAgICAgICAgICAgSW5saW5lICAgICAgPT4gJElubGluZSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBASW5kZXg7Cn0KCj1pdGVtIEZBUUNvdW50KCkKCkNvdW50IHRoZSBudW1iZXIgb2YgYXJ0aWNsZXMgZm9yIGEgZGVmaW5lZCBjYXRlZ29yeS4gT25seSB2YWxpZCBGQVEgYXJ0aWNsZXMgd2lsbCBiZSBjb3VudGVkLgoKICAgIG15ICRBcnRpY2xlQ291bnQgPSAkRkFRT2JqZWN0LT5GQVFDb3VudCgKICAgICAgICBDYXRlZ29yeUlEcyAgPT4gWzEsMiwzLDRdLAogICAgICAgIE9ubHlBcHByb3ZlZCA9PiAxLCAgICMgb3B0aW9uYWwgKGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRBcnRpY2xlQ291bnQgPSAzOwoKPWN1dAoKc3ViIEZBUUNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SURzIEl0ZW1TdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDYXRlZ29yeUlEU3RyaW5nID0gJyc7CiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUlEc30gJiYgcmVmICRQYXJhbXtDYXRlZ29yeUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgY2F0ZWdvcnkgaWRzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewogICAgICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRDYXRlZ29yeUlELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgIG15IEBTb3J0ZWRJRHMgPSBzb3J0IEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfTsKCiAgICAgICAgIyBzcGxpdCBJTiBzdGF0ZW1lbnQgd2l0aCBtb3JlIHRoYW4gOTAwIGVsZW1lbnRzIGluIG1vcmUgc3RhdGVtZW50cyBib21iaW5lZCB3aXRoIE9SCiAgICAgICAgIyBiZWNhdXNlIE9yYWNsZSBkb2Vzbid0IHN1cHBvcnQgbW9yZSB0aGFuIDEwMDAgZWxlbWVudHMgaW4gb25lIElOIHN0YXRlbWVudC4KICAgICAgICBteSBAU1FMU3RyaW5nczsKICAgICAgICBMT09QOgogICAgICAgIHdoaWxlICggc2NhbGFyIEBTb3J0ZWRJRHMgKSB7CgogICAgICAgICAgICBteSBAU29ydGVkSURzUGFydCA9IHNwbGljZSBAU29ydGVkSURzLCAwLCA5MDA7CgogICAgICAgICAgICBteSAkSURTdHJpbmcgPSBqb2luICcsJywgQFNvcnRlZElEc1BhcnQ7CgogICAgICAgICAgICBwdXNoIEBTUUxTdHJpbmdzLCAiIGkuY2F0ZWdvcnlfaWQgSU4gKCRJRFN0cmluZykgIjsKICAgICAgICB9CgogICAgICAgIG15ICRTUUxTdHJpbmcgPSBqb2luICcgT1IgJywgQFNRTFN0cmluZ3M7CgogICAgICAgICRDYXRlZ29yeUlEU3RyaW5nIC49ICdBTkQgKCAnIC4gJFNRTFN0cmluZyAuICcgKSAnOwogICAgfQoKICAgICMgYnVpbGQgdmFsaWQgaWQgc3RyaW5nCiAgICBteSAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZElEc0dldCgpOwoKICAgIG15ICRTUUwgPSAnU0VMRUNUIENPVU5UKCopICcKICAgICAgICAuICdGUk9NIGZhcV9pdGVtIGksIGZhcV9zdGF0ZSBzICcKICAgICAgICAuICdXSEVSRSBpLnN0YXRlX2lkID0gcy5pZCAnCiAgICAgICAgLiAiQU5EIGkudmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykgIgogICAgICAgIC4gJENhdGVnb3J5SURTdHJpbmc7CgogICAgIyBjb3VudCBvbmx5IGFwcHJvdmVkIGFydGljbGVzCiAgICBpZiAoICRQYXJhbXtPbmx5QXBwcm92ZWR9ICkgewogICAgICAgICRTUUwgLj0gJyBBTkQgaS5hcHByb3ZlZCA9IDEnOwogICAgfQoKICAgIG15ICRFeHQgPSAnJzsKICAgIGlmICggJFBhcmFte0l0ZW1TdGF0ZXN9ICYmIHJlZiAkUGFyYW17SXRlbVN0YXRlc30gZXEgJ0hBU0gnICYmICV7ICRQYXJhbXtJdGVtU3RhdGVzfSB9ICkgewogICAgICAgIG15ICRTdGF0ZXNTdHJpbmcgPSBqb2luICcsICcsIGtleXMgJXsgJFBhcmFte0l0ZW1TdGF0ZXN9IH07CiAgICAgICAgJEV4dCAuPSAiIEFORCBzLnR5cGVfaWQgSU4gKCRTdGF0ZXNTdHJpbmcgKSI7CiAgICB9CiAgICAkRXh0IC49ICcgR1JPVVAgQlkgY2F0ZWdvcnlfaWQnOwogICAgJFNRTCAuPSAkRXh0OwoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAyMDAsCiAgICApOwoKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDb3VudCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKPWl0ZW0gRkFRRGVsZXRlKCkKCkRlbGV0ZSBhbiBhcnRpY2xlLgoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRGVsZXRlU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGFydGljbGUgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBGQVFEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgYXR0YWNobWVudHMKICAgIG15IEBJbmRleCA9ICRTZWxmLT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICBmb3IgbXkgJEZpbGVJRCAoQEluZGV4KSB7CiAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkU2VsZi0+QXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBGaWxlSUQgPT4gJEZpbGVJRC0+e0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIHJldHVybiBpZiAhJERlbGV0ZVN1Y2Nlc3M7CiAgICB9CgogICAgIyBkZWxldGUgdm90ZXMKICAgIG15ICRWb3RlSURzUmVmID0gJFNlbGYtPlZvdGVTZWFyY2goCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICBmb3IgbXkgJFZvdGVJRCAoIEB7JFZvdGVJRHNSZWZ9ICkgewogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJFNlbGYtPlZvdGVEZWxldGUoCiAgICAgICAgICAgIFZvdGVJRCA9PiAkVm90ZUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgISREZWxldGVTdWNjZXNzOwogICAgfQoKICAgICMgZGVsZXRlIGFsbCBmYXEgbGlua3Mgb2YgdGhpcyBmYXEgYXJ0aWNsZQogICAgJFNlbGYtPntMaW5rT2JqZWN0fS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICBPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgaGlzdG9yeQogICAgcmV0dXJuIGlmICEkU2VsZi0+RkFRSGlzdG9yeURlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGRlbGV0ZSBhcnRpY2xlCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfaXRlbSBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICk7CgogICAgIyBkZWxldGUgY2FjaGUKICAgICRTZWxmLT5fRGVsZXRlRnJvbUZBUUNhY2hlKCVQYXJhbSk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEZBUUhpc3RvcnlBZGQoKQoKYWRkIGFuIGhpc3RvcnkgdG8gYW4gYXJ0aWNsZQoKICAgIG15ICRBZGRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeUFkZCgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBOYW1lICAgPT4gJ1VwZGF0ZWQgQXJ0aWNsZS4nLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEFkZFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgYXJ0aWNsZSBoaXN0b3J5IGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIEZBUUhpc3RvcnlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGZhcV9oaXN0b3J5IChuYW1lLCBpdGVtX2lkLCAnIC4KICAgICAgICAgICAgJyBjcmVhdGVkLCBjcmVhdGVkX2J5LCBjaGFuZ2VkLCBjaGFuZ2VkX2J5KScgLgogICAgICAgICAgICAnIFZBTFVFUyAoID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte05hbWV9LCBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBGQVFIaXN0b3J5R2V0KCkKCmdldCBhbiBhcnJheSB3aXRoIGhhc2hyZWYgd2l0aCB0aGUgaGlzdG9yeSBvZiBhbiBhcnRpY2xlCgogICAgbXkgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5GQVFIaXN0b3J5R2V0KAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICBDcmVhdGVkQnkgPT4gMSwKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDEwLTExLTAyIDA3OjQ1OjE1JywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICdDcmVhdGVkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+IDEsCiAgICAgICAgICAgIENyZWF0ZWQgICA9PiAnMjAxMS0wNi0xNCAxMjo1Mzo1NScsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVXBkYXRlZCcsCiAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgRkFRSGlzdG9yeUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBuYW1lLCBjcmVhdGVkLCBjcmVhdGVkX2J5CiAgICAgICAgICAgIEZST00gZmFxX2hpc3RvcnkKICAgICAgICAgICAgV0hFUkUgaXRlbV9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgY3JlYXRlZCwgaWQnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICk7CgogICAgbXkgQERhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVSZWNvcmQgPSAoCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRSb3dbMl0sCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBEYXRhLCBcJVJlY29yZDsKICAgIH0KCiAgICByZXR1cm4gXEBEYXRhOwp9Cgo9aXRlbSBGQVFIaXN0b3J5RGVsZXRlKCkKCmRlbGV0ZSB0aGUgaGlzdG9yeSBvZiBhbiBhcnRpY2xlCgogICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFIaXN0b3J5RGVsZXRlKAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJERlbGV0ZUR1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGhpc3RvcnkgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBGQVFIaXN0b3J5RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGZhcV9oaXN0b3J5IFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBIaXN0b3J5R2V0KCkKCmdldCB0aGUgc3lzdGVtIGhpc3RvcnkKCiAgICBteSAkSGlzdG9yeURhdGFBcnJheVJlZiA9ICRGQVFPYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkSGlzdG9yeURhdGFBcnJheVJlZiA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAnMzInLAogICAgICAgICAgICBOdW1iZXIgICAgPT4gJzEwMDA0JywKICAgICAgICAgICAgQ2F0ZWdvcnkgID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgICAgIFN1YmplY3QgICA9PiAnTmV3IEFydGljbGUnLAogICAgICAgICAgICBBY3Rpb24gICAgPT4gJ0NyZWF0ZWQnLAogICAgICAgICAgICBDcmVhdGVkQnkgPT4gJzEnLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBJdGVtSUQgICAgPT4gJzQnLAogICAgICAgICAgICBOdW1iZXIgICAgPT4gJzEwMDA0JywKICAgICAgICAgICAgQ2F0ZWdvcnkgID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgICAgIFN1YmplY3QgICA9PiAiTmV3IEFydGljbGUiLAogICAgICAgICAgICBBY3Rpb24gICAgPT4gJ1VwZGF0ZWQnLAogICAgICAgICAgICBDcmVhdGVkQnkgPT4gJzEnLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJzIwMTEtMDEtMDUgMjE6NTU6MzInLAogICAgICAgIH0KICAgIF07Cgo9Y3V0CgpzdWIgSGlzdG9yeUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBidWlsZCBTUUwgcXVlcnkKICAgIG15ICRTUUwgPSAnU0VMRUNUIGkuaWQsIGgubmFtZSwgaC5jcmVhdGVkLCBoLmNyZWF0ZWRfYnksIGMubmFtZSwgaS5mX3N1YmplY3QsIGkuZl9udW1iZXIgJwogICAgICAgIC4gJ0ZST00gZmFxX2l0ZW0gaSwgZmFxX3N0YXRlIHMsIGZhcV9oaXN0b3J5IGgsIGZhcV9jYXRlZ29yeSBjICcKICAgICAgICAuICdXSEVSRSBzLmlkID0gaS5zdGF0ZV9pZCAnCiAgICAgICAgLiAnQU5EIGguaXRlbV9pZCA9IGkuaWQgJwogICAgICAgIC4gJ0FORCBpLmNhdGVnb3J5X2lkID0gYy5pZCAnOwoKICAgICMgYWRkIHN0YXRlcyBjb25kaXRpb24KICAgIGlmICggJFBhcmFte1N0YXRlc30gJiYgcmVmICRQYXJhbXtTdGF0ZXN9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFte1N0YXRlc30gfSApIHsKICAgICAgICBteSAkU3RhdGVzU3RyaW5nID0gam9pbiAnLCAnLCBAeyAkUGFyYW17U3RhdGVzfSB9OwogICAgICAgICRTUUwgLj0gIkFORCBzLm5hbWUgSU4gKCRTdGF0ZXNTdHJpbmcpICI7CiAgICB9CgogICAgIyBhZGQgb3JkZXIgYnkgY2xhdXNlCiAgICAkU1FMIC49ICdPUkRFUiBCWSBoLmNyZWF0ZWQgREVTQyc7CgogICAgIyBnZXQgdGhlIGRhdGEgZnJvbSBkYgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDIwMCwKICAgICk7CgogICAgbXkgQERhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVSZWNvcmQgPSAoCiAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkUm93WzBdLAogICAgICAgICAgICBBY3Rpb24gICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICRSb3dbMl0sCiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkUm93WzNdLAogICAgICAgICAgICBDYXRlZ29yeSAgPT4gJFJvd1s0XSwKICAgICAgICAgICAgU3ViamVjdCAgID0+ICRSb3dbNV0sCiAgICAgICAgICAgIE51bWJlciAgICA9PiAkUm93WzZdLAogICAgICAgICk7CiAgICAgICAgcHVzaCBARGF0YSwgXCVSZWNvcmQ7CiAgICB9CgogICAgcmV0dXJuIFxARGF0YTsKfQoKPWl0ZW0gS2V5d29yZExpc3QoKQoKZ2V0IGEgbGlzdCBvZiBrZXl3b3JkcyBhcyBhIGhhc2gsIHdpdGggdGhlaXIgY291bnQgYXMgdGhlIHZhbHVlOgoKICAgIG15ICVLZXl3b3JkcyA9ICRGQVFPYmplY3QtPktleXdvcmRMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUtleXdvcmRzID0gKAogICAgICAgICAgJ21hY29zeCcgICA9PiA4LAogICAgICAgICAgJ3VidW50dScgICA9PiAxLAogICAgICAgICAgJ291dGxvb2snICA9PiAyLAogICAgICAgICAgJ3dpbmRvd3MnICA9PiAzLAogICAgICAgICAgJ2V4Y2hhbmdlJyA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBLZXl3b3JkTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgbXkgJFZhbGlkID0gMDsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsaWR9ICkgewogICAgICAgICRWYWxpZCA9ICRQYXJhbXtWYWxpZH07CiAgICB9CgogICAgIyBnZXQga2V5d29yZHMgZnJvbSBkYgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBmX2tleXdvcmRzIEZST00gZmFxX2l0ZW0nLAogICAgKTsKCiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgIG15ICRLZXl3b3JkTGlzdCA9IGxjICRSb3dbMF07CgogICAgICAgIGZvciBteSAkS2V5d29yZCAoIHNwbGl0IC8sLywgJEtleXdvcmRMaXN0ICkgewoKICAgICAgICAgICAgIyByZW1vdmUgbGVhZGluZy90YWlsaW5nIHNwYWNlcwogICAgICAgICAgICAkS2V5d29yZCA9fiBzeyBcQSBccysgfXt9eG1zZzsKICAgICAgICAgICAgJEtleXdvcmQgPX4gc3sgXHMrIFx6IH17fXhtc2c7CgogICAgICAgICAgICAjIGluY3JlYXNlIGtleXdvcmQgY291bnRlcgogICAgICAgICAgICAkRGF0YXskS2V5d29yZH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVEYXRhOwp9Cgo9aXRlbSBGQVFQYXRoTGlzdEdldCgpCgpyZXR1cm5zIGEgY2F0ZWdvcnkgYXJyYXkgcmVmZXJlbmNlCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkZBUVBhdGhMaXN0R2V0KAogICAgICAgIENhdGVnb3J5SUQgPT4gMTUwLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICcyJywKICAgICAgICAgICAgUGFyZW50SUQgPT4gJzAnLAogICAgICAgICAgICBOYW1lID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ015IEZpcnN0IENhdGVnb3J5JywKICAgICAgICAgICAgVmFsaWRJRCA9PiAnMScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJzQnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAnMicsCiAgICAgICAgICAgIE5hbWUgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnVGhpcyBJcyBDYXRlZ29yeSBBJywKICAgICAgICAgICAgVmFsaWRJRCA9PiAnMScsCiAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgRkFRUGF0aExpc3RHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15IEBDYXRlZ29yeUxpc3Q7CiAgICBteSAkVGVtcENhdGVnb3J5SUQgPSAkUGFyYW17Q2F0ZWdvcnlJRH07CiAgICB3aGlsZSAoJFRlbXBDYXRlZ29yeUlEKSB7CiAgICAgICAgbXkgJURhdGEgPSAkU2VsZi0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFRlbXBDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCVEYXRhKSB7CiAgICAgICAgICAgIHB1c2ggQENhdGVnb3J5TGlzdCwgXCVEYXRhOwogICAgICAgIH0KICAgICAgICAkVGVtcENhdGVnb3J5SUQgPSAkRGF0YXtQYXJlbnRJRH07CiAgICB9CgogICAgQENhdGVnb3J5TGlzdCA9IHJldmVyc2UgQENhdGVnb3J5TGlzdDsKCiAgICByZXR1cm4gXEBDYXRlZ29yeUxpc3Q7Cgp9Cgo9aXRlbSBGQVFMb2dBZGQoKQoKYWRkcyBhY2Nlc3NlZCBGQVEgYXJ0aWNsZSB0byB0aGUgYWNjZXNzIGxvZyB0YWJsZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRTG9nQWRkKAogICAgICAgIEl0ZW1JRCAgICA9PiAnMTIzNDU2JywKICAgICAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0xOyAgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIEZBUUxvZyBjb3VsZCBub3QgYmUgYWRkZWQKCj1jdXQKCnN1YiBGQVFMb2dBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIEludGVyZmFjZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGVudmlyb25tZW50IHZhcmlhYmxlcwogICAgbXkgJElQICAgICAgICA9ICRFTlZ7J1JFTU9URV9BRERSJ30gICAgIHx8ICdOT05FJzsKICAgIG15ICRVc2VyQWdlbnQgPSAkRU5WeydIVFRQX1VTRVJfQUdFTlQnfSB8fCAnTk9ORSc7CgogICAgIyBnZXQgY3VycmVudCBzeXN0ZW0gdGltZQogICAgbXkgJFN5c3RlbVRpbWUgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lKCk7CgogICAgIyBkZWZpbmUgdGltZSBwZXJpb2Qgd2hlcmUgcmVsb2FkcyB3aWxsIG5vdCBiZSBsb2dnZWQgKDEwIG1pbnV0ZXMpCiAgICBteSAkUmVsb2FkQmxvY2tUaW1lID0gMTAgKiA2MDsKCiAgICAjIHN1YnRyYWN0IFJlbG9hZEJsb2NrVGltZQogICAgJFN5c3RlbVRpbWUgPSAkU3lzdGVtVGltZSAtICRSZWxvYWRCbG9ja1RpbWU7CgogICAgIyBjb252ZXJ0IHRvIHRpbWVzc3RhbXAKICAgIG15ICRUaW1lU3RhbXAgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lMlRpbWVTdGFtcCgKICAgICAgICBTeXN0ZW1UaW1lID0+ICRTeXN0ZW1UaW1lLAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGEgbG9nIGVudHJ5IGV4aXN0cyBuZXdlciB0aGFuIHRoZSBSZWxvYWRCbG9ja1RpbWUKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfbG9nICcKICAgICAgICAgICAgLiAnV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGlwID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCB1c2VyX2FnZW50ID0gPyBBTkQgY3JlYXRlZCA+PSA/ICcsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0l0ZW1JRH0sIFwkSVAsIFwkVXNlckFnZW50LCBcJFRpbWVTdGFtcCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEFscmVhZHlFeGlzdHMgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQWxyZWFkeUV4aXN0cyA9IDE7CiAgICB9CgogICAgcmV0dXJuIGlmICRBbHJlYWR5RXhpc3RzOwoKICAgICMgaW5zZXJ0IG5ldyBsb2cgZW50cnkKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gZmFxX2xvZyAnCiAgICAgICAgICAgIC4gJyhpdGVtX2lkLCBpbnRlcmZhY2UsIGlwLCB1c2VyX2FnZW50LCBjcmVhdGVkKSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXApJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte0ludGVyZmFjZX0sIFwkSVAsIFwkVXNlckFnZW50LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBGQVFUb3AxMEdldCgpCgpSZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIHRvcCAxMCBmYXEgYXJ0aWNsZSBpZHMuCgogICAgbXkgJFRvcDEwSURzUmVmID0gJEZBUU9iamVjdC0+RkFRVG9wMTBHZXQoCiAgICAgICAgSW50ZXJmYWNlICAgPT4gJ3B1YmxpYycsCiAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyAxLCAyLCAzIF0sICAjIChvcHRpb25hbCkgT25seSBzaG93IHRoZSBUb3AxMCBhcnRpY2xlcyBmcm9tIHRoZXNlIGNhdGVnb3JpZXMKICAgICAgICBMaW1pdCAgICAgICA9PiAxMCwgICAgICAgICAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDEwKQogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVG9wMTBJRHNSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAxMywKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMTU5LCAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIHZpc2l0cwogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAncHVibGljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gNiwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gNzgsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdwdWJsaWMnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiA0LAogICAgICAgICAgICAnQ291bnQnICAgICA9PiA1OSwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2ludGVybmFsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMjAsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDI5LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAncHVibGljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMSwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMjQsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdleHRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDExLAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAyNCwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2ludGVybmFsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gNSwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMTgsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdpbnRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDksCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDE2LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAnZXh0ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAyLAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAxNCwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2ludGVybmFsJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAxNCwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gNiwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ3B1YmxpYycsCiAgICAgICAgfQogICAgXTsKCj1jdXQKCnN1YiBGQVFUb3AxMEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJbnRlcmZhY2UgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIHZhbGlkIGlkIHN0cmluZwogICAgbXkgJFZhbGlkSURzU3RyaW5nID0gam9pbiAnLCAnLCAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRJRHNHZXQoKTsKCiAgICAjIHByZXBhcmUgU1FMCiAgICBteSBAQmluZDsKICAgIG15ICRTUUwgPSAnU0VMRUNUIGl0ZW1faWQsIGNvdW50KGl0ZW1faWQpIGFzIGl0ZW1jb3VudCwgZmFxX3N0YXRlX3R5cGUubmFtZSwgYXBwcm92ZWQgJwogICAgICAgIC4gJ0ZST00gZmFxX2xvZywgZmFxX2l0ZW0sIGZhcV9zdGF0ZSwgZmFxX3N0YXRlX3R5cGUgJwogICAgICAgIC4gJ1dIRVJFIGZhcV9sb2cuaXRlbV9pZCA9IGZhcV9pdGVtLmlkICcKICAgICAgICAuICdBTkQgZmFxX2l0ZW0uc3RhdGVfaWQgPSBmYXFfc3RhdGUuaWQgJwogICAgICAgIC4gIkFORCBmYXFfaXRlbS52YWxpZF9pZCBJTiAoJFZhbGlkSURzU3RyaW5nKSAiCiAgICAgICAgLiAnQU5EIGZhcV9zdGF0ZS50eXBlX2lkID0gZmFxX3N0YXRlX3R5cGUuaWQgJzsKCiAgICAjIGZpbHRlciBqdXN0IGNhdGVnb3JpZXMgd2l0aCBhdCBsZWFzdCBybyBwZXJtaXNzaW9uCiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUlEc30gJiYgcmVmICRQYXJhbXtDYXRlZ29yeUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgY2F0ZWdvcnkgaWRzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewogICAgICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRDYXRlZ29yeUlELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgIG15IEBTb3J0ZWRJRHMgPSBzb3J0IEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfTsKCiAgICAgICAgIyBzcGxpdCBJTiBzdGF0ZW1lbnQgd2l0aCBtb3JlIHRoYW4gOTAwIGVsZW1lbnRzIGluIG1vcmUgc3RhdGVtZW50cyBib21iaW5lZCB3aXRoIE9SCiAgICAgICAgIyBiZWNhdXNlIE9yYWNsZSBkb2Vzbid0IHN1cHBvcnQgbW9yZSB0aGFuIDEwMDAgZWxlbWVudHMgaW4gb25lIElOIHN0YXRlbWVudC4KICAgICAgICBteSBAU1FMU3RyaW5nczsKICAgICAgICBMT09QOgogICAgICAgIHdoaWxlICggc2NhbGFyIEBTb3J0ZWRJRHMgKSB7CgogICAgICAgICAgICBteSBAU29ydGVkSURzUGFydCA9IHNwbGljZSBAU29ydGVkSURzLCAwLCA5MDA7CgogICAgICAgICAgICBteSAkSURTdHJpbmcgPSBqb2luICcsJywgQFNvcnRlZElEc1BhcnQ7CgogICAgICAgICAgICBwdXNoIEBTUUxTdHJpbmdzLCAiIGZhcV9pdGVtLmNhdGVnb3J5X2lkIElOICgkSURTdHJpbmcpICI7CiAgICAgICAgfQoKICAgICAgICBteSAkU1FMU3RyaW5nID0gam9pbiAnIE9SICcsIEBTUUxTdHJpbmdzOwoKICAgICAgICAkU1FMIC49ICcgQU5EICggJyAuICRTUUxTdHJpbmcgLiAnICkgJzsKICAgIH0KCiAgICAjIGZpbHRlciByZXN1bHRzIGZvciBwdWJsaWMgYW5kIGN1c3RvbWVyIGludGVyZmFjZQogICAgaWYgKCAoICRQYXJhbXtJbnRlcmZhY2V9IGVxICdwdWJsaWMnICkgfHwgKCAkUGFyYW17SW50ZXJmYWNlfSBlcSAnZXh0ZXJuYWwnICkgKSB7CgogICAgICAgICMgb25seSBzaG93IGFwcHJvdmVkIGFydGljbGVzCiAgICAgICAgJFNRTCAuPSAnQU5EIGZhcV9pdGVtLmFwcHJvdmVkID0gMSAnOwoKICAgICAgICAjIG9ubHkgc2hvdyB0aGUgcHVibGljIGFydGljbGVzCiAgICAgICAgJFNRTCAuPSAiQU5EICggKCBmYXFfc3RhdGVfdHlwZS5uYW1lID0gJ3B1YmxpYycgQU5EIGZhcV9sb2cuaW50ZXJmYWNlID0gJ3B1YmxpYycgKSAiOwoKICAgICAgICAjIGN1c3RvbWVycyBjYW4gYWRkaXRpb25hbGx5IHNlZSB0aGUgZXh0ZXJuYWwgYXJ0aWNsZXMKICAgICAgICBpZiAoICRQYXJhbXtJbnRlcmZhY2V9IGVxICdleHRlcm5hbCcgKSB7CiAgICAgICAgICAgICRTUUwgLj0gIk9SICggZmFxX3N0YXRlX3R5cGUubmFtZSA9ICdleHRlcm5hbCcgQU5EIGZhcV9sb2cuaW50ZXJmYWNlID0gJ2V4dGVybmFsJyApICI7CiAgICAgICAgfQoKICAgICAgICAkU1FMIC49ICcpICc7CiAgICB9CgogICAgIyBmaWx0ZXIgcmVzdWx0cyBmb3IgZGVmaW5lZCB0aW1lIHBlcmlvZAogICAgaWYgKCAkUGFyYW17U3RhcnREYXRlfSAmJiAkUGFyYW17RW5kRGF0ZX0gKSB7CiAgICAgICAgJFNRTCAuPSAnQU5EIGZhcV9sb2cuY3JlYXRlZCA+PSA/IEFORCBmYXFfbG9nLmNyZWF0ZWQgPD0gPyAnOwogICAgICAgIHB1c2ggQEJpbmQsICggXCRQYXJhbXtTdGFydERhdGV9LCBcJFBhcmFte0VuZERhdGV9ICk7CiAgICB9CgogICAgIyBjb21wbGV0ZSBTUUwgc3RhdGVtZW50CiAgICAkU1FMIC49ICdHUk9VUCBCWSBpdGVtX2lkLCBmYXFfc3RhdGVfdHlwZS5uYW1lLCBhcHByb3ZlZCAnCiAgICAgICAgLiAnT1JERVIgQlkgaXRlbWNvdW50IERFU0MnOwoKICAgICMgZ2V0IHRoZSB0b3AgMTAgYXJ0aWNsZSBpZHMgZnJvbSBkYXRhYmFzZQogICAgcmV0dXJuIFtdIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIEJpbmQgID0+IFxAQmluZCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9IHx8IDEwLAogICAgKTsKCiAgICBteSBAUmVzdWx0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBSZXN1bHQsIHsKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIENvdW50ICAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFJvd1syXSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBcQFJlc3VsdDsKfQoKPWl0ZW0gRkFRSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSgpCgpVcGRhdGVzIHRoZSBVUkxzIG9mIHVwbG9hZGVkIGlubGluZSBhdHRhY2htZW50cy4KCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMiwKICAgICAgICBGb3JtSUQgICAgID0+IDQ1NiwKICAgICAgICBGaWxlSUQgICAgID0+IDUsCiAgICAgICAgQXR0YWNobWVudCA9PiBcJUF0dGFjaG1lbnQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb2YgdW5kZWYgaWYgYXR0YWNobWVudCBVUkwgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBGQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBBdHRhY2htZW50IEZvcm1JRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGF0dGFjaG1lbnQgaXMgYSBoYXNoIHJlZmVyZW5jZQogICAgaWYgKCByZWYgJFBhcmFte0F0dGFjaG1lbnR9IG5lICdIQVNIJyAmJiAhJXsgJFBhcmFte0F0dGFjaG1lbnR9IH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBdHRhY2htZW50IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgb25seSBjb25zaWRlciBpbmxpbmUgYXR0YWNobWVudHMgaGVyZSAodGhleSBoYXZlIGEgY29udGVudCBpZCkKICAgIHJldHVybiAxIGlmICEkUGFyYW17QXR0YWNobWVudH0tPntDb250ZW50SUR9OwoKICAgICMgZ2V0IGZhcSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBwaWN0dXJlIFVSTCBpbiB1cGxvYWQgY2FjaGUKICAgIG15ICRTZWFyY2ggPSAiQWN0aW9uPVBpY3R1cmVVcGxvYWQgLiBGb3JtSUQ9XFEkUGFyYW17Rm9ybUlEfVxFIC4gIgogICAgICAgIC4gIkNvbnRlbnRJRD1cUSRQYXJhbXtBdHRhY2htZW50fS0+e0NvbnRlbnRJRH1cRSI7CgogICAgIyBwaWN0dXJlIHVybCBpbiBmYXEgYXR0YWNobWVudAogICAgbXkgJFJlcGxhY2UgPSAiQWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50OyIKICAgICAgICAuICJJdGVtSUQ9JFBhcmFte0l0ZW1JRH07RmlsZUlEPSRQYXJhbXtGaWxlSUR9IjsKCiAgICAjIHJld3JpdGUgcGljdHVyZSB1cmxzCiAgICBGSUVMRDoKICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGNvbnRhaW5zIHNvbWV0aGluZwogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyJGaWVsZCROdW1iZXIifTsKCiAgICAgICAgIyByZW1vdmUgbmV3bGluZXMKICAgICAgICAkRkFRRGF0YXsiRmllbGQkTnVtYmVyIn0gPX4gc3sgW1xuXHJdKyB9e31neG1zOwoKICAgICAgICAjIHJlcGxhY2UgdXJsCiAgICAgICAgJEZBUURhdGF7IkZpZWxkJE51bWJlciJ9ID1+IHN7JFNlYXJjaH17JFJlcGxhY2V9eG1zOwogICAgfQoKICAgICMgdXBkYXRlIEZBUSBhcnRpY2xlIHdpdGhvdXQgd3JpdGluZyBhIGhpc3RvcnkgZW50cnkKICAgIG15ICRPayA9ICRTZWxmLT5GQVFVcGRhdGUoCiAgICAgICAgJUZBUURhdGEsCiAgICAgICAgSGlzdG9yeU9mZiAgPT4gMSwKICAgICAgICBBcHByb3ZhbE9mZiA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHVwZGF0ZSB3YXMgc3VjY2Vzc2Z1bAogICAgaWYgKCAhJE9rICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSBGQVEgSXRlbSMgJyRQYXJhbXtJdGVtSUR9JyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9aXRlbSBfRkFRQXBwcm92YWxVcGRhdGUoKQoKdXBkYXRlIHRoZSBhcHByb3ZhbCBzdGF0ZSBvZiBhbiBhcnRpY2xlCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5fRkFRQXBwcm92YWxVcGRhdGUoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgQXBwcm92ZWQgICA9PiAxLCAgICAjIDB8MSAoZGVmYXVsdCAwKQogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgX0ZBUUFwcHJvdmFsVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0FwcHJvdmVkfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQXBwcm92ZWQgcGFyYW1ldGVyIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyB1cGRhdGUgZGF0YWJhc2UKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnVVBEQVRFIGZhcV9pdGVtIFNFVCAnCiAgICAgICAgICAgIC4gJ2FwcHJvdmVkID0gPywgJwogICAgICAgICAgICAuICdjaGFuZ2VkID0gY3VycmVudF90aW1lc3RhbXAsICcKICAgICAgICAgICAgLiAnY2hhbmdlZF9ieSA9ID8gJwogICAgICAgICAgICAuICdXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0FwcHJvdmVkfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBhcHByb3ZhbCBmZWF0dXJlIGlzIGFjdGl2YXRlZCBhbmQgZmFxIGFydGljbGUgaXMgbm90IGFwcHJvdmVkIHlldAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgJiYgISRQYXJhbXtBcHByb3ZlZH0gKSB7CgogICAgICAgICMgZ2V0IGZhcSBkYXRhCiAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgbmV3IGFwcHJvdmFsIHRpY2tldAogICAgICAgIG15ICRPayA9ICRTZWxmLT5fRkFRQXBwcm92YWxUaWNrZXRDcmVhdGUoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJEZBUURhdGF7TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgIEZBUU51bWJlciAgPT4gJEZBUURhdGF7TnVtYmVyfSwKICAgICAgICAgICAgVGl0bGUgICAgICA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgIFN0YXRlSUQgICAgPT4gJEZBUURhdGF7U3RhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRPayApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkIG5vdCBjcmVhdGUgYXBwcm92YWwgdGlja2V0IScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfRkFRQXBwcm92YWxUaWNrZXRDcmVhdGUoKQoKY3JlYXRlcyBhbiBhcHByb3ZhbCB0aWNrZXQKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPl9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBDYXRlZ29yeUlEID0+IDIsCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgICAgIEZBUU51bWJlciAgPT4gMTAyMTEsCiAgICAgICAgVGl0bGUgICAgICA9PiAnU29tZSBUaXRsZScsCiAgICAgICAgU3RhdGVJRCAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgX0ZBUUFwcHJvdmFsVGlja2V0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBDYXRlZ29yeUlEIEZBUU51bWJlciBUaXRsZSBTdGF0ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgc3ViamVjdAogICAgbXkgJFN1YmplY3QgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldFN1YmplY3QnKTsKICAgICRTdWJqZWN0ID1+IHN7IDxPVFJTX0ZBUV9OVU1CRVI+IH17JFBhcmFte0ZBUU51bWJlcn19eG1zOwoKICAgICMgY2hlY2sgaWYgd2UgY2FuIGZpbmQgZXhpc3Rpbmcgb3BlbiBhcHByb3ZhbCB0aWNrZXRzIGZvciB0aGlzIEZBUSBhcnRpY2xlCiAgICBteSBAVGlja2V0SURzID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRTZWFyY2goCiAgICAgICAgUmVzdWx0ICAgID0+ICdBUlJBWScsCiAgICAgICAgVGl0bGUgICAgID0+ICRTdWJqZWN0LAogICAgICAgIFN0YXRlVHlwZSA9PiAnT3BlbicsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKICAgICMgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBhcHByb3ZhbCB0aWNrZXQgaWYgdGhlcmUgaXMgc3RpbGwgYXQgbGVhc3Qgb25lIHRpY2tldCBvcGVuCiAgICAjIGZvciB0aGlzIEZBUSBhcnRpY2xlCiAgICByZXR1cm4gMSBpZiBAVGlja2V0SURzOwoKICAgICMgZ2V0IHRpY2tldCB0eXBlIGZyb20gU3lzQ29uZmlnCiAgICBteSAkVGlja2V0VHlwZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsVGlja2V0VHlwZScpIHx8ICcnOwoKICAgICMgdmFsaWRhdGUgdGlja2V0IHR5cGUgaWYgYW55CiAgICBpZiAoJFRpY2tldFR5cGUpIHsKCiAgICAgICAgIyBnZXQgYSB0aWNrZXQgdHlwZSBsb29rdXAgdGFibGUKICAgICAgICBteSAlVHlwZUxpc3QgICA9ICRTZWxmLT57VHlwZU9iamVjdH0tPlR5cGVMaXN0KCk7CiAgICAgICAgbXkgJVR5cGVMb29rdXAgPSByZXZlcnNlICVUeXBlTGlzdDsKCiAgICAgICAgIyBzZXQgJFRpY2tldFR5cGUgdG8gZW1wdHkgaWYgVGlja2V5VHlwZSBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIGxvb2t1cCB0YWJsZS4gSWYgc2V0IHRvCiAgICAgICAgIyAgICBlbW90eSBUaWNrZXRDcmVhdGUoKSB3aWxsIHVzZSBhcyBkZWZhdWx0IFR5cGVJRCA9IDEsIG5vIG1hdHRlciBpZiBpdCBpcyB2YWxpZCBvciBub3QuCiAgICAgICAgJFRpY2tldFR5cGUgPSAkVHlwZUxvb2t1cHskVGlja2V0VHlwZX0gPyAkVGlja2V0VHlwZSA6ICcnOwogICAgfQoKICAgICMgY3JlYXRlIHRpY2tldAogICAgbXkgJFRpY2tldElEID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgPT4gJFN1YmplY3QsCiAgICAgICAgUXVldWUgICAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxRdWV1ZScpIHx8ICdSYXcnLAogICAgICAgIExvY2sgICAgID0+ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsVGlja2V0UHJpb3JpdHknKSB8fCAnMyBub3JtYWwnLAogICAgICAgIFN0YXRlICAgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsVGlja2V0RGVmYXVsdFN0YXRlJykgfHwgJ25ldycsCiAgICAgICAgVHlwZSAgICAgPT4gJFRpY2tldFR5cGUsCiAgICAgICAgT3duZXJJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICBpZiAoJFRpY2tldElEKSB7CgogICAgICAgICMgZ2V0IFVzZXJOYW1lCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+VXNlck5hbWUoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBmYXEgc3RhdGUKICAgICAgICBteSAlU3RhdGUgPSAkU2VsZi0+U3RhdGVHZXQoCiAgICAgICAgICAgIFN0YXRlSUQgPT4gJFBhcmFte1N0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2F0ZWdvcmllcyBjYW4gYmUgbmVzdGVkOyB5b3UgY2FuIGhhdmUgc29tZTo6bG9uZzo6Y2F0ZWdvcnkuCiAgICAgICAgbXkgQENhdGVnb3J5TmFtZXM7CiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW17Q2F0ZWdvcnlJRH07CiAgICAgICAgQ0FURUdPUlk6CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgbXkgJUNhdGVnb3J5ID0gJFNlbGYtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENhdGVnb3J5TmFtZXMsICRDYXRlZ29yeXtOYW1lfTsKICAgICAgICAgICAgbGFzdCBDQVRFR09SWSBpZiAhJENhdGVnb3J5e1BhcmVudElEfTsKICAgICAgICAgICAgJENhdGVnb3J5SUQgPSAkQ2F0ZWdvcnl7UGFyZW50SUR9OwogICAgICAgIH0KICAgICAgICBteSAkQ2F0ZWdvcnkgPSBqb2luKCAnOjonLCByZXZlcnNlIEBDYXRlZ29yeU5hbWVzICk7CgogICAgICAgIG15ICRMYW5ndWFnZTsKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKSApIHsKICAgICAgICAgICAgJExhbmd1YWdlID0gJFNlbGYtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkUGFyYW17TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGFuZ3VhZ2UgPSAnLSc7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBib2R5IGZyb20gY29uZmlnCiAgICAgICAgbXkgJEJvZHkgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldEJvZHknKTsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfQ0FURUdPUllJRD4gfXskUGFyYW17Q2F0ZWdvcnlJRH19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9DQVRFR09SWT4gICB9eyRDYXRlZ29yeX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX0xBTkdVQUdFPiAgIH17JExhbmd1YWdlfXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfSVRFTUlEPiAgICAgfXskUGFyYW17SXRlbUlEfX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX05VTUJFUj4gICAgIH17JFBhcmFte0ZBUU51bWJlcn19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9USVRMRT4gICAgICB9eyRQYXJhbXtUaXRsZX19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9BVVRIT1I+ICAgICB9eyRVc2VyTmFtZX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX1NUQVRFPiAgICAgIH17JFN0YXRle05hbWV9fXhtczsKCiAgICAgICAgIyBjcmVhdGUgYXJ0aWNsZQogICAgICAgIG15ICRBcnRpY2xlSUQgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgIFRpY2tldElEICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgQXJ0aWNsZVR5cGUgPT4gJ25vdGUtaW50ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICA9PiAnc3lzdGVtJywKICAgICAgICAgICAgU3ViamVjdCAgICAgPT4gJFN1YmplY3QsCiAgICAgICAgICAgIEJvZHkgICAgICAgID0+ICRCb2R5LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlID0+ICdTeXN0ZW1SZXF1ZXN0JywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4KICAgICAgICAgICAgICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE5vdGUnKS0+e0hpc3RvcnlDb21tZW50fQogICAgICAgICAgICAgICAgfHwgJycsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRBcnRpY2xlSUQ7CiAgICB9CgogICAgcmV0dXJuOwp9CgojCiMgRGVsZXRlcyBhbGwgbmVlZGVkIEZBUSBpdGVtIGNhY2hlIGVudHJpZXMgZm9yIGEgZ2l2ZW4gRkFRIEl0ZW1JRC4KIwpzdWIgX0RlbGV0ZUZyb21GQVFDYWNoZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBDbGVhciBGQVFHZXQgY2FjaGUKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRQYXJhbXtJdGVtSUR9IC4gJzo6SXRlbUZpZWxkczo6MScsCiAgICApOwogICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJFBhcmFte0l0ZW1JRH0gLiAnOjpJdGVtRmllbGRzOjowJywKICAgICk7CgogICAgIyBDbGVhciBJdGVtRmVsZEdldCBjYWNoZQogICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJ0l0ZW1GaWVsZEdldDo6SXRlbUlEOjonIC4gJFBhcmFte0l0ZW1JRH0sCiAgICApOwp9CgoxOwoKPWVuZCBJbnRlcm5hbDoKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vRkFRU2VhcmNoLnBtIC0gYWxsIEZBUSBzZWFyY2ggZnVuY3Rpb25zCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6RkFRU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVFTZWFyY2ggLSBGQVEgc2VhcmNoIGxpYgoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgRkFRIHNlYXJjaCBmdW5jdGlvbnMuCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBGQVFTZWFyY2goKQoKc2VhcmNoIGluIEZBUSBhcnRpY2xlcwoKICAgIG15IEBJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCgogICAgICAgIE51bWJlciAgICA9PiAnKjEzNConLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVGl0bGUgICAgID0+ICcqc29tZSB0aXRsZSonLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgIyBpcyBzZWFyY2hpbmcgaW4gTnVtYmVyLCBUaXRsZSwgS2V5d29yZCBhbmQgRmllbGQxLTYKICAgICAgICBXaGF0ICAgICAgPT4gJypzb21lIHRleHQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBLZXl3b3JkICAgPT4gJyp3ZWJzZXJ2ZXIqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFN0YXRlcyAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIDEgPT4gJ2ludGVybmFsJywKICAgICAgICAgICAgMiA9PiAnZXh0ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gWyA0LCA1LCA2IF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBDYXRlZ29yeUlEcyA9PiBbIDcsIDgsIDkgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFZhbGlkSURzICAgID0+IFsgMSwgMiwgMyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIChkZWZhdWx0IDEpCgogICAgICAgICMgQXBwcm92ZWQKICAgICAgICAjICAgIE9ubHkgYXZhaWxhYmxlIGluIGludGVybmFsIGludGVyZmFjZSAoYWdlbnQgaW50ZXJmYWNlKQogICAgICAgIEFwcHJvdmVkICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIDEgb3IgMCwKCiAgICAgICAgIyBWb3RlcwogICAgICAgICMgICBBdCBsZWFzdCBvbmUgb3BlcmF0b3IgbXVzdCBiZSBzcGVjaWZpZWQuIE9wZXJhdG9ycyB3aWxsIGJlIGNvbm5lY3RlZCB3aXRoIEFORCwKICAgICAgICAjICAgICAgIHZhbHVlcyBpbiBhbiBvcGVyYXRvciB3aXRoIE9SLgogICAgICAgICMgICBZb3UgY2FuIGFsc28gcGFzcyBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IHRvIGFuIG9wZXJhdG9yOiBbMTIzLCA2NTRdCiAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICBFcXVhbHMgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IDEyMywKICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gMTIzLAogICAgICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDEyMywKICAgICAgICB9CgogICAgICAgICMgUmF0ZQogICAgICAgICMgICBBdCBsZWFzdCBvbmUgb3BlcmF0b3IgbXVzdCBiZSBzcGVjaWZpZWQuIE9wZXJhdG9ycyB3aWxsIGJlIGNvbm5lY3RlZCB3aXRoIEFORCwKICAgICAgICAjICAgICAgIHZhbHVlcyBpbiBhbiBvcGVyYXRvciB3aXRoIE9SLgogICAgICAgICMgICBZb3UgY2FuIGFsc28gcGFzcyBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IHRvIGFuIG9wZXJhdG9yOiBbNTAsIDc1XQogICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICBFcXVhbHMgICAgICAgICAgICA9PiA3NSwKICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gNzUsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDc1LAogICAgICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiA3NSwKICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gNzUsCiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBGQVEgaXRlbSBwcm9wZXJ0aWVzIChvcHRpb25hbCkKICAgICAgICBDcmVhdGVkVXNlcklEcyA9PiBbMSwgMTIsIDQ1NSwgMzJdCgogICAgICAgICMgY2hhbmdlIEZBUSBpdGVtIHByb3BlcnRpZXMgKG9wdGlvbmFsKQogICAgICAgIExhc3RDaGFuZ2VkVXNlcklEcyA9PiBbMSwgMTIsIDQ1NSwgMzJdCgogICAgICAgICMgRkFRIGl0ZW1zIGNyZWF0ZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChpdGVtIG9sZGVyIHRoYW4gNjAgbWludXRlcykgIChvcHRpb25hbCkKICAgICAgICBJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlcyA9PiA2MCwKICAgICAgICAjIEZBUSBpdGVtIGNyZWF0ZWQgbGVzcyB0aGFuIDEyMCBtaW51dGVzIGFnbyAoaXRlbSBuZXdlciB0aGFuIDEyMCBtaW51dGVzKSAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIEZBUSBpdGVtcyB3aXRoIGNyZWF0ZSB0aW1lIGFmdGVyIC4uLiAoaXRlbSBuZXdlciB0aGFuIHRoaXMgZGF0ZSkgKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDA2LTAxLTA5IDAwOjAwOjAxJywKICAgICAgICAjIEZBUSBpdGVtcyB3aXRoIGNyZWF0ZWQgdGltZSBiZWZvcmUgLi4uIChpdGVtIG9sZGVyIHRoYW4gdGhpcyBkYXRlKSAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICAjIEZBUSBpdGVtcyBjaGFuZ2VkIG1vcmUgdGhhbiA2MCBtaW51dGVzIGFnbyAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBGQVEgaXRlbXMgY2hhbmdlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBJdGVtQ2hhbmdlVGltZU5ld2VyTWludXRlcyA9PiAxMjAsCgogICAgICAgICMgRkFRIGl0ZW0gd2l0aCBjaGFuZ2VkIHRpbWUgYWZ0ZXIgLi4uIChpdGVtIGNoYW5nZWQgbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBGQVEgaXRlbSB3aXRoIGNoYW5nZWQgdGltZSBiZWZvcmUgLi4uIChpdGVtIGNoYW5nZWQgb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsCgogICAgICAgIE9yZGVyQnkgPT4gWyAnRkFRSUQnLCAnVGl0bGUnIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdGQVFJRCcgXSwKICAgICAgICAjIChGQVFJRCwgTnVtYmVyLCBUaXRsZSwgTGFuZ3VhZ2UsIENhdGVnb3J5LCBWYWxpZCwgQ3JlYXRlZCwKICAgICAgICAjIENoYW5nZWQsIFN0YXRlLCBWb3RlcywgUmVzdWx0KQoKICAgICAgICAjIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIE9yZGVyQnk6CiAgICAgICAgIyBUaGUgT3JkZXJCeURpcmVjdGlvbiBjYW4gYmUgc3BlY2lmaWVkIGZvciBlYWNoIE9yZGVyQnkgYXR0cmlidXRlLgogICAgICAgICMgVGhlIHBhaXJpbmcgaXMgbWFkZSBieSB0aGUgYXJyYXkgaW5kZXhlcy4KCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbICdEb3duJywgJ1VwJyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ0Rvd24nIF0KICAgICAgICAjIChEb3duIHwgVXApCgogICAgICAgIExpbWl0ICAgICA9PiAxNTAsCgogICAgICAgIEludGVyZmFjZSA9PiB7ICAgICAgICAgICAgICAjIChkZWZhdWx0IGludGVybmFsKQogICAgICAgICAgICBTdGF0ZUlEID0+IDMsCiAgICAgICAgICAgIE5hbWUgICAgPT4gJ3B1YmxpYycsICAgICMgcHVibGljfGV4dGVybmFsfGludGVybmFsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgIEBJRHMgPSAoCiAgICAgICAgMzIsCiAgICAgICAgMTMsCiAgICAgICAgMTIsCiAgICAgICAgOSwKICAgICAgICA2LAogICAgICAgIDUsCiAgICAgICAgNCwKICAgICAgICAxLAogICAgKTsKCj1jdXQKCnN1YiBGQVFTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlCiAgICBpZiAoICEkUGFyYW17SW50ZXJmYWNlfSB8fCAhJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSApIHsKICAgICAgICAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9ID0gJ2ludGVybmFsJzsKICAgIH0KCiAgICAjIHZlcmlmeSB0aGF0IGFsbCBwYXNzZWQgYXJyYXkgcGFyYW1ldGVycyBjb250YWluIGFuIGFycmF5cmVmCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9yZGVyQnkgT3JkZXJCeURpcmVjdGlvbikpIHsKCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFBhcmFteyRBcmd1bWVudH0gfHw9IFtdOwoKICAgICAgICAgICAgbmV4dCBBUkdVTUVOVDsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRQYXJhbXskQXJndW1lbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBvcmRlciB0YWJsZQogICAgbXkgJU9yZGVyQnlUYWJsZSA9ICgKCiAgICAgICAgIyBGQVEgaXRlbSBhdHRyaWJ1dGVzCiAgICAgICAgRkFRSUQgICAgPT4gJ2kuaWQnLAogICAgICAgIE51bWJlciAgID0+ICdpLmZfbnVtYmVyJywKICAgICAgICBUaXRsZSAgICA9PiAnaS5mX3N1YmplY3QnLAogICAgICAgIExhbmd1YWdlID0+ICdpLmZfbGFuZ3VhZ2VfaWQnLAogICAgICAgIENhdGVnb3J5ID0+ICdpLmNhdGVnb3J5X2lkJywKICAgICAgICBWYWxpZCAgICA9PiAnaS52YWxpZF9pZCcsCiAgICAgICAgQ3JlYXRlZCAgPT4gJ2kuY3JlYXRlZCcsCiAgICAgICAgQ2hhbmdlZCAgPT4gJ2kuY2hhbmdlZCcsCgogICAgICAgICMgU3RhdGUgYXR0cmlidXRlcwogICAgICAgIFN0YXRlID0+ICdzLm5hbWUnLAoKICAgICAgICAjIFZvdGUgYXR0cmlidXRlcwogICAgICAgIFZvdGVzICA9PiAndm90ZXMnLAogICAgICAgIFJlc3VsdCA9PiAndnJhdGUnLAogICAgKTsKCiAgICAjIHF1b3RlIGlkIGFycmF5IGVsZW1lbnRzCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkS2V5IChxdyhMYW5ndWFnZUlEcyBDYXRlZ29yeUlEcyBWYWxpZElEcyBDcmVhdGVkVXNlcklEcyBMYXN0Q2hhbmdlZFVzZXJJRHMpKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAhJFBhcmFteyRLZXl9OwoKICAgICAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXskS2V5fSApICkgewoKICAgICAgICAgICAgIyBsb2cgZXJyb3IKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBnaXZlbiBwYXJhbSAnJEtleScgaXMgaW52YWxpZCBvciBhbiBlbXB0eSBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcXVvdGUgZWxlbWVudHMKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCBAeyAkUGFyYW17JEtleX0gfSApIHsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRFbGVtZW50LCAnSW50ZWdlcicgKSApIHsKCiAgICAgICAgICAgICAgICAjIGxvZyBlcnJvcgogICAgICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGdpdmVuIHBhcmFtICckRWxlbWVudCcgaW4gJyRLZXknIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBPcmRlckJ5IGNvbnRhaW5zIG9ubHkgdW5pcXVlIHZhbGlkIHZhbHVlcwogICAgbXkgJU9yZGVyQnlTZWVuOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIGlmICggISRPcmRlckJ5IHx8ICEkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ICkgewoKICAgICAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeSBjb250YWlucyBpbnZhbGlkIHZhbHVlICckT3JkZXJCeScgIgogICAgICAgICAgICAgICAgICAgIC4gJ29yIHRoZSB2YWx1ZSBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UKICAgICAgICAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ID0gMTsKCiAgICB9CgogICAgIyBjaGVjayBpZiBPcmRlckJ5RGlyZWN0aW9uIGFycmF5IGNvbnRhaW5zIG9ubHkgJ1VwJyBvciAnRG93bicKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uICggQHsgJFBhcmFte09yZGVyQnlEaXJlY3Rpb259IH0gKSB7CgogICAgICAgICMgb25seSAnVXAnIG9yICdEb3duJyBhbGxvd2VkCiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnVXAnOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICREaXJlY3Rpb24gZXEgJ0Rvd24nOwoKICAgICAgICAjIGZvdW5kIGFuIGVycm9yCiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJPcmRlckJ5RGlyZWN0aW9uIGNhbiBvbmx5IGNvbnRhaW4gJ1VwJyBvciAnRG93bichIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGFzc2VtYmxlIHRoZSBPUkRFUiBCWSBjbGF1c2UKICAgIG15IEBTUUxPcmRlckJ5OwogICAgbXkgJENvdW50ID0gMDsKICAgIGZvciBteSAkT3JkZXJCeSAoIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgewoKICAgICAgICAjIHNldCB0aGUgZGVmYXVsdCBvcmRlciBkaXJlY3Rpb24KICAgICAgICBteSAkRGlyZWN0aW9uID0gJ0RFU0MnOwoKICAgICAgICAjIGFkZCB0aGUgZ2l2ZW4gb3JkZXIgZGlyZWN0aW9uCiAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0tPlskQ291bnRdICkgewogICAgICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gZXEgJ1VwJyApIHsKICAgICAgICAgICAgICAgICREaXJlY3Rpb24gPSAnQVNDJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdERVNDJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgU1FMCiAgICAgICAgcHVzaCBAU1FMT3JkZXJCeSwgIiRPcmRlckJ5VGFibGV7JE9yZGVyQnl9ICREaXJlY3Rpb24iOwogICAgfQogICAgY29udGludWUgewogICAgICAgICRDb3VudCsrOwogICAgfQoKICAgICMgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBvcmRlcmluZyBpcyBub3QgZGV0ZXJtaW5lZAogICAgIyB3ZSBhZGQgYW4gZGVzY2VuZGluZyBvcmRlcmluZyBieSBpZAogICAgaWYgKCAhZ3JlcCB7ICRfIGVxICdGQVFJRCcgfSAoIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgKSB7CiAgICAgICAgcHVzaCBAU1FMT3JkZXJCeSwgIiRPcmRlckJ5VGFibGV7RkFRSUR9IERFU0MiOwogICAgfQoKICAgICMgc3FsCiAgICBteSAkU1FMID0gJ1NFTEVDVCBpLmlkLCBjb3VudCggdi5pdGVtX2lkICkgYXMgdm90ZXMsIGF2Zyggdi5yYXRlICkgYXMgdnJhdGUgJwogICAgICAgIC4gJ0ZST00gZmFxX2l0ZW0gaSAnCiAgICAgICAgLiAnTEVGVCBKT0lOIGZhcV92b3RpbmcgdiBPTiB2Lml0ZW1faWQgPSBpLmlkICcKICAgICAgICAuICdMRUZUIEpPSU4gZmFxX3N0YXRlIHMgT04gcy5pZCA9IGkuc3RhdGVfaWQnOwoKICAgICMgZXh0ZW5kZWQgU1FMCiAgICBteSAkRXh0ID0gJyc7CgogICAgIyBmdWxsdGV4dCBzZWFyY2gKICAgIGlmICggJFBhcmFte1doYXR9ICYmICRQYXJhbXtXaGF0fSBuZSAnKicgKSB7CgogICAgICAgICMgZGVmaW5lIHRoZSBzZWFyY2ggZmllbGRzIGZvciBmdWxsdGV4dCBzZWFyY2gKICAgICAgICBteSBAU2VhcmNoRmllbGRzID0gKCAnaS5mX251bWJlcicsICdpLmZfc3ViamVjdCcsICdpLmZfa2V5d29yZHMnICk7CgogICAgICAgICMgdXNlZCBmcm9tIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGludGVybmFsKQogICAgICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSBlcSAnaW50ZXJuYWwnICkgewoKICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIHN0YXRlIG9mIHRoZSBmaWVsZCAoaW50ZXJuYWwsIGV4dGVybmFsLCBwdWJsaWMpCiAgICAgICAgICAgICAgICBteSAkRmllbGRTdGF0ZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCAnRkFROjpJdGVtOjpGaWVsZCcgLiAkTnVtYmVyICktPntTaG93fTsKCiAgICAgICAgICAgICAgICAjIGFkZCBhbGwgaW50ZXJuYWwsIGV4dGVybmFsIGFuZCBwdWJsaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEZpZWxkU3RhdGUgZXEgJ2ludGVybmFsJwogICAgICAgICAgICAgICAgICAgIHx8ICRGaWVsZFN0YXRlIGVxICdleHRlcm5hbCcKICAgICAgICAgICAgICAgICAgICB8fCAkRmllbGRTdGF0ZSBlcSAncHVibGljJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hGaWVsZHMsICdpLmZfZmllbGQnIC4gJE51bWJlcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB1c2VkIGZyb20gdGhlIGN1c3RvbWVyIGludGVyZmFjZSAoZXh0ZXJuYWwpCiAgICAgICAgZWxzaWYgKCAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IGVxICdleHRlcm5hbCcgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgc3RhdGUgb2YgdGhlIGZpZWxkIChpbnRlcm5hbCwgZXh0ZXJuYWwsIHB1YmxpYykKICAgICAgICAgICAgICAgIG15ICRGaWVsZFN0YXRlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKS0+e1Nob3d9OwoKICAgICAgICAgICAgICAgICMgYWRkIGFsbCBleHRlcm5hbCBhbmQgcHVibGljIGZpZWxkcwogICAgICAgICAgICAgICAgaWYgKCAkRmllbGRTdGF0ZSBlcSAnZXh0ZXJuYWwnIHx8ICRGaWVsZFN0YXRlIGVxICdwdWJsaWMnICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEZpZWxkcywgJ2kuZl9maWVsZCcgLiAkTnVtYmVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVzZWQgZnJvbSB0aGUgcHVibGljIGludGVyZmFjZSAocHVibGljKQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgc3RhdGUgb2YgdGhlIGZpZWxkIChpbnRlcm5hbCwgZXh0ZXJuYWwsIHB1YmxpYykKICAgICAgICAgICAgICAgIG15ICRGaWVsZFN0YXRlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKS0+e1Nob3d9OwoKICAgICAgICAgICAgICAgICMgYWRkIGFsbCBwdWJsaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoICRGaWVsZFN0YXRlIGVxICdwdWJsaWMnICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEZpZWxkcywgJ2kuZl9maWVsZCcgLiAkTnVtYmVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgU1FMIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoCiAgICAgICAgJEV4dCAuPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVlcnlDb25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICAgICA9PiBcQFNlYXJjaEZpZWxkcywKICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRQYXJhbXtXaGF0fSwKICAgICAgICAgICAgU2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgU2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICApOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgbnVtYmVyCiAgICBpZiAoICRQYXJhbXtOdW1iZXJ9ICkgewogICAgICAgICRQYXJhbXtOdW1iZXJ9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOdW1iZXJ9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17TnVtYmVyfSwgJ0xpa2UnICk7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gIiBMT1dFUihpLmZfbnVtYmVyKSBMSUtFIExPV0VSKCciIC4gJFBhcmFte051bWJlcn0gLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSB0aXRsZQogICAgaWYgKCAkUGFyYW17VGl0bGV9ICkgewogICAgICAgICRQYXJhbXtUaXRsZX0gPSAiXCUkUGFyYW17VGl0bGV9XCUiOwogICAgICAgICRQYXJhbXtUaXRsZX0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17VGl0bGV9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17VGl0bGV9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKGkuZl9zdWJqZWN0KSBMSUtFIExPV0VSKCciIC4gJFBhcmFte1RpdGxlfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgbGFuZ3VhZ2VzCiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEc30gJiYgcmVmICRQYXJhbXtMYW5ndWFnZUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17TGFuZ3VhZ2VJRHN9IH0gKSB7CgogICAgICAgIG15ICRJblN0cmluZyA9ICRTZWxmLT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICdpLmZfbGFuZ3VhZ2VfaWQnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiAkUGFyYW17TGFuZ3VhZ2VJRHN9LAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICRJblN0cmluZzsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgY2F0ZWdvcmllcwogICAgaWYgKCAkUGFyYW17Q2F0ZWdvcnlJRHN9ICYmIHJlZiAkUGFyYW17Q2F0ZWdvcnlJRHN9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS5jYXRlZ29yeV9pZCcsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+ICRQYXJhbXtDYXRlZ29yeUlEc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmFsdWUgZm9yIFZhbGlkSURzIChvbmx5IHNlYXJjaCBmb3IgdmFsaWQgRkFRcykKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbGlkSURzfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgICAgIG15IEBWYWxpZElEcyA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZElEc0dldCgpOwoKICAgICAgICAkUGFyYW17VmFsaWRJRHN9ID0gXEBWYWxpZElEczsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgVmFsaWRJRHMKICAgIGlmICggJFBhcmFte1ZhbGlkSURzfSAmJiByZWYgJFBhcmFte1ZhbGlkSURzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtWYWxpZElEc30gfSApIHsKCiAgICAgICAgbXkgJEluU3RyaW5nID0gJFNlbGYtPl9JbkNvbmRpdGlvbkdldCgKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ2kudmFsaWRfaWQnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiAkUGFyYW17VmFsaWRJRHN9LAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICRJblN0cmluZzsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3Igc3RhdGVzCiAgICBpZiAoICRQYXJhbXtTdGF0ZXN9ICYmIHJlZiAkUGFyYW17U3RhdGVzfSBlcSAnSEFTSCcgJiYgJXsgJFBhcmFte1N0YXRlc30gfSApIHsKCiAgICAgICAgbXkgQFN0YXRlcyA9IG1hcCB7ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJF8sICdJbnRlZ2VyJyApIH0ga2V5cyAleyAkUGFyYW17U3RhdGVzfSB9OwoKICAgICAgICByZXR1cm4gaWYgc2NhbGFyIEBTdGF0ZXMgIT0ga2V5cyAkUGFyYW17U3RhdGVzfTsKCiAgICAgICAgbXkgJEluU3RyaW5nID0gJFNlbGYtPl9JbkNvbmRpdGlvbkdldCgKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ3MudHlwZV9pZCcsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IFxAU3RhdGVzLAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICRJblN0cmluZzsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3Iga2V5d29yZHMKICAgIGlmICggJFBhcmFte0tleXdvcmR9ICkgewogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkUGFyYW17S2V5d29yZH0gPSAiXCUkUGFyYW17S2V5d29yZH1cJSI7CiAgICAgICAgJFBhcmFte0tleXdvcmR9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtLZXl3b3JkfSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17S2V5d29yZH0gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXtLZXl3b3JkfSwgJ0xpa2UnICk7CgogICAgICAgIGlmICggJFNlbGYtPntEQk9iamVjdH0tPkdldERhdGFiYXNlRnVuY3Rpb24oJ05vTG93ZXJJbkxhcmdlVGV4dCcpICkgewogICAgICAgICAgICAkRXh0IC49ICIgaS5mX2tleXdvcmRzIExJS0UgJyIgLiAkUGFyYW17S2V5d29yZH0gLiAiJyAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkU2VsZi0+e0RCT2JqZWN0fS0+R2V0RGF0YWJhc2VGdW5jdGlvbignTGNhc2VMaWtlSW5MYXJnZVRleHQnKSApIHsKICAgICAgICAgICAgJEV4dAogICAgICAgICAgICAgICAgLj0gIiBMQ0FTRShpLmZfa2V5d29yZHMpIExJS0UgTENBU0UoJyIKICAgICAgICAgICAgICAgIC4gJFBhcmFte0tleXdvcmR9CiAgICAgICAgICAgICAgICAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRFeHQKICAgICAgICAgICAgICAgIC49ICIgTE9XRVIoaS5mX2tleXdvcmRzKSBMSUtFIExPV0VSKCciCiAgICAgICAgICAgICAgICAuICRQYXJhbXtLZXl3b3JkfQogICAgICAgICAgICAgICAgLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyBvbmx5IGFwcHJvdmVkIGZhcSBhcnRpY2xlcyBmb3IgcHVibGljIGFuZCBjdXN0b21lciBpbnRlcmZhY2UKICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSBlcSAncHVibGljJyB8fCAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IGVxICdleHRlcm5hbCcgKSB7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJyBpLmFwcHJvdmVkID0gMSc7CiAgICB9CgogICAgIyBvdGhlcndpc2UgY2hlY2sgaWYgbmVlZCB0byBzZWFyY2ggZm9yIGFwcHJvdmVkIHN0YXR1cwogICAgZWxzaWYgKCBkZWZpbmVkICRQYXJhbXtBcHByb3ZlZH0gKSB7CiAgICAgICAgbXkgJEFwcHJvdmVkVmFsdWUgPSAkUGFyYW17QXBwcm92ZWR9ID8gMSA6IDA7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gIiBpLmFwcHJvdmVkID0gJEFwcHJvdmVkVmFsdWUiOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBjcmVhdGUgdXNlcnMKICAgIGlmICgKICAgICAgICAkUGFyYW17Q3JlYXRlZFVzZXJJRHN9CiAgICAgICAgJiYgcmVmICRQYXJhbXtDcmVhdGVkVXNlcklEc30gZXEgJ0FSUkFZJwogICAgICAgICYmIEB7ICRQYXJhbXtDcmVhdGVkVXNlcklEc30gfQogICAgICAgICkKICAgIHsKCiAgICAgICAgbXkgJEluU3RyaW5nID0gJFNlbGYtPl9JbkNvbmRpdGlvbkdldCgKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ2kuY3JlYXRlZF9ieScsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+ICRQYXJhbXtDcmVhdGVkVXNlcklEc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBsYXN0IGNoYW5nZSB1c2VycwogICAgaWYgKAogICAgICAgICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJJRHN9CiAgICAgICAgJiYgcmVmICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJJRHN9IGVxICdBUlJBWScKICAgICAgICAmJiBAeyAkUGFyYW17TGFzdENoYW5nZWRVc2VySURzfSB9CiAgICAgICAgKQogICAgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS5jaGFuZ2VkX2J5JywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gJFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBjcmVhdGUgYW5kIGNoYW5nZSB0aW1lcwogICAgIyByZW1lbWJlciBjdXJyZW50IHRpbWUgdG8gcHJldmVudCBzZWFyY2hlcyBmb3IgZnV0dXJlIHRpbWVzdGFtcHMKICAgIG15ICRDdXJyZW50U3lzdGVtVGltZSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKTsKCiAgICAjIGdldCBGQVEgaXRlbXMgY3JlYXRlZCBvbGRlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlc30gKSB7CgogICAgICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlc30gfHw9IDA7CgogICAgICAgIG15ICRUaW1lU3RhbXAgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lKCk7CiAgICAgICAgJFRpbWVTdGFtcCAtPSAoICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlc30gKiA2MCApOwoKICAgICAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVPbGRlckRhdGV9ID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJUaW1lU3RhbXAoCiAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFRpbWVTdGFtcCwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtcyBjcmVhdGVkIG5ld2VyIHRoYW4geCBtaW51dGVzCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzfSApIHsKCiAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzfSB8fD0gMDsKCiAgICAgICAgbXkgJFRpbWVTdGFtcCA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKTsKICAgICAgICAkVGltZVN0YW1wIC09ICggJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzfSAqIDYwICk7CgogICAgICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZX0gPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lMlRpbWVTdGFtcCgKICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkVGltZVN0YW1wLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW1zIGNyZWF0ZWQgb2xkZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIG15ICRDb21wYXJlQ3JlYXRlVGltZU9sZGVyTmV3ZXJEYXRlOwogICAgaWYgKCAkUGFyYW17SXRlbUNyZWF0ZVRpbWVPbGRlckRhdGV9ICkgewoKICAgICAgICAjIGNoZWNrIHRpbWUgZm9ybWF0CiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVPbGRlckRhdGV9CiAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSchIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBteSAkVGltZSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKAogICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSwKICAgICAgICApOwogICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJENvbXBhcmVDcmVhdGVUaW1lT2xkZXJOZXdlckRhdGUgPSAkVGltZTsKCiAgICAgICAgJEV4dCAuPSAiIEFORCBpLmNyZWF0ZWQgPD0gJyIKICAgICAgICAgICAgLiAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0gKSAuICInIjsKICAgIH0KCiAgICAjIGdldCBJdGVtcyBjaGFuZ2VkIG5ld2VyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBpZiAoICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZX0gKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9CiAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSchIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBteSAkVGltZSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKAogICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSwKICAgICAgICApOwogICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIGlmIG5ld2VyIGRhdGUgaXMgYWZ0ZXIgY3VycmVudCBkYXRlCiAgICAgICAgcmV0dXJuIGlmICRUaW1lID4gJEN1cnJlbnRTeXN0ZW1UaW1lOwoKICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBvbGRlci9uZXdlciBkYXRlIHJlc3RyaWN0aW9uIHNob3cgbm93IHZhbGlkIHRpbWVmcmFtZQogICAgICAgIHJldHVybiBpZiAkQ29tcGFyZUNyZWF0ZVRpbWVPbGRlck5ld2VyRGF0ZSAmJiAkVGltZSA+ICRDb21wYXJlQ3JlYXRlVGltZU9sZGVyTmV3ZXJEYXRlOwoKICAgICAgICAkRXh0IC49ICIgQU5EIGkuY3JlYXRlZCA+PSAnIgogICAgICAgICAgICAuICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSApIC4gIiciOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtcyBjaGFuZ2VkIG9sZGVyIHRoYW4geCBtaW51dGVzCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJNaW51dGVzfSApIHsKCiAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJNaW51dGVzfSB8fD0gMDsKCiAgICAgICAgbXkgJFRpbWVTdGFtcCA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKTsKICAgICAgICAkVGltZVN0YW1wIC09ICggJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJNaW51dGVzfSAqIDYwICk7CgogICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0gPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lMlRpbWVTdGFtcCgKICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkVGltZVN0YW1wLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXN9ICkgewoKICAgICAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXN9IHx8PSAwOwoKICAgICAgICBteSAkVGltZVN0YW1wID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpOwogICAgICAgICRUaW1lU3RhbXAgLT0gKCAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXN9ICogNjAgKTsKCiAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlfSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyVGltZVN0YW1wKAogICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRUaW1lU3RhbXAsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbXMgY2hhbmdlZCBvbGRlciB0aGFuIHh4eHgteHgteHggeHg6eHggZGF0ZQogICAgbXkgJENvbXBhcmVDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGU7CiAgICBpZiAoICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0gKSB7CgogICAgICAgICMgY2hlY2sgdGltZSBmb3JtYXQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0KICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICckUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlckRhdGV9JyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG15ICRUaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlckRhdGV9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlckRhdGV9IC4gIichIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkQ29tcGFyZUNoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZSA9ICRUaW1lOwoKICAgICAgICAkRXh0IC49ICIgQU5EIGkuY2hhbmdlZCA8PSAnIgogICAgICAgICAgICAuICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlfSApIC4gIiciOwogICAgfQoKICAgICMgZ2V0IEl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIGlmICggJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlfSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0KICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICckUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlckRhdGV9JyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG15ICRUaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlckRhdGV9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlckRhdGV9IC4gIichIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgbmV3ZXIgZGF0ZSBpcyBhZnRlciBjdXJyZW50IGRhdGUKICAgICAgICByZXR1cm4gaWYgJFRpbWUgPiAkQ3VycmVudFN5c3RlbVRpbWU7CgogICAgICAgICMgZG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIGlmIG9sZGVyL25ld2VyIGRhdGUgcmVzdHJpY3Rpb24gc2hvdyBub3cgdmFsaWQgdGltZWZyYW1lCiAgICAgICAgcmV0dXJuIGlmICRDb21wYXJlQ2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlICYmICRUaW1lID4gJENvbXBhcmVDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGU7CgogICAgICAgICRFeHQgLj0gIiBBTkQgaS5jaGFuZ2VkID49ICciCiAgICAgICAgICAgIC4gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlckRhdGV9ICkgLiAiJyI7CiAgICB9CgogICAgIyBhZGQgV0hFUkUgc3RhdGVtZW50CiAgICBpZiAoJEV4dCkgewogICAgICAgICRFeHQgPSAnIFdIRVJFICcgLiAkRXh0OwogICAgfQoKICAgICMgYWRkIEdST1VQIEJZCiAgICAkRXh0CiAgICAgICAgLj0gJyBHUk9VUCBCWSBpLmlkLCBpLmZfc3ViamVjdCwgaS5mX2xhbmd1YWdlX2lkLCBpLmNyZWF0ZWQsIGkuY2hhbmdlZCwgcy5uYW1lLCB2Lml0ZW1faWQgJzsKCiAgICAjIGFkZCBIQVZJTkcgY2xhdXNlICggVm90ZXMgYW5kIFJhdGUgYXJlIGFncmVnZ2F0ZWQgY29sdW1ucywgdGhleSBjYW4ndCBiZSBpbiB0aGUgV0hFUkUgY2xhdXNlKQogICAgIyBkZWZpbmVkIHZvdGluZyBwYXJhbWV0ZXJzIChmb3IgVm90ZXMgYW5kIFJhdGUpCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+ICc9JywKICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAnPicsCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJz49JywKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnPCcsCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzw9JywKICAgICk7CgogICAgbXkgJEhhdmluZ1ByaW50OwogICAgbXkgJEFkZGVkQ29uZGl0aW9uOwoKICAgIEhBVklOR19QQVJBTToKICAgIGZvciBteSAkSGF2aW5nUGFyYW0gKHF3KFZvdGVzIFJhdGUpKSB7CiAgICAgICAgbXkgJFNlYXJjaFBhcmFtID0gJFBhcmFteyRIYXZpbmdQYXJhbX07CgogICAgICAgIG5leHQgSEFWSU5HX1BBUkFNIGlmICggISRTZWFyY2hQYXJhbSApOwogICAgICAgIG5leHQgSEFWSU5HX1BBUkFNIGlmICggcmVmICRTZWFyY2hQYXJhbSBuZSAnSEFTSCcgKTsKCiAgICAgICAgT1BFUkFUT1I6CiAgICAgICAgZm9yIG15ICRPcGVyYXRvciAoIHNvcnQga2V5cyAleyRTZWFyY2hQYXJhbX0gKSB7CgogICAgICAgICAgICBuZXh0IE9QRVJBVE9SIGlmICEoICRWb3RpbmdPcGVyYXRvcnN7JE9wZXJhdG9yfSApOwoKICAgICAgICAgICAgIyBwcmludCBIQVZJTkcgY2xhdXNlIGp1c3Qgb25jZSBpZiBhbmQganVzdCBpZiB0aGUgb3BlcmF0b3IgaXMgdmFsaWQKICAgICAgICAgICAgaWYgKCAhJEhhdmluZ1ByaW50ICkgewogICAgICAgICAgICAgICAgJEV4dCAuPSAnIEhBVklORyAnOwogICAgICAgICAgICAgICAgJEhhdmluZ1ByaW50ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFNRTEV4dFN1YjsKCiAgICAgICAgICAgIG15IEBTZWFyY2hQYXJhbXMgPSAoIHJlZiAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9IGVxICdBUlJBWScgKQogICAgICAgICAgICAgICAgPyBAeyAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9IH0KICAgICAgICAgICAgICAgIDogKCAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9ICk7CgogICAgICAgICAgICAjIGRvIG5vdCB1c2UgQU5EIG9uIHRoZSBmaXJzdCBjb25kaXRpb24KICAgICAgICAgICAgaWYgKCRBZGRlZENvbmRpdGlvbikgewogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnIEFORCAoJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyAoJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgICAgIFRFWFQ6CiAgICAgICAgICAgIGZvciBteSAkVGV4dCAoQFNlYXJjaFBhcmFtcykgewogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICggIWRlZmluZWQgJFRleHQgfHwgJFRleHQgZXEgJycgKTsKCiAgICAgICAgICAgICAgICAkVGV4dCA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAgICAgIyBjaGVjayBzZWFyY2ggYXR0cmlidXRlLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZm9yICoKICAgICAgICAgICAgICAgIG5leHQgaWYgJFRleHQgPX4gL15cJXsxLDN9JC87CgogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnIE9SICcgaWYgKCRDb3VudGVyKTsKCiAgICAgICAgICAgICAgICAjIGRlZmluZSBhZ2dyZWdhdGlvbiBjb2x1bW4KICAgICAgICAgICAgICAgIG15ICRBZ2dyZWdhdGVDb2x1bW4gPSAnY291bnQoIHYuaXRlbV9pZCApJzsKICAgICAgICAgICAgICAgIGlmICggJEhhdmluZ1BhcmFtIGVxICdSYXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkQWdncmVnYXRlQ29sdW1uID0gJ2F2Zyggdi5yYXRlICknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IGNvbmRpdGlvbgogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAiICRBZ2dyZWdhdGVDb2x1bW4gJFZvdGluZ09wZXJhdG9yc3skT3BlcmF0b3J9ICI7CiAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFRleHQsICdOdW1iZXInICkgLiAiICI7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjbG9zZSBjb25kaXRpb24KICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnKSAnOwoKICAgICAgICAgICAgIyBhZGQgY29uZGl0aW9uIHRvIHRoZSBmaW5hbCBTUUwgc3RhdGVtZW50CiAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgJEV4dCAuPSAkU1FMRXh0U3ViOwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZGl0aW9uID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCB0aGUgT1JERVIgQlkgY2xhdXNlCiAgICBpZiAoQFNRTE9yZGVyQnkpIHsKICAgICAgICAkRXh0IC49ICdPUkRFUiBCWSAnOwogICAgICAgICRFeHQgLj0gam9pbiAnLCAnLCBAU1FMT3JkZXJCeTsKICAgICAgICAkRXh0IC49ICcgJzsKICAgIH0KCiAgICAjIGFkZCBleHRlbmRlZCBTUUwKICAgICRTUUwgLj0gJEV4dDsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0gfHwgNTAwCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIEBMaXN0Owp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9Y3V0Cgo9aXRlbSBfSW5Db25kaXRpb25HZXQoKQoKaW50ZXJuYWwgZnVuY3Rpb24gdG8gY3JlYXRlIGFuCgogICAgdGFibGUuY29sdW1uIElOICh2YWx1ZXMpCgpjb25kaXRpb24gc3RyaW5nIGZyb20gYW4gYXJyYXkuCgogICAgbXkgJFNRTFBhcnQgPSAkVGlja2V0T2JqZWN0LT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgVGFibGVDb2x1bW4gPT4gJ3RhYmxlLmNvbHVtbicsCiAgICAgICAgSURSZWYgICAgICAgPT4gJEFycmF5UmVmLAogICAgKTsKCj1jdXQKCnN1YiBfSW5Db25kaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VGFibGVDb2x1bW59ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUYWJsZUNvbHVtbiEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0lEUmVmfSApICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBJRFJlZiEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc29ydCBpZHMgdG8gY2FjaGUgdGhlIFNRTCBxdWVyeQogICAgbXkgQFNvcnRlZElEcyA9IHNvcnQgeyAkYSA8PT4gJGIgfSBAeyAkUGFyYW17SURSZWZ9IH07CgogICAgIyBFcnJvciBvdXQgaWYgc29tZSB2YWx1ZXMgd2VyZSBub3QgaW50ZWdlcnMuCiAgICBAU29ydGVkSURzID0gbWFwIHsgJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkXywgJ0ludGVnZXInICkgfSBAU29ydGVkSURzOwogICAgcmV0dXJuIGlmIHNjYWxhciBAU29ydGVkSURzICE9IHNjYWxhciBAeyAkUGFyYW17SURSZWZ9IH07CgogICAgIyBzcGxpdCBJTiBzdGF0ZW1lbnQgd2l0aCBtb3JlIHRoYW4gOTAwIGVsZW1lbnRzIGluIG1vcmUgc3RhdGVtZW50cyBjb21iaW5lZCB3aXRoIE9SCiAgICAjIGJlY2F1c2UgT3JhY2xlIGRvZXNuJ3Qgc3VwcG9ydCBtb3JlIHRoYW4gMTAwMCBlbGVtZW50cyBpbiBvbmUgSU4gc3RhdGVtZW50LgogICAgbXkgQFNRTFN0cmluZ3M7CiAgICBMT09QOgogICAgd2hpbGUgKCBzY2FsYXIgQFNvcnRlZElEcyApIHsKCiAgICAgICAgbXkgQFNvcnRlZElEc1BhcnQgPSBzcGxpY2UgQFNvcnRlZElEcywgMCwgOTAwOwoKICAgICAgICBteSAkSURTdHJpbmcgPSBqb2luICcsICcsIEBTb3J0ZWRJRHNQYXJ0OwoKICAgICAgICBwdXNoIEBTUUxTdHJpbmdzLCAiICRQYXJhbXtUYWJsZUNvbHVtbn0gSU4gKCRJRFN0cmluZykgIjsKICAgIH0KCiAgICBteSAkU1FMID0gam9pbiAnIE9SICcsIEBTUUxTdHJpbmdzOwogICAgJFNRTCA9ICcgKCAnIC4gJFNRTCAuICcgKSAnOwoKICAgIHJldHVybiAkU1FMOwp9CgoxOwoKPWVuZCBJbnRlcm5hbDoKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vTGlua09iamVjdC9GQVEucG0gLSB0byBsaW5rIGZhcSBvYmplY3RzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6RkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpHcm91cDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OkZBUQoKPWhlYWQxIFNZTk9QU0lTCgpGQVEgYmFja2VuZCBmb3IgdGhlIGxpbmsgb2JqZWN0LgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6Q29uZmlnOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpFbmNvZGU7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkxvZzsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6VGltZTsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6TWFpbjsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6REI7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OkZBUTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gS2VybmVsOjpDb25maWctPm5ldygpOwogICAgbXkgJEVuY29kZU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpFbmNvZGUtPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICk7CiAgICBteSAkTG9nT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkxvZy0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIEVuY29kZU9iamVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgKTsKICAgIG15ICRUaW1lT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlRpbWUtPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBMb2dPYmplY3QgICAgPT4gJExvZ09iamVjdCwKICAgICk7CiAgICBteSAkTWFpbk9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpNYWluLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgRW5jb2RlT2JqZWN0ID0+ICRFbmNvZGVPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICApOwogICAgbXkgJERCT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkRCLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgRW5jb2RlT2JqZWN0ID0+ICRFbmNvZGVPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgID0+ICRNYWluT2JqZWN0LAogICAgKTsKICAgIG15ICRGQVFPYmplY3RCYWNrZW5kID0gS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OkZBUS0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCAgICAgICA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICAgICAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIERCT2JqZWN0ICAgICAgICAgICA9PiAkREJPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgICAgICAgID0+ICRNYWluT2JqZWN0LAogICAgICAgIFRpbWVPYmplY3QgICAgICAgICA9PiAkVGltZU9iamVjdCwKICAgICAgICBFbmNvZGVPYmplY3QgICAgICAgPT4gJEVuY29kZU9iamVjdCwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0IChxdyhEQk9iamVjdCBDb25maWdPYmplY3QgTG9nT2JqZWN0IE1haW5PYmplY3QgRW5jb2RlT2JqZWN0IFRpbWVPYmplY3QpKSB7CiAgICAgICAgJFNlbGYtPnskT2JqZWN0fSA9ICRQYXJhbXskT2JqZWN0fSB8fCBkaWUgIkdvdCBubyAkT2JqZWN0ISI7CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0dyb3VwT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpHcm91cC0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBMaW5rTGlzdFdpdGhEYXRhKCkKCmZpbGwgdXAgdGhlIGxpbmsgbGlzdCB3aXRoIGRhdGEKCiAgICAkU3VjY2VzcyA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIExpbmtMaXN0ID0+ICRIYXNoUmVmLAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtMaXN0V2l0aERhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTGlua0xpc3QgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGxpbmsgbGlzdAogICAgaWYgKCByZWYgJFBhcmFte0xpbmtMaXN0fSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdMaW5rTGlzdCBtdXN0IGJlIGEgaGFzaCByZWZlcmVuY2UhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICV7ICRQYXJhbXtMaW5rTGlzdH0gfSApIHsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0gfSApIHsKCiAgICAgICAgICAgIEZBUUlEOgogICAgICAgICAgICBmb3IgbXkgJEZBUUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmYXEgZGF0YQogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgaWQgZnJvbSBoYXNoIGlmIG5vIGZhcSBkYXRhIHdhcyBmb3VuZAogICAgICAgICAgICAgICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0tPnskRkFRSUR9OwogICAgICAgICAgICAgICAgICAgIG5leHQgRkFRSUQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgZmFxIGRhdGEKICAgICAgICAgICAgICAgICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0tPnskRkFRSUR9ID0gXCVGQVFEYXRhOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBPYmplY3RQZXJtaXNzaW9uKCkKCmNoZWNrcyByZWFkIHBlcm1pc3Npb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IGFuZCBVc2VySUQuCgogICAgJFBlcm1pc3Npb24gPSAkRkFRTGlua09iamVjdC0+T2JqZWN0UGVybWlzc2lvbigKICAgICAgICBPYmplY3QgID0+ICdGQVEnLAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0UGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhPYmplY3QgS2V5IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBtb2R1bGUgcmVnaXN0cnkgb2YgQWdlbnRGQVFab29tCiAgICBteSAkTW9kdWxlUmVnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+e0FnZW50RkFRWm9vbX07CgogICAgIyBkbyBub3QgZ3JhbnQgYWNjZXNzIGlmIGZyb250ZW5kIG1vZHVsZSBpcyBub3QgcmVnaXN0ZXJlZAogICAgcmV0dXJuIGlmICEkTW9kdWxlUmVnOwoKICAgICMgZ3JhbnQgYWNjZXNzIGlmIG1vZHVsZSBwZXJtaXNzb24gaGFzIG5vIEdyb3VwIG9yIEdyb3VwUm8gZGVmaW5lZAogICAgaWYgKCAhJE1vZHVsZVJlZy0+e0dyb3VwUm99ICYmICEkTW9kdWxlUmVnLT57R3JvdXB9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIFBFUk1JU1NJT046CiAgICBmb3IgbXkgJFBlcm1pc3Npb24gKHF3KEdyb3VwUm8gR3JvdXApKSB7CgogICAgICAgIG5leHQgUEVSTUlTU0lPTiBpZiAhJE1vZHVsZVJlZy0+eyRQZXJtaXNzaW9ufTsKICAgICAgICBuZXh0IFBFUk1JU1NJT04gaWYgcmVmICRNb2R1bGVSZWctPnskUGVybWlzc2lvbn0gbmUgJ0FSUkFZJzsKCiAgICAgICAgZm9yIG15ICRHcm91cCAoIEB7ICRNb2R1bGVSZWctPnskUGVybWlzc2lvbn0gfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBncm91cCBpZAogICAgICAgICAgICBteSAkR3JvdXBJRCA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cExvb2t1cCggR3JvdXAgPT4gJEdyb3VwICk7CgogICAgICAgICAgICBteSAkVHlwZTsKICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbiBlcSAnR3JvdXBSbycgKSB7CiAgICAgICAgICAgICAgICAkVHlwZSA9ICdybyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUGVybWlzc2lvbiBlcSAnR3JvdXAnICkgewogICAgICAgICAgICAgICAgJFR5cGUgPSAncncnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCB1c2VyIGdyb3Vwcywgd2hlcmUgdGhlIHVzZXIgaGFzIHRoZSBhcHByb3ByaWF0ZSBwcml2aWxlZ2UKICAgICAgICAgICAgbXkgJUdyb3VwcyA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFR5cGUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgaWYgYWdlbnQgaXMgYSBtZW1iZXIgaW4gdGhlIGdyb3VwCiAgICAgICAgICAgIHJldHVybiAxIGlmICRHcm91cHN7JEdyb3VwSUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm47Cn0KCj1pdGVtIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucwoKUmV0dXJuCiAgICAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICJGQVEjIDEyMzQiLAogICAgICAgIExvbmcgICA9PiAiRkFRIyAxMjM0OiBGQVFUaXRsZSIsCiAgICApOwoKICAgICVEZXNjcmlwdGlvbiA9ICRMaW5rT2JqZWN0LT5PYmplY3REZXNjcmlwdGlvbkdldCgKICAgICAgICBLZXkgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERlc2NyaXB0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdCBLZXkgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgbXkgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAnRkFRJywKICAgICAgICBMb25nICAgPT4gJ0ZBUScsCiAgICApOwoKICAgIHJldHVybiAlRGVzY3JpcHRpb24gaWYgJFBhcmFte01vZGV9ICYmICRQYXJhbXtNb2RlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICAjIGdldCBmYXEKICAgIG15ICVGQVEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISVGQVE7CgogICAgIyBkZWZpbmUgZGVzY3JpcHRpb24gdGV4dAogICAgbXkgJEZBUUhvb2sgICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgIG15ICREZXNjcmlwdGlvblRleHQgPSAiJEZBUUhvb2sgJEZBUXtOdW1iZXJ9IjsKCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAkRGVzY3JpcHRpb25UZXh0LAogICAgICAgIExvbmcgICA9PiAiJERlc2NyaXB0aW9uVGV4dDogJEZBUXtUaXRsZX0iLAogICAgKTsKCiAgICByZXR1cm4gJURlc2NyaXB0aW9uOwp9Cgo9aXRlbSBPYmplY3RTZWFyY2goKQoKcmV0dXJuIGEgaGFzaCBsaXN0IG9mIHRoZSBzZWFyY2ggcmVzdWx0cwoKUmV0dXJuCiAgICAkU2VhcmNoTGlzdCA9IHsKICAgICAgICBOT1RMSU5LRUQgPT4gewogICAgICAgICAgICBTb3VyY2UgPT4gewogICAgICAgICAgICAgICAgMTIgID0+ICREYXRhT2ZJdGVtMTIsCiAgICAgICAgICAgICAgICAyMTIgPT4gJERhdGFPZkl0ZW0yMTIsCiAgICAgICAgICAgICAgICAzMzIgPT4gJERhdGFPZkl0ZW0zMzIsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH07CgogICAgJFNlYXJjaExpc3QgPSAkTGlua09iamVjdEJhY2tlbmQtPk9iamVjdFNlYXJjaCgKICAgICAgICBTZWFyY2hQYXJhbXMgPT4gJEhhc2hSZWYsICAjIChvcHRpb25hbCkKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0U2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHBhcmFtcwogICAgJFBhcmFte1NlYXJjaFBhcmFtc30gfHw9IHt9OwoKICAgICMgYWRkIHdpbGRjYXJkcwogICAgbXkgJVNlYXJjaDsKICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntUaXRsZX0gKSB7CiAgICAgICAgJFNlYXJjaHtUaXRsZX0gPSAnKicgLiAkUGFyYW17U2VhcmNoUGFyYW1zfS0+e1RpdGxlfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntOdW1iZXJ9ICkgewogICAgICAgICRTZWFyY2h7TnVtYmVyfSA9ICcqJyAuICRQYXJhbXtTZWFyY2hQYXJhbXN9LT57TnVtYmVyfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSApIHsKICAgICAgICAkU2VhcmNoe1doYXR9ID0gJyonIC4gJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSAuICcqJzsKICAgIH0KCiAgICAjIHNlYXJjaCB0aGUgZmFxcwogICAgbXkgQEZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICV7ICRQYXJhbXtTZWFyY2hQYXJhbXN9IH0sCiAgICAgICAgJVNlYXJjaCwKICAgICAgICBPcmRlciAgPT4gJ0NyZWF0ZWQnLAogICAgICAgIFNvcnQgICA9PiAnZG93bicsCiAgICAgICAgTGltaXQgID0+IDUwLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJVNlYXJjaExpc3Q7CiAgICBGQVFJRDoKICAgIGZvciBteSAkRkFRSUQgKEBGQVFJRHMpIHsKCiAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG5leHQgRkFRSUQgaWYgISVGQVFEYXRhOwoKICAgICAgICAjIGFkZCBGQVEgZGF0YQogICAgICAgICRTZWFyY2hMaXN0e05PVExJTktFRH0tPntTb3VyY2V9LT57JEZBUUlEfSA9IFwlRkFRRGF0YTsKICAgIH0KCiAgICByZXR1cm4gXCVTZWFyY2hMaXN0Owp9Cgo9aXRlbSBMaW5rQWRkUHJlKCkKCmxpbmsgYWRkIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rQWRkUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICBvcgoKICAgICRUcnVlID0gJEZBUUxpbmtPYmplY3QtPkxpbmtBZGRQcmUoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtBZGRQcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBMaW5rQWRkUG9zdCgpCgpsaW5rIGFkZCBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkRkFRTGlua09iamVjdC0+TGlua0FkZFBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIG9yCgogICAgJFRydWUgPSAkRkFRTGlua09iamVjdC0+TGlua0FkZFBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtBZGRQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gTGlua0RlbGV0ZVByZSgpCgpsaW5rIGRlbGV0ZSBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkRkFRTGlua09iamVjdC0+TGlua0RlbGV0ZVByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rRGVsZXRlUHJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gTGlua0RlbGV0ZVBvc3QoKQoKbGluayBkZWxldGUgcG9zdCBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnRkFRJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0RlbGV0ZVBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vU3RhdHMvU3RhdGljL0ZBUUFjY2Vzcy5wbS5wbQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN0YXRzOjpTdGF0aWM6OkZBUUFjY2VzczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIERhdGU6OlBjYWxjIHF3KERheXNfaW5fTW9udGgpOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBhbGwgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0IChxdyhEQk9iamVjdCBDb25maWdPYmplY3QgTG9nT2JqZWN0IFVzZXJJRCkpIHsKICAgICAgICBkaWUgIkdvdCBubyAkT2JqZWN0IiBpZiAhJFNlbGYtPnskT2JqZWN0fTsKICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0CiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQYXJhbSB7CgogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICBteSBAUGFyYW1zID0gKCk7CgogICAgIyBnZXQgY3VycmVudCB0aW1lCiAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICBTeXN0ZW1UaW1lID0+ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKSwKICAgICk7CiAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgJFkgPSBzcHJpbnRmKCAiJTAyZCIsICRZICk7CgogICAgIyBjcmVhdGUgcG9zc2libGUgdGltZSBzZWxlY3Rpb25zCiAgICBteSAlWWVhciA9IG1hcCB7ICRfLCAkXyB9ICggJFkgLSAxMCAuLiAkWSArIDEgKTsKICAgIG15ICVNb250aCA9IG1hcCB7IHNwcmludGYoICIlMDJkIiwgJF8gKSwgc3ByaW50ZiggIiUwMmQiLCAkXyApIH0gKCAxIC4uIDEyICk7CiAgICBteSAlRGF5ICAgPSBtYXAgeyBzcHJpbnRmKCAiJTAyZCIsICRfICksIHNwcmludGYoICIlMDJkIiwgJF8gKSB9ICggMSAuLiAzMSApOwoKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ1N0YXJ0IGRheScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU3RhcnREYXknLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAnMDEnLAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlRGF5LAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnU3RhcnQgbW9udGgnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1N0YXJ0TW9udGgnLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkTSwKICAgICAgICBEYXRhICAgICAgID0+IHsKICAgICAgICAgICAgJU1vbnRoLAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnU3RhcnQgeWVhcicsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU3RhcnRZZWFyJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFksCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVZZWFyLAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnRW5kIGRheScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnRW5kRGF5JywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEQsCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVEYXksCiAgICAgICAgfSwKICAgIH07CiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCAgID0+ICdFbmQgbW9udGgnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0VuZE1vbnRoJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJE0sCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVNb250aCwKICAgICAgICB9LAogICAgfTsKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ0VuZCB5ZWFyJywKICAgICAgICBOYW1lICAgICAgID0+ICdFbmRZZWFyJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFksCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVZZWFyLAogICAgICAgIH0sCiAgICB9OwoKICAgIHJldHVybiBAUGFyYW1zOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhTdGFydFllYXIgU3RhcnRNb250aCBTdGFydERheSBFbmRZZWFyIEVuZE1vbnRoIEVuZERheSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNvcnJlY3Qgc3RhcnQgZGF5IG9mIG1vbnRoIGlmIGVudGVyZWQgd3JvbmcgYnkgdXNlcgogICAgbXkgJFN0YXJ0RGF5ID0gc3ByaW50ZiggIiUwMmQiLCBEYXlzX2luX01vbnRoKCAkUGFyYW17U3RhcnRZZWFyfSwgJFBhcmFte1N0YXJ0TW9udGh9ICkgKTsKICAgIGlmICggJFBhcmFte1N0YXJ0RGF5fSA8ICRTdGFydERheSApIHsKICAgICAgICAkU3RhcnREYXkgPSAkUGFyYW17U3RhcnREYXl9OwogICAgfQoKICAgICMgY29ycmVjdCBlbmQgZGF5IG9mIG1vbnRoIGlmIGVudGVyZWQgd3JvbmcgYnkgdXNlcgogICAgbXkgJEVuZERheSA9IHNwcmludGYoICIlMDJkIiwgRGF5c19pbl9Nb250aCggJFBhcmFte0VuZFllYXJ9LCAkUGFyYW17RW5kTW9udGh9ICkgKTsKICAgIGlmICggJFBhcmFte0VuZERheX0gPCAkRW5kRGF5ICkgewogICAgICAgICRFbmREYXkgPSAkUGFyYW17RW5kRGF5fTsKICAgIH0KCiAgICAjIHNldCBzdGFydCBhbmQgZW5kIGRhdGUKICAgIG15ICRTdGFydERhdGUgPSAiJFBhcmFte1N0YXJ0WWVhcn0tJFBhcmFte1N0YXJ0TW9udGh9LSRTdGFydERheSAwMDowMDowMCI7CiAgICBteSAkRW5kRGF0ZSAgID0gIiRQYXJhbXtFbmRZZWFyfS0kUGFyYW17RW5kTW9udGh9LSRFbmREYXkgMjM6NTk6NTkiOwoKICAgICMgZ2V0IGEgY291bnQgb2YgYWxsIGZhcSBhcnRpY2xlcwogICAgbXkgJFRvcDEwSXRlbUlEc1JlZiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRVG9wMTBHZXQoCiAgICAgICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICAgICAgU3RhcnREYXRlID0+ICRTdGFydERhdGUsCiAgICAgICAgRW5kRGF0ZSAgID0+ICRFbmREYXRlLAogICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgcmVzdWx0IHRhYmxlCiAgICBteSBARGF0YTsKICAgIGZvciBteSAkSXRlbUlEUmVmICggQHskVG9wMTBJdGVtSURzUmVmfSApIHsKCiAgICAgICAgIyBnZXQgZmFxIGRhdGEKICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSURSZWYtPntJdGVtSUR9LAogICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHZvdGUgZGF0YQogICAgICAgIG15ICRWb3RlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+SXRlbVZvdGVEYXRhR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRFJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkVm90ZVJlc3VsdCA9IHNwcmludGYoCiAgICAgICAgICAgICIlMC4iCiAgICAgICAgICAgICAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KAogICAgICAgICAgICAgICAgIkZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHREZWNpbWFsUGxhY2VzIgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLiAiZiIsCiAgICAgICAgICAgICRWb3RlRGF0YS0+e1Jlc3VsdH0KICAgICAgICAgICAgICAgIHx8IDAKICAgICAgICApOwogICAgICAgIG15ICRWb3RlcyA9ICRWb3RlRGF0YS0+e1ZvdGVzfSB8fCAwOwoKICAgICAgICAjIGJ1aWxkIHRhYmxlIHJvdwogICAgICAgIHB1c2ggQERhdGEsIFsKICAgICAgICAgICAgJEZBUURhdGF7TnVtYmVyfSwKICAgICAgICAgICAgJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAkSXRlbUlEUmVmLT57Q291bnR9LAogICAgICAgICAgICAkVm90ZVJlc3VsdCwKICAgICAgICAgICAgJFZvdGVzLAogICAgICAgIF07CiAgICB9CgogICAgIyBzZXQgcmVwb3J0IHRpdGxlCiAgICBteSAkVGl0bGUgPSAiJFBhcmFte1N0YXJ0WWVhcn0tJFBhcmFte1N0YXJ0TW9udGh9LSRTdGFydERheSAtICRQYXJhbXtFbmRZZWFyfS0kUGFyYW17RW5kTW9udGh9LSRFbmREYXkiOwoKICAgICMgdGFibGUgaGVhZGxpbmVzCiAgICBteSBASGVhZERhdGEgPSAoCiAgICAgICAgJ0ZBUSAjJywKICAgICAgICAnVGl0bGUnLAogICAgICAgICdDb3VudCcsCiAgICAgICAgJ1ZvdGUgUmVzdWx0JywKICAgICAgICAnVm90ZXMnLAogICAgKTsKCiAgICBteSBAUmVzdWx0ID0gKCBbJFRpdGxlXSwgW0BIZWFkRGF0YV0sIEBEYXRhICk7CgogICAgcmV0dXJuIEBSZXN1bHQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBoZWxwZXIgb2JqZWN0Cm15ICRIZWxwZXJPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlci0+bmV3KAogICAgJXskU2VsZn0sCiAgICBVbml0VGVzdE9iamVjdCA9PiAkU2VsZiwKKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIGFycmF5JywKICAgICAgICBQYXJhbXMgPT4gewogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAndGVzdC50YWJsZScsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gdW5kZWYsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnU2luZ2xlIEludGVnZXInLAogICAgICAgIFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICd0ZXN0LnRhYmxlJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gWzFdLAogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+ICcgKCAgdGVzdC50YWJsZSBJTiAoMSkgICkgJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdTb3J0ZWQgdmFsdWVzJywKICAgICAgICBQYXJhbXMgPT4gewogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAndGVzdC50YWJsZScsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IFsgMiwgMSwgLTEsIDAgXSwKICAgICAgICB9LAogICAgICAgIFJlc3VsdCA9PiAnICggIHRlc3QudGFibGUgSU4gKC0xLCAwLCAxLCAyKSAgKSAnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0ludmFsaWQgdmFsdWUnLAogICAgICAgIFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICd0ZXN0LnRhYmxlJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gWzEuMV0sCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gdW5kZWYsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWl4IG9mIHZhbGlkIGFuZCBpbnZhbGlkIHZhbHVlcycsCiAgICAgICAgUGFyYW1zID0+IHsKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ3Rlc3QudGFibGUnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiBbIDEsIDEuMSBdLAogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IHVuZGVmLAogICAgfSwKKTsKCiMgZ2V0IEZBUSBvYmplY3QKbXkgJEZBUU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyggJXskU2VsZn0gKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgc2NhbGFyICRGQVFPYmplY3QtPl9JbkNvbmRpdGlvbkdldCggJXsgJFRlc3QtPntQYXJhbXN9IH0gKSwKICAgICAgICAkVGVzdC0+e1Jlc3VsdH0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gX0luQ29uZGl0aW9uR2V0KCkiCiAgICApOwp9CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UuCgoxOwo=
IyAtLQojIEZBUS50IC0gRkFRIHRlc3RzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHZhcnMgcXcoJFNlbGYpOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpteSAkRkFRT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCAleyRTZWxmfSApOwoKbXkgJEZBUUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0JywKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgRmllbGQxICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRGQVFJRCwKICAgICJGQVFBZGQoKSAtIDEiLAopOwoKbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKbXkgJUZBUVRlc3QgPSAoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uLi4uJywKKTsKCmZvciBteSAkVGVzdCAoIHNvcnQga2V5cyAlRkFRVGVzdCApIHsKICAgICRTZWxmLT5JcygKICAgICAgICAkRkFReyRUZXN0fSwKICAgICAgICAkRkFRVGVzdHskVGVzdH0sCiAgICAgICAgIkZBUUdldCgpIC0gJFRlc3QiLAogICAgKTsKfQoKbXkgJEZBUVVwZGF0ZSA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAyLAogICAgTGFuZ3VhZ2VJRCA9PiAyLAogICAgQXBwcm92ZWQgICA9PiAxLAogICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0MicsCiAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzMicsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uMicsCiAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbiBmb3VuZC4uLjInLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJUZBUVRlc3QgPSAoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQyJywKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMiwKICAgIExhbmd1YWdlSUQgPT4gMiwKICAgIEtleXdvcmRzICAgPT4gJ3NvbWUga2V5d29yZHMyJywKICAgIEZpZWxkMSAgICAgPT4gJ1Byb2JsZW0uLi4yJywKICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uIGZvdW5kLi4uMicsCik7Cgpmb3IgbXkgJFRlc3QgKCBzb3J0IGtleXMgJUZBUVRlc3QgKSB7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZBUVRlc3R7JFRlc3R9LAogICAgICAgICRGQVF7JFRlc3R9LAogICAgICAgICJGQVFHZXQoKSAtICRUZXN0IiwKICAgICk7Cn0KCm15ICRPayA9ICRGQVFPYmplY3QtPlZvdGVBZGQoCiAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICBJdGVtSUQgICAgPT4gJEZBUUlELAogICAgSVAgICAgICAgID0+ICc1NC40My4zMC4xJywKICAgIEludGVyZmFjZSA9PiAnMicsCiAgICBSYXRlICAgICAgPT4gMTAwLAogICAgVXNlcklEICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRPaywKICAgICJWb3RlQWRkKCkiLAopOwoKbXkgJFZvdGUgPSAkRkFRT2JqZWN0LT5Wb3RlR2V0KAogICAgQ3JlYXRlQnkgID0+ICdTb21lIFRleHQnLAogICAgSXRlbUlEICAgID0+ICRGQVFJRCwKICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgVXNlcklEICAgID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICAkVm90ZS0+e0lQfSwKICAgICc1NC40My4zMC4xJywKICAgICJWb3RlR2V0KCkgLSBJUCIsCik7CgpteSAkRkFRSUQyID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICA9PiAnVGl0bGUnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnJywKICAgIEZpZWxkMSAgICAgPT4gJ1Byb2JsZW0gRGVzY3JpcHRpb24gMS4uLicsCiAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEZBUUlEMiwKICAgICJGQVFBZGQoKSAtIDIiLAopOwoKbXkgJEhvbWUgICAgICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdIb21lJyk7Cm15IEBBdHRhY2htZW50VGVzdHMgPSAoCiAgICB7CiAgICAgICAgRmlsZSA9PiAnRkFRLVRlc3QxLnBkZicsCiAgICAgICAgTUQ1ICA9PiAnNWVlNzY3ZjNiNjhmMjRhOTIxM2UwYmVmODJkYzUzZTUnLAogICAgfSwKICAgIHsKICAgICAgICBGaWxlID0+ICdGQVEtVGVzdDEuZG9jJywKICAgICAgICBNRDUgID0+ICcyZTUyMDAzNmEwY2RhNmE4MDZhODgzOGIxMDAwZDlkNycsCiAgICB9LAopOwpmb3IgbXkgJEF0dGFjaG1lbnRUZXN0IChAQXR0YWNobWVudFRlc3RzKSB7CiAgICBteSAkQ29udGVudFNDQUxBUlJlZiA9ICRTZWxmLT57TWFpbk9iamVjdH0tPkZpbGVSZWFkKAogICAgICAgIExvY2F0aW9uID0+ICRIb21lIC4gJy9zY3JpcHRzL3Rlc3Qvc2FtcGxlLycgLiAkQXR0YWNobWVudFRlc3QtPntGaWxlfSwKICAgICk7CiAgICBteSAkQWRkID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEFkZCgKICAgICAgICBJdGVtSUQgICAgICA9PiAkRkFRSUQyLAogICAgICAgIENvbnRlbnQgICAgID0+ICR7JENvbnRlbnRTQ0FMQVJSZWZ9LAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0sCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQWRkLAogICAgICAgICJBdHRhY2htZW50QWRkKCkgLSAkQXR0YWNobWVudFRlc3QtPntGaWxlfSIsCiAgICApOwogICAgbXkgQEF0dGFjaG1lbnRJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgPT4gJEZBUUlEMiwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgSXRlbUlEID0+ICRGQVFJRDIsCiAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50SW5kZXhbMF0tPntGaWxlSUR9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5JcygKICAgICAgICAkRmlsZXtGaWxlbmFtZX0sCiAgICAgICAgJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0sCiAgICAgICAgIkF0dGFjaG1lbnRHZXQoKSAtIEZpbGVuYW1lICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9IiwKICAgICk7CiAgICBteSAkTUQ1ID0gJFNlbGYtPntNYWluT2JqZWN0fS0+TUQ1c3VtKAogICAgICAgIFN0cmluZyA9PiBcJEZpbGV7Q29udGVudH0sCiAgICApOwogICAgJFNlbGYtPklzKAogICAgICAgICRNRDUsCiAgICAgICAgJEF0dGFjaG1lbnRUZXN0LT57TUQ1fSwKICAgICAgICAiQXR0YWNobWVudEdldCgpIC0gTUQ1ICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9IiwKICAgICk7CgogICAgbXkgJERlbGV0ZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgSXRlbUlEID0+ICRGQVFJRDIsCiAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50SW5kZXhbMF0tPntGaWxlSUR9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICREZWxldGUsCiAgICAgICAgIkF0dGFjaG1lbnREZWxldGUoKSAtICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9IiwKICAgICk7Cn0KCm15ICRWb3RlSURzUmVmID0gJEZBUU9iamVjdC0+Vm90ZVNlYXJjaCgKICAgIEl0ZW1JRCA9PiAkRkFRSUQsCiAgICBVc2VySUQgPT4gMSwKKTsKCmZvciBteSAkVm90ZUlEICggQHskVm90ZUlEc1JlZn0gKSB7CiAgICBteSAkVm90ZURlbGV0ZSA9ICRGQVFPYmplY3QtPlZvdGVEZWxldGUoCiAgICAgICAgVm90ZUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFZvdGVEZWxldGUsCiAgICAgICAgIlZvdGVEZWxldGUoKSIsCiAgICApOwp9CgojIGFkZCBGQVEgYXJ0aWNsZSB0byBsb2cKbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFMb2dBZGQoCiAgICBJdGVtSUQgICAgPT4gJEZBUUlELAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJGQVFMb2dBZGQoKSAtICRGQVFJRCIsCik7CgojIHRyeSB0byBhZGQgc2FtZSBGQVEgYXJ0aWNsZSB0byBsb2cgYWdhaW4gKG11c3QgcmV0dXJuIGZhbHNlKQokU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgIEl0ZW1JRCAgICA9PiAkRkFRSUQsCiAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+RmFsc2UoCiAgICAkU3VjY2VzcywKICAgICJGQVFMb2dBZGQoKSAtICRGQVFJRCIsCik7CgojIGFkZCBhbm90aGVyIEZBUSBhcnRpY2xlIHRvIGxvZwokU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgIEl0ZW1JRCAgICA9PiAkRkFRSUQyLAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJGQVFMb2dBZGQoKSAtICRGQVFJRDIiLAopOwoKIyBnZXQgRkFRIFRvcDEwCm15ICRUb3AxMElEc1JlZiA9ICRGQVFPYmplY3QtPkZBUVRvcDEwR2V0KAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBMaW1pdCAgICAgPT4gMTAsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICBzY2FsYXIgQHskVG9wMTBJRHNSZWZ9LAogICAgIkZBUVRvcDEwR2V0KCkiLAopOwoKIyB0ZXN0IExhbmd1YWdlTG9va3VwKCkKbXkgJExhbmd1YWdlTmFtZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRMYW5ndWFnZU5hbWUsCiAgICAiTGFuZ3VhZ2VMb29rdXAoKSBmb3IgTGFuZ3VhZ2VJRCAnMScgaXMgJyRMYW5ndWFnZU5hbWUnIiwKKTsKCm15ICRMYW5ndWFnZUlEID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICBOYW1lICAgPT4gJExhbmd1YWdlTmFtZSwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+SXMoCiAgICAkTGFuZ3VhZ2VJRCwKICAgIDEsCiAgICAiTGFuZ3VhZ2VMb29rdXAoKSBmb3IgTGFuZ3VhZ2VOYW1lICckTGFuZ3VhZ2VOYW1lJyIsCik7CgpteSAkRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRCwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBGQVFJRDogJEZBUUlEIiwKKTsKCm15ICRGQVFEZWxldGUyID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRDIsCiAgICBVc2VySUQgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlMiwKICAgICJGQVFEZWxldGUoKSAtIEZBUUlEOiAkRkFRSUQyIiwKKTsKCm15ICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnVGVzdENhdGVnb3J5JywKICAgIENvbW1lbnQgID0+ICdDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBQYXJlbnRJRCA9PiAwLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeUlELAogICAgIkNhdGVnb3J5QWRkKCkgLSBSb290IENhdGVnb3J5IiwKKTsKCiMgc2V0IFBhcmVudElEIHRvIGVtcHR5IHRvIG1ha2UgaXQgZmFpbApteSAkQ2F0ZWdvcnlJREZhaWwgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICdUZXN0Q2F0ZWdvcnknLAogICAgQ29tbWVudCAgPT4gJ0NhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+ICcnLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkQ2F0ZWdvcnlJREZhaWwsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIFJvb3QgQ2F0ZWdvcnkiLAopOwoKbXkgJENhdGVnb3J5VXBkYXRlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlVcGRhdGUoCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgUGFyZW50SUQgICA9PiAwLAogICAgTmFtZSAgICAgICA9PiAnUm9vdENhdGVnb3J5JywKICAgIENvbW1lbnQgICAgPT4gJ1Jvb3QgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgVmFsaWRJRCAgICA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlVcGRhdGUsCiAgICAiQ2F0ZWdvcnlVcGRhdGUoKSAtIFJvb3QgQ2F0ZWdvcnkiLAopOwoKIyBzZXQgUGFyZW50SUQgdG8gZW1wdHkgdG8gbWFrZSBpdCBmYWlsCm15ICRDYXRlZ29yeVVwZGF0ZUZhaWwgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVVwZGF0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICBQYXJlbnRJRCAgID0+ICcnLAogICAgTmFtZSAgICAgICA9PiAnUm9vdENhdGVnb3J5JywKICAgIENvbW1lbnQgICAgPT4gJ1Jvb3QgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgVmFsaWRJRCAgICA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJFNlbGYtPkZhbHNlKAogICAgJENhdGVnb3J5VXBkYXRlRmFpbCwKICAgICJDYXRlZ29yeVVwZGF0ZSgpIC0gUm9vdCBDYXRlZ29yeSIsCik7CgpteSAkQ2hpbGRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnQ2hpbGRDYXRlZ29yeScsCiAgICBDb21tZW50ICA9PiAnQ2hpbGQgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENoaWxkQ2F0ZWdvcnlJRCwKICAgICJDYXRlZ29yeUFkZCgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKbXkgJENoaWxkQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENoaWxkQ2F0ZWdvcnlJRCwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENoaWxkQ2F0ZWdvcnlEZWxldGUsCiAgICAiQ2F0ZWdvcnlEZWxldGUoKSAtIENoaWxkIENhdGVnb3J5IiwKKTsKCm15ICRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBSb290IENhdGVnb3J5IiwKKTsKCiNJdGVtRmllbGRHZXQgVGVzdHMKbXkgJVRlc3RGaWVsZHMgPSAoCiAgICBGaWVsZDEgPT4gJ1N5bXB0b20uLi4nLAogICAgRmllbGQyID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMyA9PiAnU29sdXRpb24uLi4nLAogICAgRmllbGQ0ID0+ICdVc2VyIEZpZWxkNC4uLicsCiAgICBGaWVsZDUgPT4gJ1VzZXIgRmllbGQ1Li4uJywKICAgIEZpZWxkNiA9PiAnQ29tbWVudC4uLicsCik7CgokRkFRSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAlVGVzdEZpZWxkcywKICAgIFVzZXJJRCA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRSUQsCiAgICAiRkFRQWRkKCkgZm9yIEl0ZW1GaWVsZEdldCB3aXRoIFRydWUiLAopOwoKbXkgJVJlc3VsdEZpZWxkczsKCm15ICRDaGVja0ZpZWxkcyA9IHN1YiB7CiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBmb3IgbXkgJEZpZWxkQ291bnQgKCAxIC4uIDYgKSB7CiAgICAgICAgbXkgJEZpZWxkID0gIkZpZWxkJEZpZWxkQ291bnQiOwoKICAgICAgICAjIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KICAgICAgICBteSAkQ2FjaGUgPSAkRkFRT2JqZWN0LT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgICAgIEtleSAgPT4gIkl0ZW1GaWVsZEdldDo6SXRlbUlEOjokRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgb24gYmVmb3JlIGZpcnN0IEdldCBjY2hlIHNob3VsZCBiZSB1bmRlZiwgYWZ0ZXIgZmlycyBjYWNoZSBleGlzdCwgYnV0IHRoZSBGaWVsZCBrZXkgbXVzdCBiZQogICAgICAgICMgdW5kZWYKICAgICAgICBpZiAoIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkQ2FjaGUtPnskRmllbGR9LAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAiQ2FjaGUgYmVmb3JlIEl0ZW1GaWVsZEdldCgpOiAkRmllbGQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJENhY2hlLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAiQ2FjaGUgYmVmb3JlIEl0ZW1GaWVsZEdldCgpOiBDb21wbGV0ZSBjYWNoZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgZmllbGQKICAgICAgICAkUmVzdWx0RmllbGRzeyRGaWVsZH0gPSAkRkFRT2JqZWN0LT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRSUQsCiAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgY2FjaGUgaXMgc2V0CiAgICAgICAgJENhY2hlID0gJEZBUU9iamVjdC0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgID0+ICJJdGVtRmllbGRHZXQ6Okl0ZW1JRDo6JEZBUUlEIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkQ2FjaGUsCiAgICAgICAgICAgICdIQVNIJywKICAgICAgICAgICAgIkNhY2hlIGFmdGVyIEl0ZW1GaWVsZEdldCgpOiByZWYiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkQ2FjaGUtPnskRmllbGR9LAogICAgICAgICAgICAkUGFyYW17Q29tcGFyZUZpZWxkc30tPnskRmllbGR9LAogICAgICAgICAgICAiQ2FjaGUgYWZ0ZXIgSXRlbUZpZWxkR2V0KCk6ICRGaWVsZCBtYXRjaGVkIHdpdGggb3JpZ2luYWwgZmllbGQgZGF0YSIsCiAgICAgICAgKTsKICAgIH0KfTsKCiRDaGVja0ZpZWxkcy0+KCBDb21wYXJlRmllbGRzID0+IFwlVGVzdEZpZWxkcyApOwoKJFNlbGYtPklzRGVlcGx5KAogICAgXCVSZXN1bHRGaWVsZHMsCiAgICBcJVRlc3RGaWVsZHMsCiAgICAiSXRlbUZpZWxkR2V0KCk6IGZvciBhbGwgZmllbGRzIG1hdGNoIGV4cGVjdGVkIGRhdGEiLAopOwoKIyB1cGRhdGUgdGhlIEZBUSBpdGVtCm15ICVVcGRhdGVkVGVzdEZpZWxkcyA9ICgKICAgIEZpZWxkMSA9PiAnVXBkYXRlZCBTeW1wdG9tLi4uJywKICAgIEZpZWxkMiA9PiAnVXBkYXRlZCBQcm9ibGVtLi4uJywKICAgIEZpZWxkMyA9PiAnVXBkYXRlZCBTb2x1dGlvbi4uLicsCiAgICBGaWVsZDQgPT4gJ1VwZGF0ZWQgVXNlciBGaWVsZDQuLi4nLAogICAgRmllbGQ1ID0+ICdVcGRhdGVkIFVzZXIgRmllbGQ1Li4uJywKICAgIEZpZWxkNiA9PiAnVXBkYXRlZCBDb21tZW50Li4uJywKKTsKCiRGQVFVcGRhdGUgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgIFRpdGxlICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICBDYXRlZ29yeUlEID0+IDEsCiAgICBTdGF0ZUlEICAgID0+IDEsCiAgICBMYW5ndWFnZUlEID0+IDEsCiAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzJywKICAgICVVcGRhdGVkVGVzdEZpZWxkcywKICAgIFVzZXJJRCA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRVXBkYXRlLAogICAgIkZBUVVwZGF0ZSgpIGZvciBJdGVtRmllbGRHZXQgd2l0aCBUcnVlIiwKKTsKCiRDaGVja0ZpZWxkcy0+KCBDb21wYXJlRmllbGRzID0+IFwlVXBkYXRlZFRlc3RGaWVsZHMgKTsKCiRGQVFEZWxldGUgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgVXNlcklEID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgZm9yIEl0ZW1GaWVsZEdldDogd2l0aCBUcnVlIiwKKTsKCiMgY2hlY2sgdGhhdCBjYWNoZSBpcyBjbGVhbgpteSAkQ2FjaGUgPSAkRkFRT2JqZWN0LT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAiSXRlbUZpZWxkR2V0OjpJdGVtSUQ6OiRGQVFJRCIsCik7CgokU2VsZi0+SXMoCiAgICAkQ2FjaGUsCiAgICB1bmRlZiwKICAgICJDYWNoZSBmb3IgSXRlbUZpZWxkR2V0KCkgYWZ0ZXIgRkFRRGVsZXRlOiBDb21wbGV0ZSBjYWNoZSIsCik7CgojIEZBUSBpdGVtIGNhY2hlIHRlc3RzCiRGQVFJRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgIFRpdGxlICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICBDYXRlZ29yeUlEID0+IDEsCiAgICBTdGF0ZUlEICAgID0+IDEsCiAgICBMYW5ndWFnZUlEID0+IDEsCiAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzJywKICAgICVUZXN0RmllbGRzLAogICAgVXNlcklEID0+IDEsCik7CgojIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KJENhY2hlID0gJEZBUU9iamVjdC0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEZBUUlEIC4gJzo6SXRlbUZpZWxkczo6MCcsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgTm8gSXRlbUZpZWxkcyBCZWZvcmUgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIiwKKTsKJENhY2hlID0gJEZBUU9iamVjdC0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEZBUUlEIC4gJzo6SXRlbUZpZWxkczo6MScsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgV2l0aCBJdGVtRmllbGRzIEJlZm9yZSBGQVFHZXQoKTogQ29tcGxldGUgY2FjaGUiLAopOwoKIyBnZXQgRkFRIG5vIEl0ZW0gRmllbGRzCm15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICBJdGVtRmllbGRzID0+IDAsCiAgICBVc2VySUQgICAgID0+IDEKKTsKCiRTZWxmLT5JcygKICAgICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAkRkFRSUQsCiAgICAiU2FuaXR5IENoZWNrIGZvciBGQVFHZXQoKTogbWF0Y2ggSXRlbUlEIgopOwoKIyBzYW5pdHkgY2hlY2sgSXRlbSBGaWVsZHMKZm9yIG15ICRGaWVsZENvdW50ICggMSAuLiA2ICkgewogICAgbXkgJEZpZWxkID0gIkZpZWxkJEZpZWxkQ291bnQiOwoKICAgICRTZWxmLT5JcygKICAgICAgICAkRkFRRGF0YXskRmllbGR9LAogICAgICAgIHVuZGVmLAogICAgICAgICJTYW5pdHkgQ2hlY2sgZm9yIEZBUUdldCgpOiBubyBJdGVtRmllbGRzICRGaWVsZCIsCiAgICApOwp9CiRDYWNoZSA9ICRGQVFPYmplY3QtPntDYWNoZU9iamVjdH0tPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRGQVFJRCAuICc6Okl0ZW1GaWVsZHM6OjAnLAopOwokU2VsZi0+SXMoCiAgICByZWYgJENhY2hlLAogICAgJ0hBU0gnLAogICAgIkNhY2hlIGZvciBGQVEgTm8gSXRlbUZpZWxkcyBBZnRlciBGQVFHZXQoKTogQ29tcGxldGUgY2FjaGUgcmVmIiwKKTsKJENhY2hlID0gJEZBUU9iamVjdC0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEZBUUlEIC4gJzo6SXRlbUZpZWxkczo6MScsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgV2l0aCBJdGVtRmllbGRzIEFmdGVyIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSIsCik7CgojIGdldCBGQVEgd2l0aCBJdGVtIEZpZWxkcwolRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAxCik7CgokU2VsZi0+SXMoCiAgICAkRkFRRGF0YXtJdGVtSUR9LAogICAgJEZBUUlELAogICAgIlNhbml0eSBDaGVjayBmb3IgRkFRR2V0KCk6IG1hdGNoIEl0ZW1JRCIKKTsKCiMgc2FuaXR5IGNoZWNrIEl0ZW0gRmllbGRzCmZvciBteSAkRmllbGRDb3VudCAoIDEgLi4gNiApIHsKICAgIG15ICRGaWVsZCA9ICJGaWVsZCRGaWVsZENvdW50IjsKCiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICB1bmRlZiwKICAgICAgICAiU2FuaXR5IENoZWNrIGZvciBGQVFHZXQoKTogd2l0aCBJdGVtRmllbGRzICRGaWVsZCIsCiAgICApOwp9CiRDYWNoZSA9ICRGQVFPYmplY3QtPntDYWNoZU9iamVjdH0tPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRGQVFJRCAuICc6Okl0ZW1GaWVsZHM6OjAnLAopOwokU2VsZi0+SXMoCiAgICByZWYgJENhY2hlLAogICAgJ0hBU0gnLAogICAgIkNhY2hlIGZvciBGQVEgTm8gSXRlbUZpZWxkcyBBZnRlciBGQVFHZXQoKTogQ29tcGxldGUgY2FjaGUgcmVmIiwKKTsKJENhY2hlID0gJEZBUU9iamVjdC0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEZBUUlEIC4gJzo6SXRlbUZpZWxkczo6MScsCik7CiRTZWxmLT5JcygKICAgIHJlZiAkQ2FjaGUsCiAgICAnSEFTSCcsCiAgICAiQ2FjaGUgZm9yIEZBUSBXaXRoIEl0ZW1GaWVsZHMgQWZ0ZXIgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIHJlZiIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGQVEgU3RhdGUgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm15ICVTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5Jc05vdCgKICAgIHNjYWxhciBrZXlzICVTdGF0ZXMsCiAgICAwLAogICAgIlN0YXRlTGlzdCgpIG51bWJlciBvZiBlbGVtZW50cyBzaG91bGQgbm90IGJlIDAiCik7Cgpmb3IgbXkgJFN0YXRlSUQgKCBzb3J0IGtleXMgJVN0YXRlcyApIHsKICAgIG15ICVTdGF0ZSA9ICRGQVFPYmplY3QtPlN0YXRlR2V0KAogICAgICAgIFN0YXRlSUQgPT4gJFN0YXRlSUQsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle1N0YXRlSUR9LAogICAgICAgIHVuZGVmLAogICAgICAgICJTdGF0ZUdldCgpIFN0YXRlSUQgZm9yIFN0YXRlSUQ6ICckU3RhdGVJRCcgc2hvdWxkIG5vdCBiZSB1bmRlZiIKICAgICk7CiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle05hbWV9LAogICAgICAgIHVuZGVmLAogICAgICAgICJTdGF0ZUdldCgpIE5hbWUgZm9yIFN0YXRlSUQ6ICAgICckU3RhdGVJRCcgc2hvdWxkIG5vdCBiZSB1bmRlZiIKICAgICk7CiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle1R5cGVJRH0sCiAgICAgICAgdW5kZWYsCiAgICAgICAgIlN0YXRlR2V0KCkgVHlwZUlEIGZvciBTdGF0ZUlEOiAgJyRTdGF0ZUlEJyBzaG91bGQgbm90IGJlIHVuZGVmIgogICAgKTsKfQoKbXkgJFN0YXRlVHlwZUxpc3QgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgVXNlcklEID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICByZWYgJFN0YXRlVHlwZUxpc3QsCiAgICAnSEFTSCcsCiAgICAiU3RhdGVUeXBlTGlzdCgpIHJldHVybnMgaGFzaHJlZiIsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIga2V5cyAleyRTdGF0ZVR5cGVMaXN0fSwKICAgIDMsCiAgICAiU3RhdGVUeXBlTGlzdCgpIGhhcyAzIGtleXMiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnsxfSwKICAgICdpbnRlcm5hbCcsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDEgaXMgaW50ZXJuYWwiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnsyfSwKICAgICdleHRlcm5hbCcsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDIgaXMgZXh0ZXJuYWwiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnszfSwKICAgICdwdWJsaWMnLAogICAgIlN0YXRlVHlwZUxpc3QoKSAzIGlzIHB1YmxpYyIsCik7CgokU3RhdGVUeXBlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICBUeXBlcyAgPT4gWyAncHVibGljJywgJ2V4dGVybmFsJyBdLAogICAgVXNlcklEID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIga2V5cyAleyRTdGF0ZVR5cGVMaXN0fSwKICAgIDIsCiAgICAiU3RhdGVUeXBlTGlzdCgpIGhhcyAyIGtleXMiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnsyfSwKICAgICdleHRlcm5hbCcsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDIgaXMgZXh0ZXJuYWwiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnszfSwKICAgICdwdWJsaWMnLAogICAgIlN0YXRlVHlwZUxpc3QoKSAzIGlzIHB1YmxpYyIsCik7CgokU3RhdGVUeXBlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICBUeXBlcyAgPT4gWydpbnRlcm5hbCddLAogICAgVXNlcklEID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIga2V5cyAleyRTdGF0ZVR5cGVMaXN0fSwKICAgIDEsCiAgICAiU3RhdGVUeXBlTGlzdCgpIGhhcyAxIGtleSIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezF9LAogICAgJ2ludGVybmFsJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgMSBpcyBpbnRlcm5hbCIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgY2xlYW4gdGhlIHN5c3RlbQokRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRCwKICAgIFVzZXJJRCA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlLAogICAgIkZBUURlbGV0ZSgpIGZvciBJdGVtRmllbGRHZXQ6IHdpdGggVHJ1ZSIsCik7CgojIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KJENhY2hlID0gJEZBUU9iamVjdC0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEZBUUlEIC4gJzo6SXRlbUZpZWxkczo6MCcsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgTm8gSXRlbUZpZWxkcyBBZnRlciBGQVFEZWxldGUoKTogQ29tcGxldGUgY2FjaGUiLAopOwokQ2FjaGUgPSAkRkFRT2JqZWN0LT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkRkFRSUQgLiAnOjpJdGVtRmllbGRzOjoxJywKKTsKJFNlbGYtPklzKAogICAgJENhY2hlLAogICAgdW5kZWYsCiAgICAiQ2FjaGUgZm9yIEZBUSBXaXRoIEl0ZW1GaWVsZHMgQWZ0ZXIgRkFRRGVsZXRlKCk6IENvbXBsZXRlIGNhY2hlIiwKKTsKCjE7Cg==
IyAtLQojIEZBUVNlYXJjaC50IC0gRkFRIHNlYXJjaCB0ZXN0cwojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlRpbWU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpVc2VyOwp1c2UgS2VybmVsOjpDb25maWc7CgpteSAkQ29uZmlnT2JqZWN0ID0gS2VybmVsOjpDb25maWctPm5ldyggJXskU2VsZn0gKTsKCiMgc2V0IGNvbmZpZyBvcHRpdW9ucwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnRkFROjpBcHByb3ZhbFJlcXVpcmVkJywKICAgIFZhbHVlID0+IDAsCik7CgojIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKbXkgJEZBUU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldygKICAgICV7JFNlbGZ9LAogICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCik7CgpteSAkSGVscGVyT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXItPm5ldygKICAgICUkU2VsZiwKICAgIENvbmZpZ09iamVjdCAgID0+ICRDb25maWdPYmplY3QsCiAgICBVbml0VGVzdE9iamVjdCA9PiAkU2VsZiwKKTsKCm15ICRUaW1lT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlRpbWUtPm5ldygKICAgICUkU2VsZiwKICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAopOwoKbXkgJFVzZXJPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6VXNlci0+bmV3KAogICAgJSRTZWxmLAogICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCik7CgojIGdlbmVyYXRlIGEgcmFuZG9tIHN0cmluZyB0byBoZWxwIHNlYXJjaGVzCm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgojIGNyZWF0ZSBkaWZmZXJlbnQgdXNlcnMgZm9yIENyZWF0ZWRVc2VySURzIHNlYXJjaApteSBAQWRkZWRVc2VyczsKZm9yIG15ICRDb3VudGVyICggMSAuLiA0ICkgewogICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyT2JqZWN0LT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicsICdmYXFfYXBwcm92YWwnIF0sCiAgICApOwogICAgbXkgJFVzZXJJRCA9ICRVc2VyT2JqZWN0LT5Vc2VyTG9va3VwKAogICAgICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICk7CiAgICBwdXNoIEBBZGRlZFVzZXJzLCAkVXNlcklEOwp9CgpteSBAQWRkZWRGQVFzOwoKIyBhZGQgc29tZSBGQVFzCm15ICVGQVFBZGRUZW1wbGF0ZSA9ICgKICAgIFRpdGxlICAgICAgPT4gIlNvbWUgVGV4dCAkUmFuZG9tSUQiLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAkUmFuZG9tSUQsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiMgZnJlZXplIHRpbWUKJEhlbHBlck9iamVjdC0+Rml4ZWRUaW1lU2V0KCk7Cgpmb3IgbXkgJENvdW50ZXIgKCAxIC4uIDIgKSB7CiAgICBteSAkRkFRSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgJUZBUUFkZFRlbXBsYXRlLAogICAgICAgIFVzZXJJRCA9PiAkQWRkZWRVc2Vyc1sgJENvdW50ZXIgLSAxIF0sCiAgICApOwoKICAgICRTZWxmLT5Jc05vdCgKICAgICAgICB1bmRlZiwKICAgICAgICAkRkFRSUQsCiAgICAgICAgIkZBUUFkZCgpIEZBUUlEOickRkFRSUQnIGZvciBGQVFTZWFyY2goKSIsCiAgICApOwoKICAgIHB1c2ggQEFkZGVkRkFRcywgJEZBUUlEOwoKICAgICMgYWRkIDEgbWludXRlIHRvIGZyZWV6ZWQgdGltZQogICAgJEhlbHBlck9iamVjdC0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7Cn0KCiMgYWRkIHNvbWUgdm90ZXMKbXkgQFZvdGVzVG9BZGQgPSAoCiAgICB7CiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkQWRkZWRGQVFzWzBdLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICcyJywKICAgICAgICBSYXRlICAgICAgPT4gMTAwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRBZGRlZEZBUXNbMF0sCiAgICAgICAgSVAgICAgICAgID0+ICc1NC40My4zMC4yJywKICAgICAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgICAgIFJhdGUgICAgICA9PiA1MCwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkQWRkZWRGQVFzWzBdLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMycsCiAgICAgICAgSW50ZXJmYWNlID0+ICcyJywKICAgICAgICBSYXRlICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICB9LAogICAgewogICAgICAgIENyZWF0ZWRCeSA9PiAnU29tZSBUZXh0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEFkZGVkRkFRc1sxXSwKICAgICAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjEnLAogICAgICAgIEludGVyZmFjZSA9PiAnMicsCiAgICAgICAgUmF0ZSAgICAgID0+IDUwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRBZGRlZEZBUXNbMV0sCiAgICAgICAgSVAgICAgICAgID0+ICc1NC40My4zMC4yJywKICAgICAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgICAgIFJhdGUgICAgICA9PiA1MCwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgIH0sCgopOwpmb3IgbXkgJFZvdGUgKEBWb3Rlc1RvQWRkKSB7CiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlZvdGVBZGQoICV7JFZvdGV9ICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgIlZvdGVBZGQoKTogRkFRSUQ6JyRWb3RlLT57SXRlbUlEfScgSVA6JyRWb3RlLT57SVB9JyBSYXRlOickVm90ZS0+e1JhdGV9JyB3aXRoIHRydWUiLAogICAgKTsKfQoKIyBkbyB2b3RlIHNlYXJjaCB0ZXN0cwpteSAlU2VhcmNoQ29uZmlnVGVtcGxhdGUgPSAoCiAgICBLZXl3b3JkICAgICAgICAgID0+ICIkUmFuZG9tSUQiLAogICAgU3RhdGVzICAgICAgICAgICA9PiBbICdwdWJsaWMnLCAnaW50ZXJuYWwnIF0sCiAgICBPcmRlckJ5ICAgICAgICAgID0+IFsnRkFRSUQnXSwKICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgTGltaXQgICAgICAgICAgICA9PiAxNTAsCiAgICBVc2VySUQgICAgICAgICAgID0+IDEsCgopOwpteSBAVGVzdHMgPSAoCgogICAgIyB2b3RlcyB0ZXN0cwogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFNpbXBsZSBFcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzID0+IDMsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFNpbXBsZSBHcmVhdGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbiA9PiAyLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgR3JlYXRlclRoYW5FcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gMiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgU2ltcGxlIFNtYWxsZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IDMsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFNpbXBsZSBTbWFsbGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBNdWx0aXBsZSBFcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzID0+IFsgMiwgMyBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBNdWx0aXBsZSBHcmVhdGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbiA9PiBbIDEsIDIgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgR3JlYXRlclRoYW5FcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gWyAyLCAzIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgU21hbGxlclRoYW4gT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW4gPT4gWyAzLCAyIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgU21hbGxlclRoYW5FcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gWyAyLCAzIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgV3JvbmcgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgTGVzc1RoYW5FcXVhbHMgPT4gWzRdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIENvbXBsZXggT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gMiwKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDMsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBFcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgUmF0ZSA9PiB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gNTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgUmF0ZSB0ZXN0cwogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgU2ltcGxlIEdyZWF0ZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gNTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgU2ltcGxlIEdyZWF0ZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gNTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgU2ltcGxlIFNtYWxsZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW4gPT4gNjYsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgU2ltcGxlIFNtYWxsZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gNjcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgTXVsdGlwbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzID0+IFsgNTAsIDY2LjY3IF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUmF0ZSwgTXVsdGlwbGUgR3JlYXRlclRoYW4gT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgUmF0ZSA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbiA9PiBbIDIwLCA0MCBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIEdyZWF0ZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gWyA1MCwgNjYgXQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIFNtYWxsZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW4gPT4gWyA2NiwgNjAgXQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIFNtYWxsZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gWyA1MCwgNjcgXQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFdyb25nIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgTGVzc1RoYW5FcXVhbHMgPT4gWzEwXQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIENvbXBsZXggT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgUmF0ZSA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiBbIDUwLCA2MCBdLAogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gNjcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgY29tcGxleCB0ZXN0cwogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFJhdGUsIENvbXBsZXggKyBXcm9uZyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBFcXVhbHMgICAgICAgICAgICA9PiBbIDIsIDMsIDQgXSwKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFszXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUmF0ZSA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbiA9PiBbIDIwLCAgNTAgXSwKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IFsgMTAwLCAxMjAgXSwKICAgICAgICAgICAgICAgIExvd2VyVGhhbiAgID0+IFs5OV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAopOwoKIyBleGVjdXRlIHRoZSB0ZXN0cwpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgbXkgQEZBUUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgXEBGQVFJRHMsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IEZBUVNlYXJjaCgpIiwKICAgICk7Cn0KCiMgb3RoZXIgdGVzdHMKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnU3RhdGVzIEhhc2ggQ29ycmVjdCBJRHMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgU3RhdGVzID0+IHsKICAgICAgICAgICAgICAgIDEgPT4gJ0ludGVybmFsJywKICAgICAgICAgICAgICAgIDIgPT4gJ0V4dGVybmFsJywKICAgICAgICAgICAgICAgIDMgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWyAkQWRkZWRGQVFzWzBdLCAkQWRkZWRGQVFzWzFdIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnU3RhdGVzIEhhc2ggSW5jb3JyZWN0IElEcyAoRmxvYXQpJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAxLjEgPT4gJ0ludGVybmFsJywKICAgICAgICAgICAgICAgIDIuMiA9PiAnRXh0ZXJuYWwnLAogICAgICAgICAgICAgICAgMy4zID0+ICdQdWJsaWMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFtdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1N0YXRlcyBIYXNoIEluY29ycmVjdCBJRHMgKFN0cmluZyknLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgU3RhdGVzID0+IHsKICAgICAgICAgICAgICAgICdJbnRlcm5hbCcgPT4gJ0ludGVybmFsJywKICAgICAgICAgICAgICAgICdFeHRlcm5hbCcgPT4gJ0V4dGVybmFsJywKICAgICAgICAgICAgICAgICdQdWJsaWMnICAgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gW10sCiAgICB9LAoKKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIG15IEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgIFxARkFRSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIHRpbWUgYmFzZWQgdGVzdHMKCiMgdXBkYXRlIEZBUXMKbXkgJUZBUVVwZGF0ZVRlbXBsYXRlID0gKAogICAgVGl0bGUgICAgICA9PiAiTmV3IFRleHQgJFJhbmRvbUlEIiwKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJFJhbmRvbUlELAogICAgRmllbGQxICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgojIGFkZCAxIG1pbnV0ZSB0byBmcmVlemVkIHRpbWUKJEhlbHBlck9iamVjdC0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7CgpteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICVGQVFVcGRhdGVUZW1wbGF0ZSwKICAgIEl0ZW1JRCA9PiAkQWRkZWRGQVFzWzBdLAogICAgVXNlcklEID0+ICRBZGRlZFVzZXJzWzJdLAopOwoKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJGQVFVcGRhdGUoKSBGQVFJRDonJEFkZGVkRkFRc1swXScgZm9yIEZBUVNlYXJjaCgpIiwKKTsKCiRIZWxwZXJPYmplY3QtPkZpeGVkVGltZUFkZFNlY29uZHMoNjApOwoKJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAlRkFRVXBkYXRlVGVtcGxhdGUsCiAgICBJdGVtSUQgPT4gJEFkZGVkRkFRc1sxXSwKICAgIFVzZXJJRCA9PiAkQWRkZWRVc2Vyc1szXSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiRkFRVXBkYXRlKCkgRkFRSUQ6JyRBZGRlZEZBUXNbMV0nIGZvciBGQVFTZWFyY2goKSIsCik7CgojIGFkZCAyIG1pbnV0ZXMgdG8gZnJlZXplZCB0aW1lCiRIZWxwZXJPYmplY3QtPkZpeGVkVGltZUFkZFNlY29uZHMoMTIwKTsKCm15ICRTeXN0ZW1UaW1lID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKTsKCm15ICREYXRlTWludXMyTWlucyA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMlRpbWVTdGFtcCgKICAgIFN5c3RlbVRpbWUgPT4gKCAkU3lzdGVtVGltZSAtIDEyMCAtIDEgKSwKKTsKbXkgJERhdGVNaW51czVNaW5zID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUyVGltZVN0YW1wKAogICAgU3lzdGVtVGltZSA9PiAoICRTeXN0ZW1UaW1lIC0gMzAwIC0gMSApLAopOwpteSAkRGF0ZU1pbnVzNk1pbnMgPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZTJUaW1lU3RhbXAoCiAgICBTeXN0ZW1UaW1lID0+ICggJFN5c3RlbVRpbWUgLSAzNjAgLSAxICksCik7CgpAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lT2xkZXJNaW51dGVzIDMgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lT2xkZXJNaW51dGVzID0+IDMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU9sZGVyTWludXRlcyA2IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlcyA9PiA2LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgNiBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gNiwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lTmV3ZXJNaW51dGVzIDUgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzID0+IDUsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU9sZGVyRGF0ZSA1IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAkRGF0ZU1pbnVzNU1pbnMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU5ld2VyRGF0ZSA1IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAkRGF0ZU1pbnVzNU1pbnMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU9sZGVyRGF0ZSBDcmVhdGVUaW1lTmV3ZXJEYXRlJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICREYXRlTWludXM2TWlucywKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJERhdGVNaW51czVNaW5zLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NoYW5nZVRpbWVPbGRlck1pbnV0ZXMgMyBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gMywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzIDIgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lTmV3ZXJNaW51dGVzID0+IDIsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ2hhbmdlVGltZU9sZGVyRGF0ZSAyIE1pbnMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJERhdGVNaW51czJNaW5zLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NoYW5nZVRpbWVOZXdlckRhdGUgMiBNaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJERhdGVNaW51czJNaW5zLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfQopOwoKIyBleGVjdXRlIHRoZSB0ZXN0cwpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15IEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgIFxARkFRSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIGNyZWF0ZWQgdXNlciB0ZXN0cwpAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAxJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMF0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAyJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMV0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAxIGFuZCAyJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMF0sICRBZGRlZFVzZXJzWzFdIF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnV3JvbmcgQ3JlYXRlZFVzZXJJRHMgRm9ybWF0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+ICRBZGRlZFVzZXJzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKKTsKCiMgbGFzdCBjaGFuZ2VkIHVzZXIgdGVzdHMKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnTGFzdENoYW5nZWRVc2VySURzIDMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgTGFzdENoYW5nZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMl0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdMYXN0Q2hhbmdlZFVzZXJJRHMgNCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBMYXN0Q2hhbmdlZFVzZXJJRHMgPT4gWyAkQWRkZWRVc2Vyc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0xhc3RDaGFuZ2VkVXNlcklEcyAzIGFuZCA0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIExhc3RDaGFuZ2VkVXNlcklEcyA9PiBbICRBZGRlZFVzZXJzWzJdLCAkQWRkZWRVc2Vyc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1dyb25nIExhc3RDaGFuZ2VkVXNlcklEcyBGb3JtYXQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgTGFzdENoYW5nZWRVc2VySURzID0+ICRBZGRlZFVzZXJzWzJdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFtdLAogICAgfSwKKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSBARkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICBcQEZBUUlEcywKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gRkFRU2VhcmNoKCkiLAogICAgKTsKfQoKIyBhcHByb3ZhbCB0ZXN0cwojIHVwZGF0ZSBkYXRhYmFzZSB0byBwcmV2ZW50IGdlbmVyYXRpb24gb2YgYXBwcm92YWwgdGlja2V0CnJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgU1FMID0+ICcKICAgICAgICBVUERBVEUgZmFxX2l0ZW0KICAgICAgICBTRVQgYXBwcm92ZWQgPSA/CiAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgIEJpbmQgPT4gWwogICAgICAgIFwwLAogICAgICAgIFwkQWRkZWRGQVFzWzFdLAogICAgXSwKKTsKCkBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0FwcHJvdmVkIDEnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgQXBwcm92ZWQgPT4gMSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdBcHByb3ZlZCAwJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEFwcHJvdmVkID0+IDAsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAopOwoKIyBleGVjdXRlIHRoZSB0ZXN0cwpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15IEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgIFxARkFRSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIGNsZWFuIHRoZSBzeXN0ZW0KZm9yIG15ICRGQVFJRCAoQEFkZGVkRkFRcykgewogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgSXRlbUlEID0+ICRGQVFJRCwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgIkZBUURlbGV0ZSgpIGZvciBGQVFJRDonJEZBUUlEJyB3aXRoIFRydWUiLAogICAgKTsKfQoKIyByZXN0b3JlIHRpbWUKJEhlbHBlck9iamVjdC0+Rml4ZWRUaW1lVW5zZXQoKTsKCiMgZXhlY3V0ZSBvbGQgdGVzdHMKJFNlbGYtPlRydWUoCiAgICAxLAogICAgIi0tRXhlY3V0ZSBGb3JtZXIgVGVzdHMtLSIsCik7CnsKICAgIG15ICRGQVFJRDEgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgPT4gMiwKICAgICAgICBMYW5ndWFnZUlEID0+IDIsCiAgICAgICAgQXBwcm92ZWQgICA9PiAxLAogICAgICAgIFRpdGxlICAgICAgPT4gJ1NvbWUgVGV4dDInLAogICAgICAgIEtleXdvcmRzICAgPT4gJ3NvbWUga2V5d29yZHMyJywKICAgICAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uMicsCiAgICAgICAgRmllbGQyICAgICA9PiAnU29sdXRpb24gZm91bmQuLi4yJywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRGQVFJRDEsCiAgICAgICAgIkZBUUFkZCgpIC0gMSIsCiAgICApOwoKICAgIG15ICRGQVFJRDIgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICA9PiAnVGl0bGUnLAogICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgID0+IDEsCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgICAgIEtleXdvcmRzICAgPT4gJycsCiAgICAgICAgRmllbGQxICAgICA9PiAnUHJvYmxlbSBEZXNjcmlwdGlvbiAxLi4uJywKICAgICAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRGQVFJRDIsCiAgICAgICAgIkZBUUFkZCgpIC0gMiIsCiAgICApOwoKICAgIG15IEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAnKicsCiAgICAgICAgV2hhdCAgICAgICAgICAgICA9PiAnKnMqJywKICAgICAgICBLZXl3b3JkICAgICAgICAgID0+ICdzb21lKicsCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiBbICdwdWJsaWMnLCAnaW50ZXJuYWwnIF0sCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ1ZvdGVzJ10sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ1VwJ10sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAxNTAsCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBteSAkRkFRU2VhcmNoRm91bmQgID0gMDsKICAgIG15ICRGQVFTZWFyY2hGb3VuZDIgPSAwOwogICAgZm9yIG15ICRGQVFJRFNlYXJjaCAoQEZBUUlEcykgewogICAgICAgIGlmICggJEZBUUlEU2VhcmNoIGVxICRGQVFJRDEgKSB7CiAgICAgICAgICAgICRGQVFTZWFyY2hGb3VuZCA9IDE7CiAgICAgICAgfQogICAgICAgIGlmICggJEZBUUlEU2VhcmNoIGVxICRGQVFJRDIgKSB7CiAgICAgICAgICAgICRGQVFTZWFyY2hGb3VuZDIgPSAxOwogICAgICAgIH0KICAgIH0KICAgICRTZWxmLT5UcnVlKAogICAgICAgICRGQVFTZWFyY2hGb3VuZCwKICAgICAgICAiRkFRU2VhcmNoKCkgLSAkRkFRSUQxIiwKICAgICk7CiAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgJEZBUVNlYXJjaEZvdW5kMiwKICAgICAgICAiRkFRU2VhcmNoKCkgLSAkRkFRSUQyIiwKICAgICk7CgogICAgQEZBUUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICcqJywKICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICd0SVRMZScsCiAgICAgICAgV2hhdCAgICAgICAgICAgICA9PiAnbCcsCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiBbICdwdWJsaWMnLCAnaW50ZXJuYWwnIF0sCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ0NyZWF0ZWQnXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnVXAnXSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+IDE1MCwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+IDEsCiAgICApOwoKICAgICRGQVFTZWFyY2hGb3VuZCAgPSAwOwogICAgJEZBUVNlYXJjaEZvdW5kMiA9IDA7CiAgICBmb3IgbXkgJEZBUUlEU2VhcmNoIChARkFRSURzKSB7CiAgICAgICAgaWYgKCAkRkFRSURTZWFyY2ggZXEgJEZBUUlEMSApIHsKICAgICAgICAgICAgJEZBUVNlYXJjaEZvdW5kID0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkRkFRSURTZWFyY2ggZXEgJEZBUUlEMiApIHsKICAgICAgICAgICAgJEZBUVNlYXJjaEZvdW5kMiA9IDE7CiAgICAgICAgfQogICAgfQogICAgJFNlbGYtPkZhbHNlKAogICAgICAgICRGQVFTZWFyY2hGb3VuZCwKICAgICAgICAiRkFRU2VhcmNoKCkgLSAkRkFRSUQxIiwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkRkFRU2VhcmNoRm91bmQyLAogICAgICAgICJGQVFTZWFyY2goKSAtICRGQVFJRDIiLAogICAgKTsKCiAgICBARkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJyonLAogICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJycsCiAgICAgICAgV2hhdCAgICAgICAgICAgICA9PiAnc29sdXRpb24gZm91bmQnLAogICAgICAgIFN0YXRlcyAgICAgICAgICAgPT4gWyAncHVibGljJywgJ2ludGVybmFsJyBdLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydDcmVhdGVkJ10sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ1VwJ10sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAxNTAsCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICAkRkFRU2VhcmNoRm91bmQgID0gMDsKICAgICRGQVFTZWFyY2hGb3VuZDIgPSAwOwogICAgZm9yIG15ICRGQVFJRFNlYXJjaCAoQEZBUUlEcykgewogICAgICAgIGlmICggJEZBUUlEU2VhcmNoIGVxICRGQVFJRDEgKSB7CiAgICAgICAgICAgICRGQVFTZWFyY2hGb3VuZCA9IDE7CiAgICAgICAgfQogICAgICAgIGlmICggJEZBUUlEU2VhcmNoIGVxICRGQVFJRDIgKSB7CiAgICAgICAgICAgICRGQVFTZWFyY2hGb3VuZDIgPSAxOwogICAgICAgIH0KICAgIH0KICAgICRTZWxmLT5UcnVlKAogICAgICAgICRGQVFTZWFyY2hGb3VuZCwKICAgICAgICAiRkFRU2VhcmNoKCkgbGl0ZXJhbCB0ZXh0IC0gJEZBUUlEMSIsCiAgICApOwogICAgJFNlbGYtPkZhbHNlKAogICAgICAgICRGQVFTZWFyY2hGb3VuZDIsCiAgICAgICAgIkZBUVNlYXJjaCgpIGxpdGVyYWwgdGV4dCAtICRGQVFJRDIiLAogICAgKTsKCiAgICBARkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJyonLAogICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJycsCiAgICAgICAgV2hhdCAgICAgICAgICAgICA9PiAnc29sdXRpb24rZm91bmQnLAogICAgICAgIFN0YXRlcyAgICAgICAgICAgPT4gWyAncHVibGljJywgJ2ludGVybmFsJyBdLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydDcmVhdGVkJ10sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ1VwJ10sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAxNTAsCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICAkRkFRU2VhcmNoRm91bmQgID0gMDsKICAgICRGQVFTZWFyY2hGb3VuZDIgPSAwOwogICAgZm9yIG15ICRGQVFJRFNlYXJjaCAoQEZBUUlEcykgewogICAgICAgIGlmICggJEZBUUlEU2VhcmNoIGVxICRGQVFJRDEgKSB7CiAgICAgICAgICAgICRGQVFTZWFyY2hGb3VuZCA9IDE7CiAgICAgICAgfQogICAgICAgIGlmICggJEZBUUlEU2VhcmNoIGVxICRGQVFJRDIgKSB7CiAgICAgICAgICAgICRGQVFTZWFyY2hGb3VuZDIgPSAxOwogICAgICAgIH0KICAgIH0KICAgICRTZWxmLT5UcnVlKAogICAgICAgICRGQVFTZWFyY2hGb3VuZCwKICAgICAgICAiRkFRU2VhcmNoKCkgQU5EIC0gJEZBUUlEMSIsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUVNlYXJjaEZvdW5kMiwKICAgICAgICAiRkFRU2VhcmNoKCkgQU5EIC0gJEZBUUlEMiIsCiAgICApOwoKICAgICMgY2xlYW51cCB0aGUgc3lzdGVtCiAgICBmb3IgbXkgJEZBUUlEICggJEZBUUlEMSwgJEZBUUlEMiApIHsKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRRGVsZXRlKCkgZm9yIEZBUUlEOickRkFRSUQnIHdpdGggVHJ1ZSIsCiAgICAgICAgKTsKICAgIH0KfQoxOwo=
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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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSAG8AbwB0ACAARQBuAHQAcgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAFAP//////////AQAAAAYJAgAAAAAAwAAAAAAAAEYAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAACACgAAAAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIAAgAAAAQAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAAAAAQBPAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAgD/////AwAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAFAAAAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABKCAAAAAAAAAUAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAIABQAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAADgBAAAAAAAA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L0ZvbnQgNyAwIFINCiAgIC9YT2JqZWN0IDggMCBSDQogICAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQyAvSW1hZ2VJIC9JbWFnZUIgXQ0KPj4NCmVuZG9iag0KDQoxIDAgb2JqDQo8PCAvVHlwZSAvUGFnZQ0KICAgL1BhcmVudCA1IDAgUg0KICAgL1Jlc291cmNlcyA5IDAgUg0KICAgL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXQ0KICAgL0dyb3VwIDw8IC9TIC9UcmFuc3BhcmVuY3kgL0NTIC9EZXZpY2VSR0IgL0kgdHJ1ZSA+Pg0KICAgL0NvbnRlbnRzIDIgMCBSDQo+Pg0KZW5kb2JqDQoNCjUgMCBvYmoNCjw8IC9UeXBlIC9QYWdlcw0KICAgL1Jlc291cmNlcyA5IDAgUg0KICAgL01lZGlhQm94IFsgMCAwIDU5NSA4NDIgXQ0KICAgL0tpZHMgWyAxIDAgUg0KICAgICAgICAgICBdDQogICAvQ291bnQgMQ0KPj4NCmVuZG9iag0KDQoxMCAwIG9iag0KPDwgL1R5cGUgL0NhdGFsb2cNCiAgIC9QYWdlcyA1IDAgUg0KPj4NCmVuZG9iag0KDQoxMSAwIG9iag0KPDwgL0NyZWF0b3IgPEZFRkYwMDU3MDA3MjAwNjkwMDc0MDA2NTAwNzI+DQovUHJvZHVjZXIgPEZFRkYwMDRGMDA3MDAwNjUwMDZFMDA0RjAwNjYwMDY2MDA2OTAwNjMwMDY1MDAyRTAwNkYwMDcyMDA2NzAwMjAwMDMyMDAyRTAwMzAwMDJEMDA3MDAwNzIwMDY1Pg0KL0NyZWF0aW9uRGF0ZSAoRDoyMDA3MDMwNTE1NTM1OSswMScwMCcpDQo+Pg0KZW5kb2JqDQoNCnhyZWYNCjAgMTINCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMzY5OCAwMDAwMCBuDQowMDAwMDAwMDIxIDAwMDAwIG4NCjAwMDAwMDAzMTAgMDAwMDAgbg0KMDAwMDAwMDMzNiAwMDAwMCBuDQowMDAwMDAzODgzIDAwMDAwIG4NCjAwMDAwMDMzODIgMDAwMDAgbg0KMDAwMDAwMzUwMiAwMDAwMCBuDQowMDAwMDAzNTQzIDAwMDAwIG4NCjAwMDAwMDM1ODQgMDAwMDAgbg0KMDAwMDAwNDAxOSAwMDAwMCBuDQowMDAwMDA0MDc5IDAwMDAwIG4NCnRyYWlsZXINCjw8IC9TaXplIDEyDQogICAvUm9vdCAxMCAwIFINCiAgIC9JbmZvIDExIDAgUg0KICAgL0lEIFsgPDYwMEE2NDFFNjM3QzAyN0U0NjEyMkI3ODM0NjczMzI5Pg0KICAgICAgICAgPDYwMEE2NDFFNjM3QzAyN0U0NjEyMkI3ODM0NjczMzI5PiBdDQo+Pg0Kc3RhcnR4cmVmDQo0Mjk0DQolJUVPRg0K
Ly8gLS0KLy8gRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5qcyAtIHByb3ZpZGVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZQovLyBjb25maXJtYXRpb24gZGlhbG9ncwovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBPVFJTIEFHLCBodHRwOi8vb3Rycy5jb20vXG4iOwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgRkFRID0gRkFRIHx8IHt9OwpGQVEuQWdlbnQgPSBGQVEuQWdlbnQgfHwge307CgovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIENvbmZpcm1hdGlvbkRpYWxvZy4KICovCkZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoqCiAgICAgKiBAdmFyaWFibGUKICAgICAqIEBwcml2YXRlCiAgICAgKiAgICAgVGhpcyB2YXJpYWJsZSBzdG9yZXMgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcmUgcGFzc2VkIGZyb20gdGhlIERUTCBhbmQgY29udGFpbiBhbGwgdGhlIGRhdGEgdGhhdCB0aGUgZGlhbG9nIG5lZWRzLgogICAgICovCiAgICB2YXIgRGlhbG9nRGF0YSA9IFtdOwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcHJpdmF0ZQogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiBAZGVzY3JpcHRpb24gU2hvd3Mgd2FpdGluZyBkaWFsb2cgdW50aWwgc2VhcmNoIHNjcmVlbiBpcyByZWFkeS4KICAgICAqLwogICAgZnVuY3Rpb24gU2hvd1dhaXRpbmdEaWFsb2coUG9zaXRpb25Ub3ApewogICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKCc8ZGl2IGNsYXNzPSJTcGFjaW5nIENlbnRlciI+PHNwYW4gY2xhc3M9IkFKQVhMb2FkZXIiIHRpdGxlPSInICsgQ29yZS5Db25maWcuR2V0KCdMb2FkaW5nTXNnJykgKyAnIj48L3NwYW4+PC9kaXY+JywgJycsIFBvc2l0aW9uVG9wLCAnQ2VudGVyJywgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7RXZlbnRPYmplY3R9IGV2ZW50IG9iamVjdCBvZiB0aGUgY2xpY2tlZCBlbGVtZW50LgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gc2hvd3MgYSBjb25maXJtYXRpb24gZGlhbG9nIHdpdGggMiBidXR0b25zOiBZZXMgYW5kIE5vCiAgICAgKi8KICAgIFRhcmdldE5TLlNob3dDb25maXJtYXRpb25EaWFsb2cgPSBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICAgICAgdmFyIExvY2FsRGlhbG9nRGF0YSwKICAgICAgICAgICAgUG9zaXRpb25Ub3AsCiAgICAgICAgICAgIERhdGEsCiAgICAgICAgICAgIEJ1dHRvbnM7CgogICAgICAgIC8vIGdldCBnbG9iYWwgc2F2ZWQgRGlhbG9nRGF0YSBmb3IgdGhpcyBmdW5jdGlvbgogICAgICAgIExvY2FsRGlhbG9nRGF0YSA9IERpYWxvZ0RhdGFbJChFdmVudC50YXJnZXQpLmF0dHIoJ2lkJyldOwoKICAgICAgICAvLyBkZWZpbmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cKICAgICAgICBQb3NpdGlvblRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSArICgkKHdpbmRvdykuaGVpZ2h0KCkgKiAwLjMpOwoKICAgICAgICAvLyBzaG93IHdhaXRpbmcgZGlhbG9nCiAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coUG9zaXRpb25Ub3ApOwoKICAgICAgICAvLyBhamF4IGNhbGwgdG8gdGhlIG1vZHVsZSB0aGF0IGRlbGV0ZXMgdGhlIHRlbXBsYXRlCiAgICAgICAgRGF0YSA9IExvY2FsRGlhbG9nRGF0YS5EaWFsb2dDb250ZW50UXVlcnlTdHJpbmc7CiAgICAgICAgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJyksIERhdGEsIGZ1bmN0aW9uIChSZXNwb25zZSkgewoKICAgICAgICAgICAgLy8gJ0NvbmZpcm1hdGlvbicgb3BlbnMgYSBkaWFsb2cgd2l0aCAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgICAgICAgICAgaWYgKFJlc3BvbnNlLkRpYWxvZ1R5cGUgPT09ICdDb25maXJtYXRpb24nKSB7CgogICAgICAgICAgICAgICAgLy8gZGVmaW5lIHllcyBhbmQgbm8gYnV0dG9ucwogICAgICAgICAgICAgICAgQnV0dG9ucyA9IFt7CiAgICAgICAgICAgICAgICAgICAgTGFiZWw6IExvY2FsRGlhbG9nRGF0YS5UcmFuc2xhdGVkVGV4dC5ZZXMsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICJQcmltYXJ5IiwKCiAgICAgICAgICAgICAgICAgICAgLy8gZGVmaW5lIHRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSAnWWVzJyBidXR0b24gaXMgcHJlc3NlZAogICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiBmdW5jdGlvbigpewoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZSBZZXMgYW5kIE5vIGJ1dHRvbnMgdG8gcHJldmVudCBtdWx0aXBsZSBzdWJtaXRzCiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2Rpdi5EaWFsb2c6dmlzaWJsZSBkaXYuQ29udGVudEZvb3RlciBidXR0b24nKS5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gdGhlIG1vZHVsZSB0aGF0IGRvZXMgdGhlIGNvbmZpcm1lZCBhY3Rpb24gYWZ0ZXIgcHJlc3NpbmcgdGhlIFllcyBidXR0b24KICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSArIExvY2FsRGlhbG9nRGF0YS5Db25maXJtZWRBY3Rpb25RdWVyeVN0cmluZzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgTGFiZWw6IExvY2FsRGlhbG9nRGF0YS5UcmFuc2xhdGVkVGV4dC5ObywKICAgICAgICAgICAgICAgICAgICBUeXBlOiAiQ2xvc2UiCiAgICAgICAgICAgICAgICB9XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gJ01lc3NhZ2UnIG9wZW5zIGEgZGlhbG9nIHdpdGggMSBidXR0b246IE9rCiAgICAgICAgICAgIGVsc2UgaWYgKFJlc3BvbnNlLkRpYWxvZ1R5cGUgPT09ICdNZXNzYWdlJykgewoKICAgICAgICAgICAgICAgIC8vIGRlZmluZSBPayBidXR0b24KICAgICAgICAgICAgICAgIEJ1dHRvbnMgPSBbewogICAgICAgICAgICAgICAgICAgIExhYmVsOiBMb2NhbERpYWxvZ0RhdGEuVHJhbnNsYXRlZFRleHQuT2ssCiAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICJQcmltYXJ5IiwKICAgICAgICAgICAgICAgICAgICBUeXBlOiAiQ2xvc2UiCiAgICAgICAgICAgICAgICB9XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc2hvdyB0aGUgY29uZmlybWF0aW9uIGRpYWxvZyB0byBjb25maXJtIHRoZSBhY3Rpb24KICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coUmVzcG9uc2UuSFRNTCwgTG9jYWxEaWFsb2dEYXRhLkRpYWxvZ1RpdGxlLCBQb3NpdGlvblRvcCwgIkNlbnRlciIsIHRydWUsIEJ1dHRvbnMpOwogICAgICAgIH0sICdqc29uJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtFdmVudE9iamVjdH0gZXZlbnQgb2JqZWN0IG9mIHRoZSBjbGlja2VkIGVsZW1lbnQuCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzaG93cyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2l0aCAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgICAqLwogICAgVGFyZ2V0TlMuQmluZENvbmZpcm1hdGlvbkRpYWxvZyA9IGZ1bmN0aW9uIChEYXRhKSB7CiAgICAgICAgRGlhbG9nRGF0YVtEYXRhLkVsZW1lbnRJRF0gPSBEYXRhOwoKICAgICAgICAvLyBiaW5kaW5nIGEgY2xpY2sgZXZlbnQgdG8gdGhlIGRlZmluZWQgZWxlbWVudAogICAgICAgICQoRGlhbG9nRGF0YVtEYXRhLkVsZW1lbnRJRF0uRWxlbWVudFNlbGVjdG9yKS5iaW5kKCdjbGljaycsIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuU2hvd0NvbmZpcm1hdGlvbkRpYWxvZyk7CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gRkFRLkFnZW50LkZBUVpvb20uanMgLSBwcm92aWRlcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBGQVFab29tCi8vIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LlRpY2tldFpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Wm9vbS4KICovCkZBUS5BZ2VudC5GQVFab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJElmcmFtZSBUaGUgaWZyYW1lIHdoaWNoIHNob3VsZCBiZSBhdXRvLWhlaWdodGVkCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewoKICAgICAgICBpZiAoaXNKUXVlcnlPYmplY3QoJElmcmFtZSkpIHsKICAgICAgICAgICAgdmFyIE5ld0hlaWdodCA9ICRJZnJhbWUKICAgICAgICAgICAgICAgIC5jb250ZW50cygpCiAgICAgICAgICAgICAgICAuZmluZCgnaHRtbCcpCiAgICAgICAgICAgICAgICAuaGVpZ2h0KCk7CgogICAgICAgICAgICAvLyBJRTggbmVlZHMgc29tZSBtb3JlIHNwYWNlIGR1ZSB0byBpbmNvcnJlY3QgaGVpZ2h0IGNhbGN1bGF0aW9uCiAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiAwICYmICQuYnJvd3Nlci5tc2llICYmICQuYnJvd3Nlci52ZXJzaW9uID09PSAnOC4wJykgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gTmV3SGVpZ2h0ICsgNDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gaWYgdGhlIGlGcmFtZXMgaGVpZ2h0IGlzIDAsIHdlIGNvbGxhcHNlIHRoZSB3aWRnZXQKICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA9PT0gMCkgewogICAgICAgICAgICAgICAgJElmcmFtZS5jbG9zZXN0KCcuV2lkZ2V0U2ltcGxlJykucmVtb3ZlQ2xhc3MoJ0V4cGFuZGVkJykuYWRkQ2xhc3MoJ0NvbGxhcHNlZCcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIU5ld0hlaWdodCB8fCBpc05hTihOZXdIZWlnaHQpKSB7CiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA+IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnKSkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkSWZyYW1lLmhlaWdodChOZXdIZWlnaHQgKyAncHgnKTsKICAgICAgICB9CiAgICB9OwoKCgogICAgcmV0dXJuIFRhcmdldE5TOwp9KEZBUS5BZ2VudC5GQVFab29tIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gRkFRLkFnZW50LlRpY2tldENvbXBvc2UuanMgLSBwcm92aWRlcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBBZ2VudEZBUVpvb20KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tL1xuIjsKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LlRpY2tldENvbXBvc2UKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Q29tcG9zZS4KICovCkZBUS5BZ2VudC5UaWNrZXRDb21wb3NlID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQgVGhlIGVkaXRvcgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIEluaXRpYWxpemUgdGhlIG5lZWRlZCBzdHVmZiBmb3IgdGhlIEZBUSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0aWNrZXQgc2NyZWVucy4KICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdEZBUVRpY2tldENvbXBvc2UgPSBmdW5jdGlvbiAoJEVsZW1lbnQpIHsKICAgICAgICBmdW5jdGlvbiBHZXRDdXJzb3JQb3NpdGlvbigpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnQgPSAkRWxlbWVudFswXSwKICAgICAgICAgICAgICAgIEVsZW1lbnRWYWx1ZSA9ICRFbGVtZW50LnZhbCgpLAogICAgICAgICAgICAgICAgUmFuZ2UsCiAgICAgICAgICAgICAgICBUZXh0UmFuZ2UsCiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUsCiAgICAgICAgICAgICAgICBTdGFydFJhbmdlID0gMCwKICAgICAgICAgICAgICAgIEVuZFJhbmdlID0gMDsKICAgICAgICAgICAgLy8gRmlyZWZveAogICAgICAgICAgICBpZiAoRWxlbWVudC5zZWxlY3Rpb25TdGFydCkgewogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7CiAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IEVsZW1lbnQuc2VsZWN0aW9uRW5kOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIElFCiAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewogICAgICAgICAgICAgICAgUmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTsKICAgICAgICAgICAgICAgIFRleHRSYW5nZSA9IEVsZW1lbnQuY3JlYXRlVGV4dFJhbmdlKCk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUgPSBUZXh0UmFuZ2UuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2UubW92ZVRvQm9va21hcmsoUmFuZ2UuZ2V0Qm9va21hcmsoKSk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUuc2V0RW5kUG9pbnQoJ0VuZFRvU3RhcnQnLCBUZXh0UmFuZ2UpOwogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IEVuZFJhbmdlID0gVGV4dFJhbmdlRHVwbGljYXRlLnRleHQubGVuZ3RoOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTYXZlIGN1cnNvciBwb3NpdGlvbiBmb3IgbGF0ZXIgdXNhZ2UKICAgICAgICAgICAgJEVsZW1lbnQuZGF0YSgnQ3Vyc29yJywgewogICAgICAgICAgICAgICAgU3RhcnRSYW5nZTogU3RhcnRSYW5nZSwKICAgICAgICAgICAgICAgIEVuZFJhbmdlOiBFbmRSYW5nZQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIFNlZSBidWcjOTExNjoKICAgICAgICAvLyBJbiBDaHJvbWUgc29tZXRpbWVzIHRoZSBjbGljayBldmVudCBpcyB0cmlnZ2VyZWQgYmVmb3JlIHRoZSBmb2N1cyBldmVudAogICAgICAgIC8vIHdlIHByZXZlbnQgdGhhdCBieSBjaGVja2luZyBFZGl0b3JHb3RGb2N1cyBmaXJzdAoKICAgICAgICB2YXIgSW5zdGFuY2VOYW1lID0gJEVsZW1lbnQuYXR0cignaWQnKSwKICAgICAgICAgICAgRWRpdG9yR290Rm9jdXMgPSBmYWxzZTsKICAgICAgICAvLyBSZWdpc3RlciBSVEUgZXZlbnRzIGZvciBzYXZpbmcgdGhlIGN1cnNvciBwb3NpdGlvbgogICAgICAgIGlmICh0eXBlb2YgQ0tFRElUT1IgIT09ICd1bmRlZmluZWQnICYmIENLRURJVE9SICYmIENLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dCkgewogICAgICAgICAgICAvLyBHZXQgbGFzdCBjdXJzb3IgcG9zaXRpb24gYW5kIHNhdmUgaXQgKG9uIGZvY3VzIHdlIGNvbWUgYmFjayB0byB0aGlzIHBvc2l0aW9uKQogICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5vbignY29udGVudERvbScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZG9jdW1lbnQub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChFZGl0b3JHb3RGb2N1cykgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjJyArIEluc3RhbmNlTmFtZSkuZGF0YSgnUlRFQ3Vyc29yJywgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZG9jdW1lbnQub24oJ2tleXVwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChFZGl0b3JHb3RGb2N1cykgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjJyArIEluc3RhbmNlTmFtZSkuZGF0YSgnUlRFQ3Vyc29yJywgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIG5lZWRlZCBmb3IgY2xpZW50LXNpZGUgdmFsaWRhdGlvbiBhbmQgaW5zZXJ0aW5nIGRhdGEgaW50byBSVEUKICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gaWYgYSBzYXZlZCBjdXJzb3IgcG9zaXRpb24gZXhpc3RzLCBzZXQgdGhpcyBwb3NpdGlvbiBub3cKICAgICAgICAgICAgICAgIHZhciBSVEVDdXJzb3JSYW5nZSA9ICQoJyMnICsgSW5zdGFuY2VOYW1lKS5kYXRhKCdSVEVDdXJzb3InKSwKICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb247CgogICAgICAgICAgICAgICAgRWRpdG9yR290Rm9jdXMgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGlmIChSVEVDdXJzb3JSYW5nZSkgewogICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbiA9IG5ldyBDS0VESVRPUi5kb20uc2VsZWN0aW9uKENLRURJVE9SLmluc3RhbmNlc1tJbnN0YW5jZU5hbWVdLmRvY3VtZW50KTsKICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb24uc2VsZWN0UmFuZ2VzKFJURUN1cnNvclJhbmdlKTsKICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgc2F2ZWQgY3Vyc29yIHBvc2l0aW9uICh0byBub3Qga2VlcCBvbGQgc3R1ZmYpCiAgICAgICAgICAgICAgICAgICAgJCgnIycgKyBJbnN0YW5jZU5hbWUpLmRhdGEoJ1JURUN1cnNvcicsIHVuZGVmaW5lZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAvLyBSZWdpc3RlciBldmVudHMgZm9yIHNhdmluZyB0aGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRleHRhcmVhCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgnY2xpY2suRkFRQ29tcG9zaW5nJykuYmluZCgnY2xpY2suRkFRQ29tcG9zaW5nJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgR2V0Q3Vyc29yUG9zaXRpb24oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgna2V5dXAuRkFRQ29tcG9zaW5nJykuYmluZCgna2V5dXAuRkFRQ29tcG9zaW5nJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgR2V0Q3Vyc29yUG9zaXRpb24oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IFRpdGxlIG9mIGEgRkFRIGFydGljbGUgdG8gYmUgcmV0dXJuZWQgaW50byB0aWNrZXQgU3ViamVjdAogICAgICogQHBhcmFtIHtTdHJpbmd9IEZpZWxkcyBvZiBhIEZBUSBhcnRpY2xlIGFuZCBvciBMaW5rIHRvIHRoZSBwdWJsaWMgaW50ZXJmYWNlIGluIHBsYWluIHRleHQKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBGaWVsZHMgb2YgYSBGQVEgYXJ0aWNsZSBhbmQgb3IgTGluayB0byB0aGUgcHVibGljIGludGVyZmFjZSBpbiBIVE1MCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgRG8gbm90aGluZyBhbmQgc2hvdyBhbiBlcnJvciBtZXNzYWdlLgogICAgICovCiAgICBmdW5jdGlvbiBTZXREYXRhIChGQVFUaXRsZSwgRkFRQ29udGVudCwgRkFRSFRNTENvbnRlbnQpIHsKICAgICAgICBpZiAoJCgnI1N1YmplY3QnLCBwYXJlbnQuZG9jdW1lbnQpLmxlbmd0aCAmJiAkKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmxlbmd0aCkgewogICAgICAgICAgICB2YXIgJFBhcmVudFN1YmplY3QgPSAkKCcjU3ViamVjdCcsIHBhcmVudC5kb2N1bWVudCksCiAgICAgICAgICAgICAgICAkUGFyZW50Qm9keSA9ICQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCksCiAgICAgICAgICAgICAgICBQYXJlbnRCb2R5ID0gJFBhcmVudEJvZHlbMF0sCiAgICAgICAgICAgICAgICBQYXJlbnRCb2R5VmFsdWUgPSAkUGFyZW50Qm9keS52YWwoKSwKICAgICAgICAgICAgICAgIFJhbmdlLAogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IDAsCiAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IDAsCiAgICAgICAgICAgICAgICBOZXdQb3NpdGlvbiA9IDAsCiAgICAgICAgICAgICAgICBOZXdIVE1MOwoKICAgICAgICAgICAgLy8gY29weSBzdWJqZWN0CiAgICAgICAgICAgIGlmICgkUGFyZW50U3ViamVjdC52YWwoKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICRQYXJlbnRTdWJqZWN0LnZhbChGQVFUaXRsZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUGFyZW50U3ViamVjdC52YWwoJFBhcmVudFN1YmplY3QudmFsKCkgKyAnIC0gJyArIEZBUVRpdGxlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIEZBUSB0ZXh0IGFuZC9vciBsaW5rIHRvIFdZU0lXWUcgZWRpdG9yIGluIHBhcmVudCB3aW5kb3cKICAgICAgICAgICAgaWYgKHBhcmVudC5DS0VESVRPUiAmJiBwYXJlbnQuQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0KSB7CiAgICAgICAgICAgICAgICBwYXJlbnQuQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0LmZvY3VzKCk7CiAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIC8vIEluIHNvbWUgY2lyY3Vtc3RhbmNlcywgdGhpcyBjb21tYW5kIHRocm93cyBhbiBlcnJvciAoYWx0aG91Z2ggaW5zZXJ0aW5nIHRoZSBIVE1MIHdvcmtzKQogICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkgYWxzbyB3b3Jrcywgd2UganVzdCB3cmFwIGl0IGluIGEgdHJ5LWNhdGNoLXN0YXRlbWVudAogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5DS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuaW5zZXJ0SHRtbChGQVFIVE1MQ29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNhdGNoIChFcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAkLm5vb3AoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGluc2VydCBib2R5IGFuZC9vciBsaW5rIHRvIHRleHRhcmVhIChpZiBwb3NzaWJsZSB0byBjdXJzb3IgcG9zaXRpb24gb3RoZXJ3aXNlIHRvIHRoZSB0b3ApCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gR2V0IHByZXZpb3VzbHkgc2F2ZWQgY3Vyc29yIHBvc2l0aW9uIG9mIHRleHRhcmVhCiAgICAgICAgICAgICAgICBpZiAocGFyZW50LiQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCkuZGF0YSgnQ3Vyc29yJykpIHsKICAgICAgICAgICAgICAgICAgICBTdGFydFJhbmdlID0gcGFyZW50LiQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCkuZGF0YSgnQ3Vyc29yJykuU3RhcnRSYW5nZTsKICAgICAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IHBhcmVudC4kKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmRhdGEoJ0N1cnNvcicpLkVuZFJhbmdlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEFkZCBuZXcgdGV4dCB0byB0ZXh0YXJlYQogICAgICAgICAgICAgICAgJFBhcmVudEJvZHkudmFsKFBhcmVudEJvZHlWYWx1ZS5zdWJzdHIoMCwgU3RhcnRSYW5nZSkgKyBGQVFDb250ZW50ICsgUGFyZW50Qm9keVZhbHVlLnN1YnN0cihFbmRSYW5nZSwgUGFyZW50Qm9keVZhbHVlLmxlbmd0aCkpOwogICAgICAgICAgICAgICAgTmV3UG9zaXRpb24gPSBTdGFydFJhbmdlICsgRkFRQ29udGVudC5sZW5ndGg7CgogICAgICAgICAgICAgICAgLy8gSnVtcCB0byBuZXcgY3Vyc29yIHBvc2l0aW9uIChhZnRlciBpbnNlcnRlZCB0ZXh0KQogICAgICAgICAgICAgICAgaWYgKFBhcmVudEJvZHkuc2VsZWN0aW9uU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICBQYXJlbnRCb2R5LnNlbGVjdGlvblN0YXJ0ID0gTmV3UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgUGFyZW50Qm9keS5zZWxlY3Rpb25FbmQgPSBOZXdQb3NpdGlvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewogICAgICAgICAgICAgICAgICAgIFJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgUmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBOZXdQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgUmFuZ2Uuc2VsZWN0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2cnLCBwYXJlbnQuZG9jdW1lbnQpKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgYWxlcnQoJyRKU1RleHR7IlRoaXMgd2luZG93IG11c3QgYmUgY2FsbGVkIGZyb20gY29tcG9zZSB3aW5kb3cifScpOwogICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFNldHRpbmcgdG8gYWRkIEZBUSBpdGVtIHRleHQgb3Igbm90CiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFNldHRpbmcgdG8gYWRkIEZBUSBpdGVtIGxpbmsgb3Igbm90CiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqLwogICAgVGFyZ2V0TlMuU2V0VGV4dCA9IGZ1bmN0aW9uIChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKSB7CiAgICAgICAgdmFyIEZBUVRpdGxlID0gJCgnI0ZBUVRpdGxlJykudmFsKCksCiAgICAgICAgRkFRQ29udGVudCA9ICcnLAogICAgICAgIEZBUUhUTUxDb250ZW50ID0gJycsCiAgICAgICAgRkFRTGluazsKCiAgICAgICAgaWYgKCBJbnNlcnRUZXh0ID09PSAxICkgewogICAgICAgICAgICBGQVFDb250ZW50ID0gJCgnI0ZBUUJvZHknKS52YWwoKTsKICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSBGQVFDb250ZW50OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgRkFRQ29udGVudCA9ICcnOwogICAgICAgICAgICBGQVFIVE1MQ29udGVudCA9IEZBUUNvbnRlbnQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoSW5zZXJ0TGluayA9PT0gMSApIHsKICAgICAgICAgICAgRkFRTGluayA9ICQoJyNGQVFQdWJsaWNMaW5rJykudmFsKCk7CiAgICAgICAgICAgIEZBUUNvbnRlbnQgPSBGQVFDb250ZW50ICsgJ1xuJyArIEZBUUxpbms7CiAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ID0gRkFRSFRNTENvbnRlbnQgKyAnPGJyLz4nICsgJzxhIGhyZWY9IicgKyBGQVFMaW5rICsgJyI+JyArIEZBUVRpdGxlICsgJzwvYT4nOwogICAgICAgIH0KCiAgICAgICAgU2V0RGF0YSAoRkFRVGl0bGUsIEZBUUNvbnRlbnQsIEZBUUhUTUxDb250ZW50KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gU2V0dGluZyB0byBhZGQgRkFRIGl0ZW0gdGV4dCBvciBub3QKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gU2V0dGluZyB0byBhZGQgRkFRIGl0ZW0gbGluayBvciBub3QKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5TZXRGdWxsRkFRID0gZnVuY3Rpb24gKEluc2VydFRleHQsIEluc2VydExpbmspIHsKCiAgICAgICAgLy8gZ2V0IHRoZSBGQVEgcmljaHRleHQgYW5kIHRyaWdnZXIgYXR0YWNobWVudCBwcm9jZXNzaW5nCiAgICAgICAgcGFyZW50LkNvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgIHBhcmVudC5Db3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJyksCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FnZW50RkFRUmljaFRleHQnLAogICAgICAgICAgICAgICAgSXRlbUlEOiAkKCdpbnB1dFtuYW1lPUZBUUlEXScpLnZhbCgpLAogICAgICAgICAgICAgICAgRm9ybUlEOiBwYXJlbnQuJCgnaW5wdXRbbmFtZT1Gb3JtSURdJykudmFsKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICB2YXIgRkFRVGl0bGUgPSBSZXNwb25zZS5GQVFUaXRsZSwKICAgICAgICAgICAgICAgICAgICBGQVFDb250ZW50ID0gJycsCiAgICAgICAgICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSAnJywKICAgICAgICAgICAgICAgICAgICBGQVFMaW5rOwoKICAgICAgICAgICAgICAgIGlmICggSW5zZXJ0VGV4dCA9PT0gMSApIHsKICAgICAgICAgICAgICAgICAgICBGQVFDb250ZW50ID0gUmVzcG9uc2UuRkFRQ29udGVudDsKICAgICAgICAgICAgICAgICAgICBGQVFIVE1MQ29udGVudCA9IFJlc3BvbnNlLkZBUUhUTUxDb250ZW50OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChJbnNlcnRMaW5rID09PSAxICkgewogICAgICAgICAgICAgICAgICAgIEZBUUxpbmsgPSAkKCcjRkFRUHVibGljTGluaycpLnZhbCgpOwogICAgICAgICAgICAgICAgICAgIEZBUUNvbnRlbnQgPSBGQVFDb250ZW50ICsgJ1xuJyArIEZBUUxpbms7CiAgICAgICAgICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSBGQVFIVE1MQ29udGVudCArICc8YnIvPjxici8+JyArICc8YSBocmVmPSInICsgRkFRTGluayArICciPicgKyBGQVFUaXRsZSArICc8L2E+JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBzeW5jIHRoZSBhdHRhY2htZW50IGxpc3Qgd2l0aCB0aGUgYXR0YWNobWVudHMgaW4gdGhlIFVwbG9hZENhY2hlCiAgICAgICAgICAgICAgICAvLyAxc3Q6IGRlbGV0ZSB0aGUgY3VycmVudCBhdHRhY2htZW50IGxpc3QKICAgICAgICAgICAgICAgICQoJyNGaWxlVXBsb2FkJywgcGFyZW50LmRvY3VtZW50KS5wYXJlbnQoKS5zaWJsaW5ncygnbGknKS5yZW1vdmUoKTsKCiAgICAgICAgICAgICAgICAvLyAybmQ6IGFkZCBhbGwgZmlsZXMgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHJldHVybmVkIGluIFJlc3BvbnNlCiAgICAgICAgICAgICAgICAkKFJlc3BvbnNlLlRpY2tldEF0dGFjaG1lbnRzKS5lYWNoKGZ1bmN0aW9uKGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI0ZpbGVVcGxvYWQnLCBwYXJlbnQuZG9jdW1lbnQpLmJlZm9yZSgKICAgICAgICAgICAgICAgICAgICAgICAgJzxsaT4nICsgdGhpcy5GaWxlbmFtZSArICcgKCcgKyB0aGlzLkZpbGVzaXplICsgJyk8YnV0dG9uIHR5cGU9InN1Ym1pdCIgaWQ9IkF0dGFjaG1lbnREZWxldGUnICsgdGhpcy5GaWxlSUQgKyAnIiBuYW1lPSJBdHRhY2htZW50RGVsZXRlJyArIHRoaXMuRmlsZUlEICsgJyIgdmFsdWU9IkRlbGV0ZSIgY2xhc3M9IlNwYWNpbmdMZWZ0Ij4nICsgUmVzcG9uc2UuTG9jYWxpemF0aW9uLkRlbGV0ZSArICc8L2J1dHRvbj48L2xpPicKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgU2V0RGF0YSAoRkFRVGl0bGUsIEZBUUNvbnRlbnQsIEZBUUhUTUxDb250ZW50KTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2pzb24nCiAgICAgICAgKTsKICAgIH07CiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkFnZW50LlRpY2tldENvbXBvc2UgfHwge30pKTsK
Ly8gLS0KLy8gRkFRLkN1c3RvbWVyLkZBUVpvb20uanMgLSBwcm92aWRlcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBGQVFab29tCi8vIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkN1c3RvbWVyID0gRkFRLkN1c3RvbWVyIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkN1c3RvbWVyLlRpY2tldFpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Wm9vbS4KICovCkZBUS5DdXN0b21lci5GQVFab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJElmcmFtZSBUaGUgaWZyYW1lIHdoaWNoIHNob3VsZCBiZSBhdXRvLWhlaWdodGVkCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewoKICAgICAgICAgICAgdmFyIE5ld0hlaWdodCA9ICRJZnJhbWUKICAgICAgICAgICAgICAgIC5jb250ZW50cygpCiAgICAgICAgICAgICAgICAuZmluZCgnaHRtbCcpCiAgICAgICAgICAgICAgICAuaGVpZ2h0KCk7CgogICAgICAgICAgICAvLyBJRTggbmVlZHMgc29tZSBtb3JlIHNwYWNlIGR1ZSB0byBpbmNvcnJlY3QgaGVpZ2h0IGNhbGN1bGF0aW9uCiAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiAwICYmICQuYnJvd3Nlci5tc2llICYmICQuYnJvd3Nlci52ZXJzaW9uID09PSAnOC4wJykgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gTmV3SGVpZ2h0ICsgNDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gaWYgdGhlIGlGcmFtZXMgaGVpZ2h0IGlzIDAsIHdlIGNvbGxhcHNlIHRoZSB3aWRnZXQKICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA9PT0gMCkgewogICAgICAgICAgICAgICAgJElmcmFtZS5jbG9zZXN0KCdsaS5DdXN0b21lcicpLnJlbW92ZUNsYXNzKCdWaXNpYmxlJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghTmV3SGVpZ2h0IHx8IGlzTmFOKE5ld0hlaWdodCkpIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHREZWZhdWx0Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoTmV3SGVpZ2h0ID4gQ29yZS5Db25maWcuR2V0KCdGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodE1heCcpKSB7CiAgICAgICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gQ29yZS5Db25maWcuR2V0KCdGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodE1heCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGUgY2xhc3Mgb2YgYSBGQVEgZmllbGQ6CiAgICAgKiAgICAgIHVzZXIgY2FsbHMgdGhpcyBmdW5jdGlvbiBieSBjbGlja2luZyBvbiB0aGUgZmllbGQgaGVhZCwgZmllbGQgZ2V0cyBoaWRkZW4gYnkgcmVtb3ZpbmcKICAgICAqICAgICAgdGhlIGNsYXNzICdWaXNpYmxlJy4gSWYgdGhlIGZpZWxkIGhlYWQgaXMgY2xpY2tlZCB3aGlsZSBpdCBkb2VzIG5vdCBjb250YWluIHRoZSBjbGFzcwogICAgICogICAgICAnVmlzaWJsZScsIHRoZSBmaWVsZCBnZXRzIHRoZSBjbGFzcyAnVmlzaWJsZScgYWdhaW4gYW5kIGl0IHdpbGwgYmUgc2hvd24uCiAgICAgKi8KICAgIGZ1bmN0aW9uIFRvZ2dsZU1lc3NhZ2UoJE1lc3NhZ2UpewogICAgICAgIGlmICgkTWVzc2FnZS5oYXNDbGFzcygnVmlzaWJsZScpKSB7CiAgICAgICAgICAgICRNZXNzYWdlLnJlbW92ZUNsYXNzKCdWaXNpYmxlJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTWVzc2FnZS5hZGRDbGFzcygnVmlzaWJsZScpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gYmluZHMgZnVuY3Rpb25zIHRvIHRoZSAnTWVzc2FnZUhlYWRlcicKICAgICAqICAgICAgdG8gdG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBNZXNzYWdlQm9keSBhbmQgdGhlIHJlcGx5IGZvcm0uCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbigpewogICAgICAgIHZhciAkTWVzc2FnZXMgPSAkKCcjTWVzc2FnZXMgPiBsaScpLAogICAgICAgICAgICAkVmlzaWJsZU1lc3NhZ2UgPSAkTWVzc2FnZXMubGFzdCgpLAogICAgICAgICAgICAkTWVzc2FnZUhlYWRlcnMgPSAkKCcuTWVzc2FnZUhlYWRlcicsICRNZXNzYWdlcyk7CgogICAgICAgICRNZXNzYWdlSGVhZGVycy5jbGljayhmdW5jdGlvbihFdmVudCl7CiAgICAgICAgICAgIFRvZ2dsZU1lc3NhZ2UoJCh0aGlzKS5wYXJlbnQoKSk7CiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShGQVEuQ3VzdG9tZXIuRkFRWm9vbSB8fCB7fSkpOwo=
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRGVmYXVsdCBTZXR0aW5ncwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gQXJ0aWNsZUxpc3QgRXhwYW5kaW5nCiAqLwoKLkZBUSAuT3ZlcnZpZXdDb250cm9sIGRpdiB7CiAgICBwYWRkaW5nOiAwcHg7Cn0KCi5GQVEgI092ZXJ2aWV3Qm9keSB7CiAgICBtYXJnaW46IDAgMCA4cHggMDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIExhcmdlIFNpZGViYXJDb2x1bW4KICovCgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4uTGFyZ2UgewogICAgd2lkdGg6IDM1MHB4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIuU2lkZWJhckxhc3QgPiAuU2lkZWJhckNvbHVtbi5NZWRpdW0gewogICAgd2lkdGg6IDI5MHB4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiBGQVFNaW5pTGlzdAogKi8KCnVsLkZBUU1pbmlMaXN0IHNwYW4gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDEwcHg7Cn0KCgovKioKICogQHN1YnNlY3Rpb24gQ2F0ZWdvcnkgcGF0aAogKi8KCi5GQVFQYXRoQ2F0ZWdvcnkgewogICAgbWFyZ2luLWJvdHRvbTogMTNweCAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWluLWhlaWdodDogMjVweDsKICAgIG1hcmdpbjogMCAtMXB4OwogICAgYmFja2dyb3VuZDogI2U1ZTZlNjsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsICNlNWU2ZTYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNmNGY1ZjUpLCBjb2xvci1zdG9wKDEwMCUsI2U1ZTZlNikpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAgI2Y0ZjVmNSAwJSwjZTVlNmU2IDEwMCUpOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2Y0ZjVmNSAwJSwjZTVlNmU2IDEwMCUpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgouRkFRUGF0aENhdGVnb3J5IGgzIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgcGFkZGluZy1sZWZ0OiA1cHg7CiAgICBwYWRkaW5nLXRvcDogN3B4Owp9CgouRkFRUGF0aENhdGVnb3J5IGgzID4gc3BhbjpsYXN0LWNoaWxkIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCmlmcmFtZS5UZXh0T3B0aW9uLkZBUSB7CiAgICB3aWR0aDogOTAwcHg7CiAgICBtaW4taGVpZ2h0OiA2MDBweDsKfQoKaWZyYW1lLkZBUUZpZWxkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgZnJhbWVib3JkZXI6IDA7Cn0KCmZpZWxkc2V0LlRhYmxlU21hbGwgPiBkaXYuRmllbGQgewogICAgbWFyZ2luLWxlZnQ6IDI0JSAhaW1wb3J0YW50Owp9CgpmaWVsZHNldC5UYWJsZVNtYWxsID4gbGFiZWwgewogICAgd2lkdGg6IDI0JSAhaW1wb3J0YW50Owp9CgpmaWVsZHNldC5UYWJsZVNtYWxsID4gZGl2LkZBUURpdmlkZXIgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDQ0NDQ0M7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKfQoK
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRkFRRGV0YWlscwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgoKLyoqCiAqIEBzdWJzZWN0aW9uICBBcnRpY2xlIHRhYmxlIGJvZHkKICovCgouQXJ0aWNsZUZBUUhlYWRlciB7CiAgICBtYXJnaW46IDAgOHB4OwogICAgcGFkZGluZzogMnB4IDAgN3B4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgY29sb3I6IEdyYXk7Cn0KCi5BcnRpY2xlRkFRQ29udGVudCB7CiAgICBwYWRkaW5nOiAxMXB4IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS4zOwp9CgouQXJ0aWNsZUZBUUNvbnRlbnQgLkZBUVZvdGVGb3JtIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLkFydGljbGVGQVFDb250ZW50IHAuQ2VudGVyIHsKICAgIHBhZGRpbmctYm90dG9tOiAxMHB4OwogICAgbWFyZ2luOiAwcHggNTBweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjOwp9CgouQXJ0aWNsZUZBUUNvbnRlbnQgLkZBUVZvdGVGb3JtIC5DYWxsRm9yQWN0aW9uIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luOiAxMHB4IGF1dG8gMHB4IGF1dG87Cn0KCi5BcnRpY2xlRkFRQ29udGVudCAuRkFRVm90ZUZvcm0gLkNhbGxGb3JBY3Rpb24uSGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5GQVFTdGF0ZU5hbWUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDEwcHg7CiAgICB0b3A6IDdweDsKICAgIGZvbnQtc2l6ZTogODAlOwogICAgZm9udC1zdHlsZTogaXRhbGljOwp9CgpmaWVsZHNldCAuRkFRU3RhdGVOYW1lIHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7Cn0KCi5SYXRlQnV0dG9ucyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5SYXRlQnV0dG9ucyA+IGxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5SYXRlQnV0dG9ucyA+IGxpOmZpcnN0LWNoaWxkLAouUmF0ZUJ1dHRvbnMgPiBsaTpsYXN0LWNoaWxkIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouUmF0ZUJ1dHRvbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGhlaWdodDogMzBweDsKICAgIHdpZHRoOiAyNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBjb2xvcjogIzAwMDAwMDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlJhdGVCdXR0b24gaSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIHdpZHRoOiAxMDAlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6ICM5OTk7Cn0KCi5SYXRlQnV0dG9uIGkuaWNvbi1zdGFyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5SYXRlQnV0dG9uLlJhdGVDaGVja2VkIGkuaWNvbi1zdGFyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29sb3I6ICNFOTdEMzQ7Cn0KCi5SYXRlQnV0dG9uLlJhdGVDaGVja2VkIGkuaWNvbi1zdGFyLWVtcHR5IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5SYXRlQnV0dG9uOmhvdmVyIGkuaWNvbi1zdGFyLWVtcHR5IHsKICAgIGNvbG9yOiAjMDAwOwp9CgouUmF0ZVN0YXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmctbGVmdDogMXB4OwogICAgZm9udC1zaXplOiAxMHB4Owp9CgouUmF0ZVN0YXJUZXh0IHsKICAgIHRleHQtaW5kZW50OjVweDsKfQoKLlJhdGVMYWJlbEJlZm9yZSwKLlJhdGVMYWJlbEFmdGVyIHsKICAgIGNvbG9yOiAjMzMzOwogICAgcGFkZGluZy10b3A6IDVweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouUmF0ZUxhYmVsQmVmb3JlIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1yaWdodDogNnB4Owp9CgouUmF0ZUxhYmVsQWZ0ZXIgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDVweDsKfQoKLlpvb21TbWFsbEJ1dHRvbnsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4Owp9Cgp9Cg==
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgV2lkZ2V0cwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgoKLyoqCiAqIEBzdWJzZWN0aW9uICBXaWRnZXRCb3gKICovCgouV2lkZ2V0Qm94ID4gLkZBUUNvbnRlbnQgewogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsICNmZmZmZmYgNTAlLCAjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZWJlYmViKSwgY29sb3Itc3RvcCg1MCUsI2ZmZmZmZiksIGNvbG9yLXN0b3AoMTAwJSwjZmZmZmZmKSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgbWluLWhlaWdodDogMTAwcHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0M2QzVDNDsKfQoKLldpZGdldEJveCA+IC5GQVFDb250ZW50U21hbGwgewogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsICNmZmZmZmYgNTAlLCAjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZWJlYmViKSwgY29sb3Itc3RvcCg1MCUsI2ZmZmZmZiksIGNvbG9yLXN0b3AoMTAwJSwjZmZmZmZmKSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgbWluLWhlaWdodDogMTAwcHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0M2QzVDNDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQzZDNUM0Owp9CgouV2lkZ2V0Qm94ID4gLkZBUVZvdGluZyB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwgI2ZmZmZmZiA1MCUsICNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNlYmViZWIpLCBjb2xvci1zdG9wKDUwJSwjZmZmZmZmKSwgY29sb3Itc3RvcCgxMDAlLCNmZmZmZmYpKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBtaW4taGVpZ2h0OiAxMDBweDsKfQoKfQo=
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRGVmYXVsdCBTZXR0aW5ncwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gIExheW91dEZpeGVkU2lkZWJhcgogKi8KCi5MYXlvdXRGaXhlZFNpZGViYXIgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIgPiAuQ29udGVudENvbHVtbiB7CiAgICAvKioKICAgICAqIEBub3RlICAgIGZvcmNlIG93biBCbG9jayBGb3JtYXR0aW5nIENvbnRleHQgZm9yIG5lc3RlZCBmbG9hdHMKICAgICAqLwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLkxheW91dEZpeGVkU2lkZWJhciA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKfQoKLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyTGFzdCA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIHdpZHRoOiAyNzBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouUlRMIC5MYXlvdXRGaXhlZFNpZGViYXIuU2lkZWJhckxhc3QgPiAuU2lkZWJhckNvbHVtbiB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJGaXJzdCA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIHdpZHRoOiAyNzBweDsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCi5SVEwgLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyRmlyc3QgPiAuU2lkZWJhckNvbHVtbiB7CiAgICBmbG9hdDogcmlnaHQ7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIExhcmdlIFNpZGViYXJDb2x1bW4KICovCgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4uTGFyZ2UgewogICAgd2lkdGg6IDMwMHB4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgQ3VzdG9tZXIgV2lkZ2V0U2ltcGxlCiAqLwoKLldpZGdldFNpbXBsZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjRTlFOUU5OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGRkY7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzcHggI0VFRTsKICAgIC1tb3otYm94LXNoYWRvdzogMCAwIDNweCAjRUVFOwogICAgYm94LXNoYWRvdzogMCAwIDJweCAjRUVFOwogICAgcGFkZGluZzogMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiBhdXRvOwogICAgei1pbmRleDogMTA7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgouV2lkZ2V0U2ltcGxlIC5IZWFkZXIgewogICAgcGFkZGluZzogNXB4IDhweCAzcHg7CiAgICBjb2xvcjogIzIyMjsKICAgIGJhY2tncm91bmQ6ICNlNWU2ZTY7CiAgICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZjRmNWY1IDAlLCAjZTVlNmU2IDEwMCUpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZjRmNWY1KSwgY29sb3Itc3RvcCgxMDAlLCNlNWU2ZTYpKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZjRmNWY1IDAlLCNlNWU2ZTYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICAjZjRmNWY1IDAlLCNlNWU2ZTYgMTAwJSk7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0Q2RDZENjsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGRkY7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5XaWRnZXRTaW1wbGUgLkhlYWRlciBoMyB7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGZsb2F0OiBsZWZ0Owp9CgouUlRMIC5XaWRnZXRTaW1wbGUgLkhlYWRlciBoMyB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5XaWRnZXRTaW1wbGUgLkhlYWRlciBoMyBzcGFuIHsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cn0KCi5XaWRnZXRTaW1wbGUgLkNvbnRlbnQgewogICAgaGVpZ2h0OiBhdXRvOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmc6IDEzcHggOHB4OwogICAgYmFja2dyb3VuZDogI0ZGRjsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRTlFOUU5Owp9CgouV2lkZ2V0U2ltcGxlIC5QYWdpbmF0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTFweDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIEZBUUhlYWRlcgogKi8KCi5GQVFIZWFkZXIgaDIgewogICAgbWFyZ2luOiAzcHggMCAwOwogICAgZm9udC1zaXplOiAyNHB4OwogICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBmbG9hdDogbGVmdDsKfQouUlRMIC5GQVFIZWFkZXIgaDIgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgovKioKICogQHN1YnNlY3Rpb24gT3ZlcnZpZXcKICovCgouT3ZlcnZpZXcgdGhlYWQgewogICAgYmFja2dyb3VuZDogI2VlZWVlZTsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNlZWVlZWUgMCUsICNlMGUwZTAgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNlZWVlZWUpLCBjb2xvci1zdG9wKDEwMCUsI2UwZTBlMCkpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAgI2VlZWVlZSAwJSwjZTBlMGUwIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNlZWVlZWUgMCUsI2UwZTBlMCAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2VlZWVlZSAwJSwjZTBlMGUwIDEwMCUpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgICNlZWVlZWUgMCUsI2UwZTBlMCAxMDAlKTsKICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsKfQoKLk92ZXJ2aWV3IHRoZWFkIHRoIHsKICAgIGNvbG9yOiAjNEI0QjRCOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0ZGRjsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQkJCOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0NDQzsKICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgovKioKICogQHN1YnNlY3Rpb24gRkFRTWluaUxpc3QKICovCgp1bC5GQVFNaW5pTGlzdCBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxMHB4Owp9CgovKioKICogQHN1YnNlY3Rpb24gQ2F0ZWdvcnkgcGF0aAogKi8KLkZBUVBhdGhDYXRlZ29yeSB7CiAgICBwYWRkaW5nOiA0cHggOHB4IDRweDsKICAgIGNvbG9yOiAjNkE2QTZBOwogICAgYmFja2dyb3VuZDogI2U1ZTZlNjsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsICNlNWU2ZTYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNmNGY1ZjUpLCBjb2xvci1zdG9wKDEwMCUsI2U1ZTZlNikpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAgI2Y0ZjVmNSAwJSwjZTVlNmU2IDEwMCUpOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2Y0ZjVmNSAwJSwjZTVlNmU2IDEwMCUpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgICNmNGY1ZjUgMCUsI2U1ZTZlNiAxMDAlKTsKICAgIC1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6IG5vbmU7CiAgICAtbW96LWJvcmRlci1sZWZ0LWNvbG9yczogbm9uZTsKICAgIC1tb3otYm9yZGVyLXJpZ2h0LWNvbG9yczogbm9uZTsKICAgIC1tb3otYm9yZGVyLXRvcC1jb2xvcnM6IG5vbmU7CiAgICBib3JkZXItY29sb3I6ICNFOUU5RTkgI0U5RTlFOSAjREREREREOwogICAgYm9yZGVyLWltYWdlOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogNXB4IDVweCA1cHggNXB4OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci13aWR0aDogMXB4OwogICAgYm94LXNoYWRvdzogMCAwIDJweCAjRUVFRUVFOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCi5GQVFQYXRoQ2F0ZWdvcnkuRkFRWm9vbSB7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKfQoKLkZBUVBhdGhDYXRlZ29yeSBoMyB7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKaWZyYW1lLkZBUUZpZWxkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgYm9yZGVyOiAwcHg7CiAgICBtYXJnaW46IDdweDsKfQoKfQoKCg==
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRkFRRGV0YWlscwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgouQXJ0aWNsZUZBUUNvbnRlbnQgewogICAgcGFkZGluZzogMTFweCAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzsKfQoKLlJhdGVCdXR0b24gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICB3aWR0aDogMjVweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiBsZWZ0OwogICAgY29sb3I6ICMwMDAwMDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5SVEwgLlJhdGVCdXR0b24gewogICAgZmxvYXQ6IHJpZ2h0Owp9CgouUmF0ZUJ1dHRvbiBpIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgd2lkdGg6IDEwMCU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogIzk5OTsKfQoKLlJhdGVCdXR0b24gaS5pY29uLXN0YXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLlJhdGVCdXR0b24uUmF0ZUNoZWNrZWQgaS5pY29uLXN0YXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBjb2xvcjogI0U5N0QzNDsKfQoKLlJhdGVCdXR0b24uUmF0ZUNoZWNrZWQgaS5pY29uLXN0YXItZW1wdHkgewogICAgZGlzcGxheTogbm9uZTsKfQoKLlJhdGVCdXR0b246aG92ZXIgaS5pY29uLXN0YXItZW1wdHkgewogICAgY29sb3I6ICMwMDA7Cn0KCi5SYXRlU3RhciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGhlaWdodDogMTZweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1sZWZ0OiAxcHg7CiAgICBmb250LXNpemU6IDEwcHg7Cn0KCi5SVEwgLlJhdGVTdGFyIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLlJhdGVTdGFyVGV4dCB7CiAgICBtYXJnaW4tbGVmdDogNnB4Owp9CgouUlRMIC5SYXRlU3RhclRleHQgewogICAgbWFyZ2luLWxlZnQ6IDBweDsKICAgIG1hcmdpbi1yaWdodDogNnB4Owp9CgouUmF0ZUxhYmVsQmVmb3JlIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgY29sb3I6IEdyYXk7Cn0KCi5SVEwgLlJhdGVMYWJlbEJlZm9yZSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5SYXRlTGFiZWxBZnRlciB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDI1cHg7CiAgICBjb2xvcjogR3JheTsKfQoKLlJUTCAuUmF0ZUxhYmVsQWZ0ZXIgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi1sZWZ0OiA2NXB4Owp9CgouUmF0aW5nTGFiZWwgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7Cn0KCi5SVEwgLlJhdGluZ0xhYmVsIHsKICAgIGZsb2F0OiByaWdodDsKICAgIHBhZGRpbmctbGVmdDogMnB4Cn0KCi5TcGFjaW5nVG9wIHsKICAgIG1hcmdpbi10b3A6IDEzcHg7Cn0KCi5TcGFjaW5nVG9wTGFyZ2UgewogICAgbWFyZ2luLXRvcDogMjZweDsKfQoKLlJUTCAuVm90aW5nQ29udGFpbmVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlZvdGluZ1F1ZXN0aW9uIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OjEwcHg7CiAgICBjb2xvcjogIzAwMDAwMDsKfQoKLlZvdGluZ0JveCB7CiAgICBtaW4td2lkdGg6IDIwcGM7CiAgICBtYXJnaW46IDAgMzBweCAyMXB4OwogICAgY29sb3I6ICM2QTZBNkE7CiAgICBiYWNrZ3JvdW5kOiAjRjBGMEYwOwogICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjRjlGOUY5LCAjRjBGMEYwKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oI0Y5RjlGOSksIHRvKCNGMEYwRjApKTsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0Q2RDZENjsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNENkQ2RDY7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNXB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDVweDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0Q2RDZENjsKfQoKLlZvdGluZ0JveCA+ICNNZXNzZW5nZXIgewogICAgaGVpZ2h0OiBhdXRvOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNFRUU7Cn0KCi5SU1NJY29uIHsKICAgIGZsb2F0OiByaWdodDsKICAgIGhlaWdodDogMTZweDsKICAgIHdpZHRoOiAyOHB4Owp9CgouRG93bmxvYWRBdHRhY2htZW50IGEsCi5LZXl3b3JkIGEgewogICAgY29sb3I6ICNGRjk5MjI7Cn0KCi5Eb3dubG9hZEF0dGFjaG1lbnQgYTpob3ZlciwKLiBLZXl3b3JkIGE6aG92ZXIgewogICAgY29sb3I6ICNGRjc3MjI7Cn0KCi5Wb3RpbmdBY3Rpb25Sb3cgewogICAgaGVpZ2h0OiAyM3B4Owp9Cn0K
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgV2lkZ2V0cwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgoKLyoqCiAqIEBzdWJzZWN0aW9uICBXaWRnZXRCb3gKICovCgouQ2FsbEZvckFjdGlvbiB7CiAgICBwYWRkaW5nOiAwOwogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsICNmZmZmZmYgNTAlLCAjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZWJlYmViKSwgY29sb3Itc3RvcCg1MCUsI2ZmZmZmZiksIGNvbG9yLXN0b3AoMTAwJSwjZmZmZmZmKSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjODg4OwogICAgYm94LXNoYWRvdzogMCAxcHggMCAjRTZFNkU2OwogICAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAwICNFNkU2RTY7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDAgI0U2RTZFNjsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi8qKgogKiBAY3NzLWZvciAgICAgRmlyZWZveAogKiBAbm90ZSAgICAgICAgYnVnOiBidXR0b24gY29udGFpbmluZyBhbiBlbGVtZW50IGhhcyBhbiBoaWRkZW4gcGFkZGluZwogKi8KCi5DYWxsRm9yQWN0aW9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgIGJvcmRlcjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5DYWxsRm9yQWN0aW9uOmhvdmVyIHsKICAgIGNvbG9yOiAjMDAwOwogICAgYm9yZGVyLWNvbG9yOiAjNjk2OTY5Owp9CgouQ2FsbEZvckFjdGlvbiBzcGFuIHsKICAgIGhlaWdodDogMTJweDsKICAgIHBhZGRpbmc6IDNweCA3cHggNnB4OwogICAgbGluZS1oZWlnaHQ6IDE0cHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgY29sb3I6ICMzMzM7CiAgICBmb250OiBib2xkIDExcHgvMTRweCAiSGVsdmV0aWNhIE5ldWUiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwogICAgYm9yZGVyOiAxcHggc29saWQgI0ZGRjsKICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYmFja2dyb3VuZDogI2RlZGVkZTsKICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsICNkZWRlZGUgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNmZmZmZmYpLCBjb2xvci1zdG9wKDEwMCUsI2RlZGVkZSkpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ZmZmZmZiAwJSwjZGVkZWRlIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsI2RlZGVkZSAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ZmZmZmZiAwJSwjZGVkZWRlIDEwMCUpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgICNmZmZmZmYgMCUsI2RlZGVkZSAxMDAlKTsKCn0KCi5DYWxsRm9yQWN0aW9uOmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjREREOwogICAgLW1vei1ib3gtc2hhZG93OiBub25lOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLkNhbGxGb3JBY3Rpb246YWN0aXZlIHNwYW4gewogICAgcGFkZGluZzogNHB4IDdweCA1cHg7CiAgICBib3JkZXItY29sb3I6ICNEREQ7CiAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0RERDsKICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCAjZmZmZmZmIDUwJSwgI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCUsI2ViZWJlYiksIGNvbG9yLXN0b3AoNTAlLCNmZmZmZmYpLCBjb2xvci1zdG9wKDEwMCUsI2ZmZmZmZikpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwjZmZmZmZmIDUwJSwjZmZmZmZmIDEwMCUpOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKCn0KCi5TZWFyY2hCb3ggewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouU2VhcmNoQm94IGlucHV0W3R5cGU9J3RleHQnXSB7CiAgICBoZWlnaHQ6IDE1cHg7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiA0cHggNXB4OwogICAgZm9udDogbm9ybWFsIDEycHgvMTVweCAiSGVsdmV0aWNhIE5ldWUiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwogICAgYm9yZGVyLWNvbG9yOiAjOTk5OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHggMCAwIDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXJhZGl1czogM3B4IDAgMCAzcHg7CiAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogICAgd2lkdGg6IDEwcGM7Cn0KCi5SVEwgLlNlYXJjaEJveCBpbnB1dFt0eXBlPSd0ZXh0J117CiAgICBib3JkZXItbGVmdDogbm9uZTsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM5OTk7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDAgM3B4IDNweCAwOwogICAgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7CiAgICB3aWR0aDogMTBwYzsKfQoKLlNlYXJjaEJveCBpbnB1dDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM2NjY7CiAgICBib3JkZXItcmlnaHQ6IG5vbmU7Cn0KLlJUTCAuU2VhcmNoQm94IGlucHV0OmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogIzY2NjsKICAgIGJvcmRlci1sZWZ0OiBub25lOwp9CgouU2VhcmNoQm94IGJ1dHRvbiB7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBtYXJnaW46IDAgMCAwIC00cHg7CiAgICBwYWRkaW5nOiAzcHggM3B4IDRweDsKICAgIGNvbG9yOiAjMzMzOwogICAgZm9udDogYm9sZCAxMXB4LzE0cHggIkhlbHZldGljYSBOZXVlIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsKICAgIGJhY2tncm91bmQ6ICNkZWRlZGU7CiAgICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZmZmZmZmIDAlLCAjZGVkZWRlIDEwMCUpOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZmZmZmZmKSwgY29sb3Itc3RvcCgxMDAlLCNkZWRlZGUpKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsI2RlZGVkZSAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZmZmZmZmIDAlLCNkZWRlZGUgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsI2RlZGVkZSAxMDAlKTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICAjZmZmZmZmIDAlLCNkZWRlZGUgMTAwJSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjODg4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDNweCAzcHggMDsKICAgIC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsKICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1yYWRpdXM6IDAgM3B4IDNweCAwOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZGRjsKICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKLlJUTCAuU2VhcmNoQm94IGJ1dHRvbiB7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBtYXJnaW46IDAgLTRweCAwIDA7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDNweCAwIDAgM3B4OwogICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7CiAgICAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4OwogICAgYm9yZGVyLXJhZGl1czogM3B4IDAgMCAzcHg7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGOwogICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzg4ODsKfQoKLlNlYXJjaEJveCBidXR0b246aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiAjNjk2OTY5OwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgouU2VhcmNoQm94IGJ1dHRvbjphY3RpdmUgewogICAgcGFkZGluZzogNHB4IDNweCAzcHg7CiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ViZWJlYiAwJSwgI2ZmZmZmZiA1MCUsICNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCNlYmViZWIpLCBjb2xvci1zdG9wKDUwJSwjZmZmZmZmKSwgY29sb3Itc3RvcCgxMDAlLCNmZmZmZmYpKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgICNlYmViZWIgMCUsI2ZmZmZmZiA1MCUsI2ZmZmZmZiAxMDAlKTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICAjZWJlYmViIDAlLCNmZmZmZmYgNTAlLCNmZmZmZmYgMTAwJSk7CiAgICBvdXRsaW5lOiBub25lOwp9Cgp9Cg==
LyoqCiAqIEBwcm9qZWN0ICAgICBGQVEgKGh0dHA6Ly93d3cub3Rycy5vcmcpIC0gQ3VzdG9tZXIgRnJvbnRlbmQKICogQGNvcHlyaWdodCAgIE9UUlMgQUcKICogQGxpY2Vuc2UgICAgIEFHUEwgKGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dCkKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBwYWNrYWdlICAgICBGQVEgLSBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRkFRWm9vbQogKi8KCi8qKgogKiBAc2VjdGlvbiAgICAgSGVhZGVyCiAqLwoKLkZBUUhlYWRlciB7CiAgICB3aWR0aDogODAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLkZBUUhlYWRlciBoMiB7CiAgICBtYXJnaW46IDNweCAwIDA7CiAgICBmb250LXNpemU6IDI0cHg7CiAgICBsaW5lLWhlaWdodDogMjRweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZsb2F0OiBsZWZ0Owp9Ci5SVEwgLkZBUUhlYWRlciBoMiB7CiAgICBwYWRkaW5nOiAwIDM2cHggMCAwOwogICAgZmxvYXQ6IHJpZ2h0Owp9CgouRkFRSGVhZGVyIC5GQVFIb29rIHsKICAgIGNvbG9yOiAjNjY2OwogICAgZm9udC1zaXplOiAxMnB4Owp9CgojRkFRT3B0aW9ucyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMHB4OwogICAgdG9wOiA1cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgojRkFRT3B0aW9ucyBsaSB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7Cn0KCiNGQVFPcHRpb25zIC5QcmludCB7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTZweDsKICAgIG1hcmdpbjogMCAwIDAgMnB4OwogICAgbGluZS1oZWlnaHQ6IDE2cHg7CiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL3ByaW50ZXIucG5nKSBuby1yZXBlYXQ7CiAgICB0ZXh0LWluZGVudDogLTk5OTlweDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouUlRMICNGQVFPcHRpb25zIC5QcmludCB7CiAgICBtYXJnaW46IC0ycHggNHB4IDAgMDsKfQoKbGkuS2V5d29yZHNDb250YWluZXIgewogICAgbWFyZ2luLXRvcDogNXB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgpkaXYuQXR0YWNobWVudHMgewogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLkF0dGFjaG1lbnRzIC5MYWJlbCB7CiAgICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltZy9wYXBlci1jbGlwLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgcmlnaHQgY2VudGVyIHRyYW5zcGFyZW50OwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4OwogICAgY29sb3I6ICNBQUFBQUE7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbjogMCAzcHg7CiAgICB3aWR0aDogNjVweDsKfQoKLlJUTCAuQXR0YWNobWVudHMgLkxhYmVsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQ7CiAgICB0ZXh0LWluZGVudDogLTk5OTlweDsKICAgIHRleHQtYWxpZ246cmlnaHQ7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5BdHRhY2htZW50cyBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouQXR0YWNobWVudHMgLkRvd25sb2FkQXR0YWNobWVudCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKfQoKfSAvKiBlbmQgQG1lZGlhICov
IyAtLQojIEZBUS5wbSAtIGNvZGUgdG8gZXhjZWN1dGUgZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSB2YXI6OnBhY2thZ2VzZXR1cDo6RkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6Q29uZmlnOwp1c2UgS2VybmVsOjpTeXN0ZW06OkNhY2hlOwp1c2UgS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZzsKdXNlIEtlcm5lbDo6U3lzdGVtOjpDU1Y7CnVzZSBLZXJuZWw6OlN5c3RlbTo6R3JvdXA7CnVzZSBLZXJuZWw6OlN5c3RlbTo6U3RhdHM7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VXNlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYWxpZDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Owp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCj1oZWFkMSBOQU1FCgpGQVEucG0gLSBjb2RlIHRvIGV4Y2VjdXRlIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgZnVuY3Rpb25zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpDb25maWc7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkxvZzsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6TWFpbjsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6VGltZTsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6REI7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OlhNTDsKICAgIHVzZSB2YXI6OnBhY2thZ2VzZXR1cDo6RkFROwoKICAgIG15ICRDb25maWdPYmplY3QgPSBLZXJuZWw6OkNvbmZpZy0+bmV3KCk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gS2VybmVsOjpTeXN0ZW06OkxvZy0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgKTsKICAgIG15ICRNYWluT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06Ok1haW4tPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBMb2dPYmplY3QgICAgPT4gJExvZ09iamVjdCwKICAgICk7CiAgICBteSAkVGltZU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpUaW1lLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICApOwogICAgbXkgJERCT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkRCLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgID0+ICRNYWluT2JqZWN0LAogICAgKTsKICAgIG15ICRYTUxPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6WE1MLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAgICAgREJPYmplY3QgICAgID0+ICREQk9iamVjdCwKICAgICAgICBNYWluT2JqZWN0ICAgPT4gJE1haW5PYmplY3QsCiAgICApOwogICAgbXkgJENvZGVPYmplY3QgPSB2YXI6OnBhY2thZ2VzZXR1cDo6RkFRLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgID0+ICRNYWluT2JqZWN0LAogICAgICAgIFRpbWVPYmplY3QgICA9PiAkVGltZU9iamVjdCwKICAgICAgICBEQk9iamVjdCAgICAgPT4gJERCT2JqZWN0LAogICAgICAgIFhNTE9iamVjdCAgICA9PiAkWE1MT2JqZWN0LAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KENvbmZpZ09iamVjdCBMb2dPYmplY3QgTWFpbk9iamVjdCBUaW1lT2JqZWN0IERCT2JqZWN0IFhNTE9iamVjdCBFbmNvZGVPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57JE9iamVjdH0gPSAkUGFyYW17JE9iamVjdH0gfHwgZGllICJHb3Qgbm8gJE9iamVjdCEiOwogICAgfQoKICAgICMgY3JlYXRlIG5lZWRlZCBzeXNjb25maWcgb2JqZWN0CiAgICAkU2VsZi0+e1N5c0NvbmZpZ09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyByZWJ1aWxkIFpaWiogZmlsZXMKICAgICRTZWxmLT57U3lzQ29uZmlnT2JqZWN0fS0+V3JpdGVEZWZhdWx0KCk7CgogICAgIyBkZWZpbmUgdGhlIFpaWiBmaWxlcwogICAgbXkgQFpaWkZpbGVzID0gKAogICAgICAgICdaWlpBQXV0by5wbScsCiAgICAgICAgJ1paWkF1dG8ucG0nLAogICAgKTsKCiAgICAjIHJlbG9hZCB0aGUgWlpaIGZpbGVzIChtb2RfcGVybCB3b3JrYXJvdW5kKQogICAgZm9yIG15ICRaWlpGaWxlIChAWlpaRmlsZXMpIHsKCiAgICAgICAgUFJFRklYOgogICAgICAgIGZvciBteSAkUHJlZml4IChASU5DKSB7CiAgICAgICAgICAgIG15ICRGaWxlID0gJFByZWZpeCAuICcvS2VybmVsL0NvbmZpZy9GaWxlcy8nIC4gJFpaWkZpbGU7CiAgICAgICAgICAgIG5leHQgUFJFRklYIGlmICEtZiAkRmlsZTsKICAgICAgICAgICAgZG8gJEZpbGU7CiAgICAgICAgICAgIGxhc3QgUFJFRklYOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntDb25maWdPYmplY3R9ID0gS2VybmVsOjpDb25maWctPm5ldygpOwogICAgJFNlbGYtPntDU1ZPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkNTVi0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntHcm91cE9iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06Okdyb3VwLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e1VzZXJPYmplY3R9ICAgPSBLZXJuZWw6OlN5c3RlbTo6VXNlci0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntWYWxpZE9iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e0xpbmtPYmplY3R9ICAgPSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdC0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntDYWNoZU9iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06OkNhY2hlLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e1N0YXRzT2JqZWN0fSAgPSBLZXJuZWw6OlN5c3RlbTo6U3RhdHMtPm5ldygKICAgICAgICAleyRTZWxmfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBkZWZpbmUgZmlsZSBwcmVmaXgKICAgICRTZWxmLT57RmlsZVByZWZpeH0gPSAnRkFRJzsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIENvZGVJbnN0YWxsKCkKCnJ1biB0aGUgY29kZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVJbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGluc2VydCB0aGUgZmFxIHN0YXRlcwogICAgJFNlbGYtPl9JbnNlcnRGQVFTdGF0ZXMoKTsKCiAgICAjIGFkZCB0aGUgZ3JvdXAgZmFxCiAgICAkU2VsZi0+X0dyb3VwQWRkKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmYXEnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdmYXEgZGF0YWJhc2UgdXNlcnMnLAogICAgKTsKCiAgICAjIGFkZCB0aGUgZ3JvdXAgZmFxX2FkbWluCiAgICAkU2VsZi0+X0dyb3VwQWRkKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmYXFfYWRtaW4nLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdmYXEgYWRtaW4gdXNlcnMnLAogICAgKTsKCiAgICAjIGFkZCB0aGUgZ3JvdXAgZmFxX2FwcHJvdmFsCiAgICAkU2VsZi0+X0dyb3VwQWRkKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmYXFfYXBwcm92YWwnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdmYXEgYXBwcm92YWwgdXNlcnMnLAogICAgKTsKCiAgICAjIGFkZCB0aGUgZmFxIGdyb3VwcyB0byB0aGUgY2F0ZWdvcnkgJ01pc2MnCiAgICAkU2VsZi0+X0NhdGVnb3J5R3JvdXBTZXQoCiAgICAgICAgQ2F0ZWdvcnkgPT4gJ01pc2MnLAogICAgICAgIEdyb3VwcyAgID0+IFsgJ2ZhcScsICdmYXFfYWRtaW4nLCAnZmFxX2FwcHJvdmFsJyBdLAogICAgKTsKCiAgICAjIGNyZWF0ZSBhZGl0aW9uYWwgRkFRIGxhbmd1YWdlcwogICAgJFNlbGYtPl9DcmVhdGVBZGl0aW9uYWxGQVFMYW5ndWFnZXMoKTsKCiAgICAjIGluc3RhbGwgc3RhdHMKICAgICRTZWxmLT57U3RhdHNPYmplY3R9LT5TdGF0c0luc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e0ZpbGVQcmVmaXh9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVJlaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgcmVpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVSZWluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlUmVpbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpbnNlcnQgdGhlIGZhcSBzdGF0ZXMKICAgICRTZWxmLT5fSW5zZXJ0RkFRU3RhdGVzKCk7CgogICAgIyBhZGQgdGhlIGdyb3VwIGZhcQogICAgJFNlbGYtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAnZmFxJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnZmFxIGRhdGFiYXNlIHVzZXJzJywKICAgICk7CgogICAgIyBhZGQgdGhlIGdyb3VwIGZhcV9hZG1pbgogICAgJFNlbGYtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAnZmFxX2FkbWluJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnZmFxIGFkbWluIHVzZXJzJywKICAgICk7CgogICAgIyBhZGQgdGhlIGdyb3VwIGZhcV9hcHByb3ZhbAogICAgJFNlbGYtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAnZmFxX2FwcHJvdmFsJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnZmFxIGFwcHJvdmFsIHVzZXJzJywKICAgICk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkU2VsZi0+e1N0YXRzT2JqZWN0fS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICk7CgogICAgIyBjcmVhdGUgYWRpdGlvbmFsIEZBUSBsYW5ndWFnZXMKICAgICRTZWxmLT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGluc3RhbGwgc3RhdHMKICAgICRTZWxmLT57U3RhdHNPYmplY3R9LT5TdGF0c0luc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e0ZpbGVQcmVmaXh9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBhZGl0aW9uYWwgRkFRIGxhbmd1YWdlcwogICAgJFNlbGYtPl9DcmVhdGVBZGl0aW9uYWxGQVFMYW5ndWFnZXMoKTsKCiAgICAjIGRlbGV0ZSB0aGUgRkFRIGNhY2hlICh0byBhdm9pZCBvbGQgZGF0YSBmcm9tIHByZXZpb3VzIEZBUSBtb2R1bGVzKQogICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlU3BlY2lhbCgpCgpydW4gc3BlY2lhbCBjb2RlIHVwZ3JhZGUgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVTcGVjaWFsKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVTcGVjaWFsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjb252ZXJ0IFxuIHRvIDxicj4gZm9yIGV4aXN0aW5nIGFydGljbGVzCiAgICAkU2VsZi0+X0NvbnZlcnROZXdsaW5lcygpOwoKICAgICMgc3RhcnQgbm9ybWFsIGNvZGUgdXBncmFkZQogICAgJFNlbGYtPkNvZGVVcGdyYWRlKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVbmluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHVuaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVW5pbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVVuaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVhY3RpdmF0ZSB0aGUgZ3JvdXAgZmFxCiAgICAkU2VsZi0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICdmYXEnLAogICAgKTsKCiAgICAjIGRlYWN0aXZhdGUgdGhlIGdyb3VwIGZhcV9hZG1pbgogICAgJFNlbGYtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAnZmFxX2FkbWluJywKICAgICk7CgogICAgIyBkZWFjdGl2YXRlIHRoZSBncm91cCBmYXFfYXBwcm92YWwKICAgICRTZWxmLT5fR3JvdXBEZWFjdGl2YXRlKAogICAgICAgIE5hbWUgPT4gJ2ZhcV9hcHByb3ZhbCcsCiAgICApOwoKICAgICMgdW5pbnN0YWxsIHN0YXRzCiAgICAkU2VsZi0+e1N0YXRzT2JqZWN0fS0+U3RhdHNVbmluc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e0ZpbGVQcmVmaXh9LAogICAgKTsKCiAgICAjIGRlbGV0ZSBhbGwgbGlua3Mgd2l0aCBGQVEgYXJ0aWNsZXMKICAgICRTZWxmLT5fTGlua0RlbGV0ZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfSW5zZXJ0RkFRU3RhdGVzKCkKCmluc2VydHMgbmVlZGVkIEZBUSBzdGF0ZXMgaW50byB0YWJsZQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0luc2VydEZBUVN0YXRlcygpOwoKPWN1dAoKc3ViIF9JbnNlcnRGQVFTdGF0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlZmluZSBmYXFfc3RhdGVfdHlwZXMgPT4gZmFxX3N0YXRlcwogICAgbXkgJVN0YXRlID0gKAogICAgICAgICdpbnRlcm5hbCcgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgICdleHRlcm5hbCcgPT4gJ2V4dGVybmFsIChjdXN0b21lciknLAogICAgICAgICdwdWJsaWMnICAgPT4gJ3B1YmxpYyAoYWxsKScsCiAgICApOwoKICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlU3RhdGUgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlCiAgICAgICAgbXkgJFN0YXRlVHlwZVJlZiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJFR5cGUsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoZSBzdGF0ZQogICAgICAgICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVBZGQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkU3RhdGV7JFR5cGV9LAogICAgICAgICAgICBUeXBlSUQgPT4gJFN0YXRlVHlwZVJlZi0+e1N0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfQ29udmVydE5ld2xpbmVzKCkKCmNvdmVydHMgYWxsIFxuIGludG8gPGJyPiBmb3IgRmllbGRzIDEtNiBpbiBhbGwgZXhpc3RpbmcgRkFRIGFydGljbGVzCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fQ29udmVydE5ld2xpbmVzKCk7Cgo9Y3V0CgpzdWIgX0NvbnZlcnROZXdsaW5lcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgb25seSBjb252ZXJ0IFxuIHRvIDxicj4gaWYgSFRNTCB2aWV3IGlzIGVuYWJsZWQKICAgIHJldHVybiBpZiAhJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICMgZ2V0IGFsbCBGQVEgSURzCiAgICBteSBARkFRSURzOwogICAgJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBmYXFfaXRlbSIsCiAgICApOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoKCBARkFRSURzLCAkUm93WzBdICk7CiAgICB9CgogICAgSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoQEZBUUlEcykgewoKICAgICAgICAjIGdldCBGQVEgZGF0YQogICAgICAgIG15ICVGQVEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBGQVEgYXJ0aWNsZSBmaWVsZHMgMS02CiAgICAgICAgbXkgJEZvdW5kTmV3bGluZTsKICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKHF3IChGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRGQVF7JEtleX07CgogICAgICAgICAgICAjIHJlcGxhY2UgXG4gd2l0aCA8YnI+CiAgICAgICAgICAgICRGQVF7JEtleX0gPX4gcy9cbi88YnJcLz5cbi9nOwoKICAgICAgICAgICAgJEZvdW5kTmV3bGluZSA9IDE7CiAgICAgICAgfQogICAgICAgIG5leHQgSUQgaWYgISRGb3VuZE5ld2xpbmU7CgogICAgICAgICMgdXBkYXRlIEZBUSBkYXRhCiAgICAgICAgJFNlbGYtPntGQVFPYmplY3R9LT5GQVFVcGRhdGUoCiAgICAgICAgICAgICVGQVEsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9Hcm91cEFkZCgpCgphZGQgYSBncm91cAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0dyb3VwQWRkKAogICAgICAgIE5hbWUgICAgICAgID0+ICd0aGUtZ3JvdXAtbmFtZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ1RoZSBncm91cCBkZXNjcmlwdGlvbi4nLAogICAgKTsKCj1jdXQKCnN1YiBfR3JvdXBBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBEZXNjcmlwdGlvbikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZExpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgIyBnZXQgbGlzdCBvZiBhbGwgZ3JvdXBzCiAgICBteSAlR3JvdXBMaXN0ID0gJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTGlzdCgpOwoKICAgICMgcmV2ZXJzZSB0aGUgZ3JvdXAgbGlzdCBmb3IgZWFzaWVyIGxvb2t1cAogICAgbXkgJUdyb3VwTGlzdFJldmVyc2UgPSByZXZlcnNlICVHcm91cExpc3Q7CgogICAgIyBjaGVjayBpZiBncm91cCBhbHJlYWR5IGV4aXN0cwogICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBMaXN0UmV2ZXJzZXsgJFBhcmFte05hbWV9IH07CgogICAgIyByZWFjdGl2YXRlIHRoZSBncm91cAogICAgaWYgKCRHcm91cElEKSB7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZ3JvdXAgZGF0YQogICAgICAgIG15ICVHcm91cERhdGEgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBHZXQoCiAgICAgICAgICAgIElEICAgICA9PiAkR3JvdXBJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyByZWFjdGl2YXRlIGdyb3VwCiAgICAgICAgJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwVXBkYXRlKAogICAgICAgICAgICAlR3JvdXBEYXRhLAogICAgICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgYWRkIHRoZSBncm91cAogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBBZGQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAgICBDb21tZW50ID0+ICRQYXJhbXtEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGxvb2t1cCB0aGUgbmV3IGdyb3VwIGlkCiAgICBteSAkTmV3R3JvdXBJRCA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCAgPT4gJFBhcmFte05hbWV9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGFkZCB1c2VyIHJvb3QgdG8gdGhlIGdyb3VwCiAgICAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBNZW1iZXJBZGQoCiAgICAgICAgR0lEICAgICAgICA9PiAkTmV3R3JvdXBJRCwKICAgICAgICBVSUQgICAgICAgID0+IDEsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7CiAgICAgICAgICAgIHJvICAgICAgICA9PiAxLAogICAgICAgICAgICBtb3ZlX2ludG8gPT4gMSwKICAgICAgICAgICAgY3JlYXRlICAgID0+IDEsCiAgICAgICAgICAgIG93bmVyICAgICA9PiAxLAogICAgICAgICAgICBwcmlvcml0eSAgPT4gMSwKICAgICAgICAgICAgcncgICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9Hcm91cERlYWN0aXZhdGUoKQoKZGVhY3RpdmF0ZSBhIGdyb3VwCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fR3JvdXBEZWFjdGl2YXRlKAogICAgICAgIE5hbWUgPT4gJ3RoZS1ncm91cC1uYW1lJywKICAgICk7Cgo9Y3V0CgpzdWIgX0dyb3VwRGVhY3RpdmF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIE5hbWUhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvb2t1cCBncm91cCBpZAogICAgbXkgJEdyb3VwSUQgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgPT4gJFBhcmFte05hbWV9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRHcm91cElEOwoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICMgZ2V0IGN1cnJlbnQgZ3JvdXAgZGF0YQogICAgbXkgJUdyb3VwRGF0YSA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cEdldCgKICAgICAgICBJRCAgICAgPT4gJEdyb3VwSUQsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgZGVhY3RpdmF0ZSBncm91cAogICAgJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwVXBkYXRlKAogICAgICAgICVHcm91cERhdGEsCiAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXtpbnZhbGlkfSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfTGlua0RlbGV0ZSgpCgpkZWxldGUgYWxsIGV4aXN0aW5nIGxpbmtzIHRvIGZhcSBhcnRpY2xlcwoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0xpbmtEZWxldGUoKTsKCj1jdXQKCnN1YiBfTGlua0RlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGFsbCBmYXEgYXJ0aWNsZSBpZHMKICAgIG15IEBGQVFJRHMgPSAoKTsKICAgICRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gZmFxX2l0ZW0nCiAgICApOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBGQVFJRHMsICRSb3dbMF07CiAgICB9CiAgICByZXR1cm4gaWYgIUBGQVFJRHM7CgogICAgIyBkZWxldGUgdGhlIGZhcSBhcnRpY2xlIGxpbmtzCiAgICBmb3IgbXkgJEZBUUlEIChARkFRSURzKSB7CiAgICAgICAgJFNlbGYtPntMaW5rT2JqZWN0fS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICAgPT4gJEZBUUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCkKCmNyZWF0ZXMgYWRpdGlvbmFsIEZBUSBsYW5ndWFnZXMgZm9yIHN5c3RlbSBkZWZhdWx0IGxhbmd1YWdlIGFuZCB1c2VyIGxhbmd1YWdlCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7Cgo9Y3V0CgpzdWIgX0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHN5c3RlbSBkZWZhdXQgbGFuZ3VhZ2UKICAgIG15ICRMYW5ndWFnZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdEZWZhdWx0TGFuZ3VhZ2UnKTsKICAgIGlmICgkTGFuZ3VhZ2UpIHsKCiAgICAgICAgIyBnZXQgY3VycmVudCBGQVEgbGFuZ3VhZ2VzCiAgICAgICAgbXkgJUN1cnJlbnRMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyB1c2UgcmV2ZXJzZSBoYXNoIGZvciBlYXN5IGxvb2t1cAogICAgICAgIG15ICVSZXZlcnNlTGFuZ3VhZ2VzID0gcmV2ZXJzZSAlQ3VycmVudExhbmd1YWdlczsKCiAgICAgICAgIyBjaGVjayBpZiBsYW5ndWFnZSBpcyBhbHJlYWR5IGRlZmluZWQKICAgICAgICBpZiAoICEkUmV2ZXJzZUxhbmd1YWdlc3skTGFuZ3VhZ2V9ICkgewoKICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlQWRkKAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRMYW5ndWFnZSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfQ2F0ZWdvcnlHcm91cFNldCgpCgpBZGRzIHRoZSBnaXZlbiBncm91cCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gY2F0ZWdvcnkuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fQ2F0ZWdvcnlHcm91cFNldCgKICAgICAgICBDYXRlZ29yeSA9PiAnTWlzYycsCiAgICAgICAgR3JvdXBzICAgPT4gWyAnZmFxJywgJ2ZhcS1hZG1pbicsICdmYXFfYXBwcm92YWwnIF0sCiAgICApOwoKPWN1dAoKc3ViIF9DYXRlZ29yeUdyb3VwU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5IEdyb3VwcykpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggcmVmICRQYXJhbXtHcm91cHN9IG5lICdBUlJBWScgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJHcm91cHMgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyBhbmQgdGhlaXIgaWRzCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGNyZWF0ZSBsb29rdXAgaGFzaCBmb3IgdGhlIGNhdG9yeSBpZAogICAgbXkgJUZBUTJJRCA9IHJldmVyc2UgJXskQ2F0ZWdvcnlUcmVlfTsKCiAgICAjIGxvb2t1cCB0aGUgY2F0ZWdvcnkgaWQKICAgIG15ICRDYXRlZ29yeUlEID0gJEZBUTJJRHsgJFBhcmFte0NhdGVnb3J5fSB9OwoKICAgICMgbG9va3VwIHRoZSBncm91cCBpZHMKICAgIG15IEBHcm91cElEczsKICAgIGZvciBteSAkR3JvdXAgKCBAeyAkUGFyYW17R3JvdXBzfSB9ICkgewogICAgICAgIG15ICRHcm91cElEID0gJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTG9va3VwKAogICAgICAgICAgICBHcm91cCA9PiAkR3JvdXAsCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBHcm91cElEcywgJEdyb3VwSUQ7CiAgICB9CgogICAgIyBzZXQgY2F0ZWdvcnkgZ3JvdXAKICAgICRTZWxmLT57RkFRT2JqZWN0fS0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIEdyb3VwSURzICAgPT4gXEBHcm91cElEcywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KCjxvdHJzX3N0YXRzPgo8Q2FjaGU+MDwvQ2FjaGU+CjxEZXNjcmlwdGlvbj5TaG93cyBhbiBvdmVydmlldyBvZiBGQVEgYXJ0aWNsZXMgaW4gYSBkZWZpbmVkIHRpbWUgcGVyaW9kIHNvcnRlZCBieSBhY2Nlc3MgbnVtYmVycy48L0Rlc2NyaXB0aW9uPgo8Rm9ybWF0PkNTVjwvRm9ybWF0Pgo8Rm9ybWF0PlByaW50PC9Gb3JtYXQ+CjxHcmFwaFNpemU+PC9HcmFwaFNpemU+CjxPYmplY3Q+PC9PYmplY3Q+CjxPYmplY3RNb2R1bGU+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpTdGF0aWM6OkZBUUFjY2VzczwvT2JqZWN0TW9kdWxlPgo8UGVybWlzc2lvbj5zdGF0czwvUGVybWlzc2lvbj4KPFN0YXRUeXBlPnN0YXRpYzwvU3RhdFR5cGU+CjxTdW1Db2w+MDwvU3VtQ29sPgo8U3VtUm93PjA8L1N1bVJvdz4KPFRpdGxlPkZBUSBhY2Nlc3Mgb3ZlcnZpZXc8L1RpdGxlPgo8VmFsaWQ+MTwvVmFsaWQ+Cjwvb3Ryc19zdGF0cz4K
IyAtLQojIEtlcm5lbC9HZW5lcmljSW50ZXJmYWNlL09wZXJhdGlvbi9GQVEvUHVibGljQ2F0ZWdvcnlMaXN0LnBtIC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljQ2F0ZWdvcnlMaXN0IG9wZXJhdGlvbiBiYWNrZW5kCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNDYXRlZ29yeUxpc3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb247CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljQ2F0ZWdvcnlMaXN0IC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljQ2F0ZWdvcnlMaXN0IE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgU1lOT1BTSVMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KERlYnVnZ2VyT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IExvZ09iamVjdCBUaW1lT2JqZWN0IERCT2JqZWN0IEVuY29kZU9iamVjdCBXZWJzZXJ2aWNlSUQpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NvbW1vbk9iamVjdH0gPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBSdW4oKQoKcGVyZm9ybSBQdWJsaWNDYXRlZ29yeUxpc3QgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IEZBUSBDYXRlZ29yaWVzLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIGNhc2Ugb2YgYW4gZXJyb3IKICAgICAgICBEYXRhICAgICAgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVzdWx0IGRhdGEgcGF5bG9hZCBhZnRlciBPcGVyYXRpb24KICAgICAgICAgICAgQ2F0ZWdvcnkgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTmFtZT4gJ01pc2MnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCA9PiAyLAogICAgICAgICAgICAgICAgICAgIE5hbWU+ICdPbmVNb3JlQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMgd2l0aCB0aGVpciBsb25nIG5hbWVzCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDYXRlZ29yeVRyZWUpICkgewoKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgY2F0ZWdvcnkgZGF0YScKICAgICAgICAgICAgLiAnIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdDo6UnVuKCknOwoKICAgICAgICByZXR1cm4gJFNlbGYtPntDb21tb25PYmplY3R9LT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNDYXRlZ29yeUxpc3QuTm90Q2F0ZWdvcnlEYXRhJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJQdWJsaWNDYXRlZ29yeUxpc3Q6ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICk7CgogICAgfQoKICAgIG15IEBQdWJsaWNDYXRlZ29yeUxpc3Q7CiAgICBmb3IgbXkgJEtleSAoIHNvcnQoIGtleXMgJXskQ2F0ZWdvcnlUcmVlfSApICkgewogICAgICAgIG15ICVDYXRlZ29yeSA9ICgKICAgICAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgICAgICBOYW1lID0+ICRDYXRlZ29yeVRyZWUtPnskS2V5fSwKICAgICAgICApOwogICAgICAgIHB1c2ggQFB1YmxpY0NhdGVnb3J5TGlzdCwgeyVDYXRlZ29yeX07CiAgICB9CgogICAgIyBwcmVwYXJlIHJldHVybiBkYXRhCiAgICBteSAkUmV0dXJuRGF0YSA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiB7fSwKICAgIH07CiAgICBpZiAoIHNjYWxhciBAUHVibGljQ2F0ZWdvcnlMaXN0ID4gMSApIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q2F0ZWdvcnl9ID0gXEBQdWJsaWNDYXRlZ29yeUxpc3Q7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q2F0ZWdvcnl9ID0gJFB1YmxpY0NhdGVnb3J5TGlzdFswXTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIHJldHVybiAkUmV0dXJuRGF0YTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIEtlcm5lbC9HZW5lcmljSW50ZXJmYWNlL09wZXJhdGlvbi9GQVEvTGFuZ3VhZ2VMaXN0LnBtIC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgTGFuZ3VhZ2VMaXN0IG9wZXJhdGlvbiBiYWNrZW5kCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpMYW5ndWFnZUxpc3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb247CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6TGFuZ3VhZ2VMaXN0IC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgTGFuZ3VhZ2VMaXN0IE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgU1lOT1BTSVMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KERlYnVnZ2VyT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IExvZ09iamVjdCBUaW1lT2JqZWN0IERCT2JqZWN0IEVuY29kZU9iamVjdCBXZWJzZXJ2aWNlSUQpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NvbW1vbk9iamVjdH0gPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBSdW4oKQoKcGVyZm9ybSBMYW5ndWFnZUxpc3QgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IEZBUSBMYW5ndWFnZXMuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBMYW5ndWFnZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBOYW1lPiAnZW4nLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCA9PiAyLAogICAgICAgICAgICAgICAgICAgIE5hbWU+ICdPbmVNb3JlTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMYW5ndWFnZXMgKSApIHsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IGxhbmd1YWdlIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpMYW5ndWFnZUxpc3Q6OlJ1bigpJzsKCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q29tbW9uT2JqZWN0fS0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnVGlja2V0TGlzdC5Ob3RMYW5ndWFnZURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlRpY2tldExpc3Q6ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICk7CiAgICB9CgogICAgbXkgQExhbmd1YWdlTGlzdDsKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVMYW5ndWFnZXMgKSB7CiAgICAgICAgbXkgJUxhbmd1YWdlID0gKAogICAgICAgICAgICBJRCAgID0+ICRLZXksCiAgICAgICAgICAgIE5hbWUgPT4gJExhbmd1YWdlc3skS2V5fSwKICAgICAgICApOwogICAgICAgIHB1c2ggQExhbmd1YWdlTGlzdCwgeyVMYW5ndWFnZX07CiAgICB9CgogICAgIyByZXR1cm4gcmVzdWx0CiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgTGFuZ3VhZ2UgPT4gXEBMYW5ndWFnZUxpc3QsCiAgICAgICAgfSwKICAgIH07Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9HZW5lcmljSW50ZXJmYWNlL09wZXJhdGlvbi9GQVEvUHVibGljRkFRU2VhcmNoLnBtIC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljRkFRU2VhcmNoIG9wZXJhdGlvbiBiYWNrZW5kCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0Owp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb247CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoIC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljRkFRU2VhcmNoIE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgU1lOT1BTSVMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KERlYnVnZ2VyT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IExvZ09iamVjdCBUaW1lT2JqZWN0IERCT2JqZWN0IEVuY29kZU9iamVjdCBXZWJzZXJ2aWNlSUQpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NvbW1vbk9iamVjdH0gPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgIyBnZXQgY29uZmlnIGZvciBmcm9udGVuZAogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gUnVuKCkKCnBlcmZvcm0gUHVibGljRkFRU2VhcmNoIE9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiBhIGxpc3Qgb2YgcHVibGljIEZBUSBlbnRyaWVzLgoKICAgIG15IEBJRHMgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CgogICAgICAgICAgICBOdW1iZXIgICAgPT4gJyoxMzQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICBUaXRsZSAgICAgPT4gJypzb21lIHRpdGxlKicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAgICAgIyBpcyBzZWFyY2hpbmcgaW4gTnVtYmVyLCBUaXRsZSwgS2V5d29yZCBhbmQgRmllbGQxLTYKICAgICAgICAgICAgV2hhdCAgICAgID0+ICcqc29tZSB0ZXh0KicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgICAgIEtleXdvcmQgICA9PiAnKndlYnNlcnZlcionLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIExhbmd1YWdlSURzID0+IFsgNCwgNSwgNiBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIENhdGVnb3J5SURzID0+IFsgNywgOCwgOSBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0ZBUUlEJywgJ1RpdGxlJyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAgICAgIyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBPcmRlckJ5OgogICAgICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgICAgICMgVGhlIHBhaXJpbmcgaXMgbWFkZSBieSB0aGUgYXJyYXkgaW5kZXhlcy4KCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gJ0Rvd24nLCAjIChEb3duIHwgVXApICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICAjIGRlZmF1bHQ6ICdEb3duJwogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBjYXNlIG9mIGFuIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIElEID0+IFsKICAgICAgICAgICAgICAgIDMyLAogICAgICAgICAgICAgICAgMTMsCiAgICAgICAgICAgICAgICAxMiwKICAgICAgICAgICAgICAgIDksCiAgICAgICAgICAgICAgICA2LAogICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgIDQsCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAjIHNldCBTZWFyY2hMaW1pdCBvbiAwIGJlY2F1c2Ugd2UgbmVlZCB0byBnZXQgYWxsIGVudHJpZXMKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gMDsKCiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkUGFyYW17RGF0YX0tPntPcmRlckJ5fQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CgogICAgIyB0aGUgQ2F0ZWdvcnlJRCBwYXJhbSBjb3VsZCBiZSBhbiBBUlJBWSBhbiBTQ0FMQVIgb3IgYW4gZW1wdHkgdmFsdWUKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntTb3J0Qnl9ICkgJiYgJFNlbGYtPntTb3J0Qnl9IG5lICcnICkgewogICAgICAgICRTZWxmLT57U29ydEJ5fSA9IFsgJFNlbGYtPntTb3J0Qnl9IF07CiAgICB9CgogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRQYXJhbXtEYXRhfS0+e09yZGVyQnlEaXJlY3Rpb259CiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyB0aGUgQ2F0ZWdvcnlJRCBwYXJhbSBjb3VsZCBiZSBhbiBBUlJBWSBhbiBTQ0FMQVIgb3IgYW4gZW1wdHkgdmFsdWUKICAgICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSA9ICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSB8fCAnJzsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9ICkgJiYgJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9IG5lICcnICkgewogICAgICAgICRTZWxmLT57Q2F0ZWdvcnlJRHN9ID0gWyAkUGFyYW17RGF0YX0tPntDYXRlZ29yeUlEc30gXTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9IG5lICcnICkgewogICAgICAgICRTZWxmLT57Q2F0ZWdvcnlJRHN9ID0gJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9OwogICAgfQoKICAgICMgdGhlIExhbmd1YWdlSUQgcGFyYW0gY291bGQgYmUgYW4gQVJSQVkgYW4gU0NBTEFSIG9yIGFuIGVtcHR5IHZhbHVlCiAgICAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gPSAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gfHwgJyc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfSApICYmICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfSBuZSAnJyApIHsKICAgICAgICAkU2VsZi0+e0xhbmd1YWdlSURzfSA9IFsgJFBhcmFte0RhdGF9LT57TGFuZ3VhZ2VJRHN9IF07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfSBuZSAnJyApIHsKICAgICAgICAkU2VsZi0+e0xhbmd1YWdlSURzfSA9ICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfTsKICAgIH0KCiAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgTnVtYmVyICA9PiAkUGFyYW17RGF0YX0tPntOdW1iZXJ9ICB8fCAnJywKICAgICAgICBUaXRsZSAgID0+ICRQYXJhbXtEYXRhfS0+e1RpdGxlfSAgIHx8ICcnLAogICAgICAgIFdoYXQgICAgPT4gJFBhcmFte0RhdGF9LT57V2hhdH0gICAgfHwgJycsCiAgICAgICAgS2V5d29yZCA9PiAkUGFyYW17RGF0YX0tPntLZXl3b3JkfSB8fCAnJywKICAgICAgICBMYW5ndWFnZUlEcyAgICAgID0+ICRTZWxmLT57TGFuZ3VhZ2VJRHN9LAogICAgICAgIENhdGVnb3J5SURzICAgICAgPT4gJFNlbGYtPntDYXRlZ29yeUlEc30sCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFN0YXRlcyAgICAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgKTsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggXEBWaWV3YWJsZUZBUUlEcyApICkgewoKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgRkFRIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2g6OlJ1bigpJzsKCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q29tbW9uT2JqZWN0fS0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0ZBUVNlYXJjaDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKCiAgICB9CgogICAgIyBwcmVwYXJlIHJldHVybiBkYXRhCiAgICBteSAkUmV0dXJuRGF0YSA9IHsKICAgICAgICBEYXRhICAgID0+IHt9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07CgogICAgIyBzZXQgRkFRIGVudHJ5IGRhdGEKICAgIGlmICggc2NhbGFyIEBWaWV3YWJsZUZBUUlEcyA+IDEgKSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0lEfSA9IFxAVmlld2FibGVGQVFJRHM7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57SUR9ID0gJFZpZXdhYmxlRkFRSURzWzBdOwogICAgfQoKICAgICMgcmV0dXJuIHJlc3VsdAogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9HZW5lcmljSW50ZXJmYWNlL09wZXJhdGlvbi9GQVEvUHVibGljRkFRR2V0LnBtIC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljRkFRR2V0IG9wZXJhdGlvbiBiYWNrZW5kCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgT1RSUyBBRywgaHR0cDovL290cnMuY29tLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0Owp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb247CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0IC0gR2VuZXJpY0ludGVyZmFjZSBGQVEgUHVibGljRkFRR2V0IE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgU1lOT1BTSVMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KERlYnVnZ2VyT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IExvZ09iamVjdCBUaW1lT2JqZWN0IERCT2JqZWN0IEVuY29kZU9iamVjdCBXZWJzZXJ2aWNlSUQpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NvbW1vbk9iamVjdH0gPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgIyBnZXQgcHVibGljIHN0YXRlIHR5cGVzCiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gUnVuKCkKCnBlcmZvcm0gUHVibGljRkFRR2V0IE9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiBhIFB1YmxpYyBGQVEgZW50cnkuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSXRlbUlEID0gJzMyLDMzJzsKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIEZBUUlEICAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lICAgICA9PiAnQ2F0ZWdvcnlBOjpDYXRlZ29yeUInLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5U2hvcnROYW1lID0+ICdDYXRlZ29yeUInLAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgICAgICAgICAgPT4gJ2VuJywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICA9PiAnQXJ0aWNsZSBUaXRsZScsCiAgICAgICAgICAgICAgICAgICAgRmllbGQxICAgICAgICAgICAgPT4gJ1RoZSBTeW1wdG9tcycsCiAgICAgICAgICAgICAgICAgICAgRmllbGQyICAgICAgICAgICAgPT4gJ1RoZSBQcm9ibGVtJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDMgICAgICAgICAgICA9PiAnVGhlIFNvbHV0aW9uJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDQgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgRmllbGQ1ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIEZpZWxkNiAgICAgICAgICAgID0+ICdDb21tZW50cycsCiAgICAgICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkcyAgICAgICAgICA9PiAnS2V5V29yZDEgS2V5V29yZDInLAogICAgICAgICAgICAgICAgICAgIFZvdGVzICAgICAgICAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBudW1iZXIgb2Ygdm90ZXMKICAgICAgICAgICAgICAgICAgICBWb3RlUmVzdWx0ICAgICAgICA9PiAnMC4wMCcsICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgYmV0d2VlbiAwLjAwIGFuZCAxMDAuMDAKICAgICAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICAgICAgID0+ICdpbnRlcm5hbCAoYWdlbnQpJywgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ3B1YmxpYyAoYWxsKScKICAgICAgICAgICAgICAgICAgICBTdGF0ZVR5cGVJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZU5hbWUgICAgID0+ICdpbnRlcm5hbCcsICAgICAgICAgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwnIG9yICdwdWJsaWMnCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkQnkgICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZCAgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICcxMjk0Mjg2MDMwLTMxLjE2OTcyOTcxMDQ3MzInLCAgIyBGQVEgQXJ0aWNsZSBuYW1lIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHN5c3RlbXRpbWUgKyAnLScgKyByYW5kb20gbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgID0+ICc1NDAyODYnLCAgICAgICAgICAgICAgICAjIGZpbGUgc2l6ZSBpbiBieXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ0Vycm9yLmpwZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnLi4uJyAgICAgICAgICAgICAgICAgICAgIyBiYXNlNjQgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTQwMjg2JywgICAgICAgICAgICAgICAgIyBmaWxlIHNpemUgaW4gYnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdQZW5jaWwuanBnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcuLi4nICAgICAgICAgICAgICAgICAgICAjIGJhc2U2NCBjb250ZW50CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSUQgICAgICAgICAgICAgICAgPT4gMzMsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICAgICAgICAgPT4gMzMsCiAgICAgICAgICAgICAgICAgICAgRkFRSUQgICAgICAgICAgICAgPT4gMzMsCiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgPT4gMTAwMDMzLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeU5hbWUgICAgID0+ICdDYXRlZ29yeUQ6OkNhdGVnb3J5RScsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlTaG9ydE5hbWUgPT4gJ0NhdGVnb3J5RScsCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSAgICAgICAgICA9PiAnZW4nLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgID0+ICdBcnRpY2xlIFRpdGxlJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDEgICAgICAgICAgICA9PiAnVGhlIFN5bXB0b21zJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDIgICAgICAgICAgICA9PiAnVGhlIFByb2JsZW0nLAogICAgICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgICAgICAgID0+ICdUaGUgU29sdXRpb24nLAogICAgICAgICAgICAgICAgICAgIEZpZWxkNCAgICAgICAgICAgID0+IHVuZGVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgYWN0aXZlIGJ5IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICBGaWVsZDUgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgRmllbGQ2ICAgICAgICAgICAgPT4gJ0NvbW1lbnRzJywKICAgICAgICAgICAgICAgICAgICBBcHByb3ZlZCAgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMAogICAgICAgICAgICAgICAgICAgIEtleXdvcmRzICAgICAgICAgID0+ICdLZXlXb3JkMSBLZXlXb3JkMicsCiAgICAgICAgICAgICAgICAgICAgVm90ZXMgICAgICAgICAgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG51bWJlciBvZiB2b3RlcwogICAgICAgICAgICAgICAgICAgIFZvdGVSZXN1bHQgICAgICAgID0+ICcwLjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBiZXR3ZWVuIDAuMDAgYW5kIDEwMC4wMAogICAgICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgICAgICAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLCAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCAoY3VzdG9tZXIpJyBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAncHVibGljIChhbGwpJwogICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZUlEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU3RhdGVUeXBlTmFtZSAgICAgPT4gJ2ludGVybmFsJywgICAgICAgICAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCcgb3IgJ3B1YmxpYycKICAgICAgICAgICAgICAgICAgICBDcmVhdGVkQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENoYW5nZWQgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgICAgICAgICAgICAgIENoYW5nZWRCeSAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVkICAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJzEyOTQyODYwMzAtMzEuMTY5NzI5NzEwNDczMicsICAjIEZBUSBBcnRpY2xlIG5hbWUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3lzdGVtdGltZSArICctJyArIHJhbmRvbSBudW1iZXIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAjIC4uLgogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtEYXRhfS0+e0l0ZW1JRH0gKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+e0NvbW1vbk9iamVjdH0tPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1B1YmxpY0ZBUUdldC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJQdWJsaWNGQVFHZXQ6IEdvdCBubyBJdGVtSUQhIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRFcnJvck1lc3NhZ2UgPSAnJzsKCiAgICBteSAkUmV0dXJuRGF0YSA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9OwogICAgbXkgQEl0ZW1JRHMgPSBzcGxpdCggLywvLCAkUGFyYW17RGF0YX0tPntJdGVtSUR9ICk7CiAgICBteSBASXRlbTsKCiAgICAjIHN0YXJ0IG1haW4gbG9vcAogICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CgogICAgICAgICMgZ2V0IHRoZSBGQVEgZW50cnkKICAgICAgICBteSAlRkFRRW50cnkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCBcJUZBUUVudHJ5ICkgKSB7CgogICAgICAgICAgICAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgRkFRIGRhdGEnCiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKSc7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntDb21tb25PYmplY3R9LT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRR2V0Lk5vdFZhbGlkRkFRSUQnLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJQdWJsaWNGQVFHZXQ6ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgICAgIG15ICRBcHByb3ZhbFN1Y2Nlc3MgPSAxOwogICAgICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewogICAgICAgICAgICAkQXBwcm92YWxTdWNjZXNzID0gJEZBUUVudHJ5e0FwcHJvdmVkfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhJEFwcHJvdmFsU3VjY2VzcyB8fCAhJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LT57ICRGQVFFbnRyeXtTdGF0ZVR5cGVJRH0gfSApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBGQVEgZGF0YScKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0NvbW1vbk9iamVjdH0tPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuQWNjZXNzRGVuaWVkJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUHVibGljRkFRR2V0OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IEZBUSBlbnRyeSBkYXRhCiAgICAgICAgbXkgJEFydGljbGUgPSB7CiAgICAgICAgICAgIEFydGljbGUgPT4gXCVGQVFFbnRyeSwKICAgICAgICB9OwoKICAgICAgICBteSBASW5kZXggPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICBTaG93SW5saW5lID0+IDEsICAgICAgICAgICAgICAgICAjICAgKCAwfDEsIGRlZmF1bHQgMSkKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxASW5kZXggKSApIHsKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzOwogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBJbmRleCkgewogICAgICAgICAgICAgICAgbXkgJUZpbGUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNvbnZlcnQgY29udGVudCB0byBiYXNlNjQKICAgICAgICAgICAgICAgICRGaWxle0NvbnRlbnR9ID0gZW5jb2RlX2Jhc2U2NCggJEZpbGV7Q29udGVudH0gKTsKICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRzLCB7JUZpbGV9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBGQVEgZW50cnkgZGF0YQogICAgICAgICAgICAkRkFRRW50cnl7QXR0YWNobWVudH0gPSBcQEF0dGFjaG1lbnRzOwogICAgICAgIH0KCiAgICAgICAgIyBhZGQKICAgICAgICBwdXNoIEBJdGVtLCBcJUZBUUVudHJ5OwogICAgfSAgICAjIGZpbmlzaCBtYWluIGxvb3AKCiAgICBpZiAoICFzY2FsYXIgQEl0ZW0gKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IEZBUSBkYXRhJwogICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKSc7CgogICAgICAgIHJldHVybiAkU2VsZi0+e0NvbW1vbk9iamVjdH0tPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1B1YmxpY0ZBUUdldC5Ob0ZBUURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0ZBUUdldDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKCiAgICB9CgogICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0ZBUUl0ZW19ID0gXEBJdGVtOwoKICAgICMgcmV0dXJuIHJlc3VsdAogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAwCkRlc2NyaXB0aW9uOiAnJwpGcmFtZXdvcmtWZXJzaW9uOiAzLjIueCBDVlMKUHJvdmlkZXI6CiAgT3BlcmF0aW9uOgogICAgTGFuZ3VhZ2VMaXN0OgogICAgICBEZXNjcmlwdGlvbjogTGlzdCAgYWxsIGF2YWlsYWJsZXMgbGFuZ3VhZ2VzCiAgICAgIFR5cGU6IEZBUTo6TGFuZ3VhZ2VMaXN0CiAgICBQdWJsaWNDYXRlZ29yeUxpc3Q6CiAgICAgIERlc2NyaXB0aW9uOiBMaXN0IGFsbCBwdWJsaWMgRkFRIGNhdGVnb3JpZXMgKHdpdGggdHJlZSBpbmZvcm1hdGlvbikKICAgICAgVHlwZTogRkFROjpQdWJsaWNDYXRlZ29yeUxpc3QKICAgIFB1YmxpY0ZBUVNlYXJjaDoKICAgICAgRGVzY3JpcHRpb246IFNlYXJjaCBmb3IgcHVibGljIEZBUXMKICAgICAgVHlwZTogRkFROjpQdWJsaWNGQVFTZWFyY2gKICAgIFB1YmxpY0ZBUUdldDoKICAgICAgRGVzY3JpcHRpb246IFJldHJpZXZlIHB1YmxpYyBGQVEgZW50cmllcwogICAgICBUeXBlOiBGQVE6OlB1YmxpY0ZBUUdldAogIFRyYW5zcG9ydDoKICAgIENvbmZpZzoKICAgICAgRW5jb2Rpbmc6IFVURi04CiAgICAgIEVuZHBvaW50OiAnJwogICAgICBNYXhMZW5ndGg6IDEwMDAwMDAwCiAgICAgIE5hbWVTcGFjZTogaHR0cDovL3d3dy5vdHJzLm9yZy9GQVFDb25uZWN0b3IvCiAgICAgIFNPQVBBY3Rpb246ICcnCiAgICBUeXBlOiBIVFRQOjpTT0FQClJlbW90ZVN5c3RlbTogJycK
IyAtLQojIEZBUUNvbm5lY3Rvci50IC0gR2VuZXJpY0ludGVyZmFjZSB0cmFuc3BvcnQgaW50ZXJmYWNlIHRlc3RzIGZvciBGQVFDb25uZWN0b3IgYmFja2VuZAojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSB2YXJzIChxdygkU2VsZikpOwoKdXNlIFNvY2tldDsKdXNlIFlBTUw7CnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyOwp1c2UgS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2U7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcjsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6Okxhbmd1YWdlTGlzdDsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdDsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUUdldDsKCiMgaGVscGVyIG9iamVjdApteSAkSGVscGVyT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXItPm5ldygKICAgICV7JFNlbGZ9LAogICAgVW5pdFRlc3RPYmplY3QgPT4gJFNlbGYsCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwoKIyBzZXQgd2Vic2VydmljZSBuYW1lCm15ICRXZWJzZXJ2aWNlTmFtZSA9ICctVGVzdC0nIC4gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCiMgc2V0IFVzZXJJRCBvbiAxCm15ICRVc2VySUQgPSAxOwoKIyBjcmVhdGUgYWxsIEZBUSBzdHVmZiBuZWVkZWQKbXkgJEZBUU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyggJXskU2VsZn0gKTsKCiMgZ2V0IHB1YmxpYyBzdGF0ZXMKbXkgJVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwpteSAkUHVibGljU3RhdGVJRDsKZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJVN0YXRlcyApIHsKICAgIGlmICggJFN0YXRlc3skS2V5fSA9fiAvXnB1YmxpYy4qLyApIHsKICAgICAgICAkUHVibGljU3RhdGVJRCA9ICRLZXk7CiAgICB9Cn0KCiRTZWxmLT5Jc05vdCgKICAgICRQdWJsaWNTdGF0ZUlELAogICAgdW5kZWYsCiAgICAiU2VhcmNoIGZvciBwdWJsaWMgU3RhdGVJRCIsCik7CgojIGNhdGVnb3J5IG9uZQpteSAkQ2F0ZWdvcnlJRE9uZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ0Nvbm5lY3RvckNhdGVnb3J5T25lJyAuICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbW1lbnQgID0+ICdDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBQYXJlbnRJRCA9PiAwLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeUlET25lLAogICAgIkNhdGVnb3J5QWRkKCkgLSBDYXRlZ29yeSIsCik7CgojIGNhdGVnb3J5IHR3bwpteSAkQ2F0ZWdvcnlJRFR3byA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ0Nvbm5lY3RvckNhdGVnb3J5VHdvJyAuICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbW1lbnQgID0+ICdDaGlsZCBDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRE9uZSwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlJRFR3bywKICAgICJDYXRlZ29yeUFkZCgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKIyBjYXRlZ29yeSB0aHJlZQpteSAkQ2F0ZWdvcnlJRFRocmVlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0nIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29tbWVudCAgPT4gJ0NoaWxkIENhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlEVHdvLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeUlEVGhyZWUsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIENoaWxkIENhdGVnb3J5IiwKKTsKCiMgY2F0ZWdvcnkgZm91cgpteSAkQ2F0ZWdvcnlJREZvdXIgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICdDb25uZWN0b3JDYXRlZ29yeUZvdXInIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29tbWVudCAgPT4gJ0NhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+IDAsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SURGb3VyLAogICAgIkNhdGVnb3J5QWRkKCkgLSBDaGlsZCBDYXRlZ29yeSIsCik7CgpteSAkRkFRSURPbmUgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdUaXRsZSBGQVEgJyAuICRSYW5kb21JRCAuICdPbmUnIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRE9uZSwKICAgIFN0YXRlSUQgICAgPT4gJFB1YmxpY1N0YXRlSUQsCiAgICBMYW5ndWFnZUlEID0+IDEsCiAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzJywKICAgIEZpZWxkMSAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgRmllbGQyICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgQXBwcm92ZWQgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRSURPbmUsCiAgICAiRkFRQWRkKCkgLSBGQVEgT25lIiwKKTsKCm15ICRGQVFJRFR3byA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgIFRpdGxlICAgICAgPT4gJ1RpdGxlIEZBUSAnIC4gJFJhbmRvbUlEIC4gJyBUd28nIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRFRocmVlLAogICAgU3RhdGVJRCAgICA9PiAkUHVibGljU3RhdGVJRCwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJycsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtIERlc2NyaXB0aW9uIDEuLi4nLAogICAgRmllbGQyICAgICA9PiAnU29sdXRpb24gbm90IGZvdW5kMS4uLicsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBBcHByb3ZlZCAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRGQVFJRFR3bywKICAgICJGQVFBZGQoKSAtIEZBUSBUd28iLAopOwoKbXkgJEZBUUlEVGhyZWUgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdUaXRsZSDkvb/nlKjkuIvliJfor63oqIAgVGhyZWUnIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJREZvdXIsCiAgICBTdGF0ZUlEICAgID0+ICRQdWJsaWNTdGF0ZUlELAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnJywKICAgIEZpZWxkMSAgICAgPT4gJ0xvb2sgZm9yIG1lICcgLiAkUmFuZG9tSUQgLiAnIG9uIHRoZSBzZWFyY2gnLAogICAgRmllbGQyICAgICA9PiAnU29sdXRpb24gbm90IGZvdW5kMS4uLicsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBBcHByb3ZlZCAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRGQVFJRFRocmVlLAogICAgIkZBUUFkZCgpIC0gRkFRIFRocmVlIiwKKTsKCiMgZmlsZSBjaGVja3MKZm9yIG15ICRGaWxlIChxdyhiaW4gdHh0KSkgewogICAgbXkgJExvY2F0aW9uID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0hvbWUnKQogICAgICAgIC4gIi9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0dlbmVyaWNJbnRlcmZhY2UvRkFRL0dJLUZBUS1UZXN0LXV0ZjgtMS4kRmlsZSI7CgogICAgbXkgJENvbnRlbnRSZWYgPSAkU2VsZi0+e01haW5PYmplY3R9LT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkTG9jYXRpb24sCiAgICAgICAgTW9kZSAgICAgPT4gJ2Jpbm1vZGUnLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgSXRlbUlEICAgICAgPT4gJEZBUUlEVGhyZWUsCiAgICAgICAgQ29udGVudCAgICAgPT4gJHskQ29udGVudFJlZn0sCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3Rlc3QvJyAuICRGaWxlLAogICAgICAgIEZpbGVuYW1lICAgID0+ICd0ZXN0LicgLiAkRmlsZSwKICAgICAgICBJbmxpbmUgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgIyAoMHwxLCBkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudCwKICAgICAgICAiQXR0YWNobWVudEFkZCgpIC0gRmlsZSAiIC4gJEZpbGUsCiAgICApOwp9CgpteSAkRkFRSURGb3VyID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICA9PiAnVGl0bGUgRkFRICcgLiAkUmFuZG9tSUQgLiAnINCv0LfRi9C60L7QstGL0LUgRm91cicgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlERm91ciwKICAgIFN0YXRlSUQgICAgPT4gJFB1YmxpY1N0YXRlSUQsCiAgICBMYW5ndWFnZUlEID0+IDEsCiAgICBLZXl3b3JkcyAgID0+ICcnLAogICAgRmllbGQxICAgICA9PiAnUHJvYmxlbSBEZXNjcmlwdGlvbiAxLi4uJywKICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uIG5vdCBmb3VuZDEuLi4nLAogICAgVXNlcklEICAgICA9PiAxLAogICAgQXBwcm92ZWQgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRSURGb3VyLAogICAgIkZBUUFkZCgpIC0gRkFRIEZvdXIiLAopOwoKIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgIFVzZXJJRCA9PiAxLAopOwoKbXkgQExhbmd1YWdlTGlzdDsKZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUxhbmd1YWdlcyApIHsKICAgIG15ICVMYW5ndWFnZSA9ICgKICAgICAgICBJRCAgID0+ICRLZXksCiAgICAgICAgTmFtZSA9PiAkTGFuZ3VhZ2VzeyRLZXl9LAogICAgKTsKICAgIHB1c2ggQExhbmd1YWdlTGlzdCwgeyVMYW5ndWFnZX07Cn0KCiMgZ2V0IEZBUQpteSAlRkFRT25lID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkRkFRSURPbmUsCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CmZvcmVhY2ggbXkgJEtleSAoIGtleXMgJUZBUU9uZSApIHsKICAgIGlmICggISRGQVFPbmV7JEtleX0gKSB7CiAgICAgICAgJEZBUU9uZXskS2V5fSA9ICcnOwogICAgfQp9CgpteSAlRkFRVHdvID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkRkFRSURUd28sCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CmZvcmVhY2ggbXkgJEtleSAoIGtleXMgJUZBUVR3byApIHsKICAgIGlmICggISRGQVFUd297JEtleX0gKSB7CiAgICAgICAgJEZBUVR3b3skS2V5fSA9ICcnOwogICAgfQp9CgpteSAlRkFRVGhyZWUgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRGQVFJRFRocmVlLAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAkVXNlcklELAopOwpmb3JlYWNoIG15ICRLZXkgKCBrZXlzICVGQVFUaHJlZSApIHsKICAgIGlmICggISRGQVFUaHJlZXskS2V5fSApIHsKICAgICAgICAkRkFRVGhyZWV7JEtleX0gPSAnJzsKICAgIH0KfQoKbXkgQEluZGV4ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgSXRlbUlEICAgICA9PiAkRkFRSURUaHJlZSwKICAgIFNob3dJbmxpbmUgPT4gMSwgICAgICAgICAgICAgIyAgICggMHwxLCBkZWZhdWx0IDEpCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgpteSBAQXR0YWNobWVudHNUaHJlZTsKZm9yIG15ICRBdHRhY2htZW50IChASW5kZXgpIHsKICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBJdGVtSUQgPT4gJEZBUUlEVGhyZWUsCiAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICk7CgogICAgIyBjb252ZXJ0IGNvbnRlbnQgdG8gYmFzZTY0CiAgICAkRmlsZXtDb250ZW50fSA9IGVuY29kZV9iYXNlNjQoICRGaWxle0NvbnRlbnR9ICk7CiAgICBwdXNoIEBBdHRhY2htZW50c1RocmVlLCB7JUZpbGV9Owp9CgpteSAlRkFRRm91ciA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlERm91ciwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKZm9yZWFjaCBteSAkS2V5ICgga2V5cyAlRkFRRm91ciApIHsKICAgIGlmICggISRGQVFGb3VyeyRLZXl9ICkgewogICAgICAgICRGQVFGb3VyeyRLZXl9ID0gJyc7CiAgICB9Cn0KCiMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwpteSAkQ2F0ZWdvcnlUcmVlID0gJEZBUU9iamVjdC0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgIFZhbGlkICA9PiAxLAogICAgVHlwZSAgID0+ICdydycsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKbXkgQFB1YmxpY0NhdGVnb3J5TGlzdDsKZm9yIG15ICRLZXkgKCBzb3J0KCBrZXlzICV7JENhdGVnb3J5VHJlZX0gKSApIHsKICAgIG15ICVDYXRlZ29yeSA9ICgKICAgICAgICBJRCAgID0+ICRLZXksCiAgICAgICAgTmFtZSA9PiAkQ2F0ZWdvcnlUcmVlLT57JEtleX0sCiAgICApOwogICAgcHVzaCBAUHVibGljQ2F0ZWdvcnlMaXN0LCB7JUNhdGVnb3J5fTsKfQoKIyBjcmVhdGUgd2Vic2VydmljZSBvYmplY3QKbXkgJFdlYnNlcnZpY2VPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZS0+bmV3KCAleyRTZWxmfSApOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAogICAgcmVmICRXZWJzZXJ2aWNlT2JqZWN0LAogICAgIkNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdCIsCik7CgpteSAkV2Vic2VydmljZUlEID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VBZGQoCiAgICBOYW1lICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBQcm92aWRlciA9PiB7CiAgICAgICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZUlELAogICAgIkFkZGVkIFdlYnNlcnZpY2UiLAopOwoKIyBnZXQgcmVtb3RlIGhvc3Qgd2l0aCBzb21lIHByZWNhdXRpb25zIGZvciBjZXJ0YWluIHVuaXQgdGVzdCBzeXN0ZW1zCm15ICRIb3N0OwpteSAkRlFETiA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGUUROJyk7CgojIHRyeSB0byByZXNvbHZlIGZxZG4gaG9zdAppZiAoICRGUUROIG5lICd5b3VyaG9zdC5leGFtcGxlLmNvbScgJiYgZ2V0aG9zdGJ5bmFtZSgkRlFETikgKSB7CiAgICAkSG9zdCA9ICRGUUROOwp9CgojIHRyeSB0byByZXNvbHZlIGxvY2FsaG9zdCBpbnN0ZWFkCmlmICggISRIb3N0ICYmIGdldGhvc3RieW5hbWUoJ2xvY2FsaG9zdCcpICkgewogICAgJEhvc3QgPSAnbG9jYWxob3N0JzsKfQoKIyB1c2UgaGFyZGNvZGVkIGxvY2FsaG9zdCBpcCBhZGRyZXNzCmlmICggISRIb3N0ICkgewogICAgJEhvc3QgPSAnMTI3LjAuMC4xJzsKfQoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0h0dHBUeXBlJykKICAgIC4gJzovLycKICAgIC4gJEhvc3QKICAgIC4gJy8nCiAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+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+IFsKICAgICAgICAgICAgICAgICAgICAkRkFRSURGb3VyLAogICAgICAgICAgICAgICAgICAgICRGQVFJRFR3bywKICAgICAgICAgICAgICAgICAgICAkRkFRSURPbmUsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBXaGF0ICAgID0+ICdMb29rIGZvciBtZSAnIC4gJFJhbmRvbUlELAogICAgICAgICAgICBPcmRlckJ5ID0+ICdGQVFJRCcsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgSUQgPT4gJEZBUUlEVGhyZWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRSURGb3VyLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFGb3VyLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUUZvdXIsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRR2V0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEZBUUlERm91ciwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgSUQgPT4gJEZBUUlERm91ciwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRR2V0Lk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUHVibGljRkFRR2V0OiBHb3Qgbm8gSXRlbUlEIScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQoKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdQdWJsaWNGQVFHZXQ6IEdvdCBubyBJdGVtSUQhJwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFHZXQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkRkFRSURGb3VyLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA3JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBJdGVtSUQgPT4gJ05vdEl0ZW1JRCcsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUUdldC5Ob3RWYWxpZEZBUUlEJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUUdldDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUUdldC5Ob3RWYWxpZEZBUUlEJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUUdldDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFHZXQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAnTm90SXRlbUlEJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgOCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRFRocmVlLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFUaHJlZSwKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFxAQXR0YWNobWVudHNUaHJlZSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVybkxvY2FsRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBGQVFJdGVtID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFUaHJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBcQEF0dGFjaG1lbnRzVGhyZWUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUUdldCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRGQVFJRFRocmVlLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBPcmRlckJ5ID0+ICdOb3RFeGlzdGluZ0ZpZWxkJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnUHVibGljRkFRU2VhcmNoOiBDb3VsZCBub3QgZ2V0IEZBUSBkYXRhIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDo6UnVuKCknCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdQdWJsaWNGQVFTZWFyY2guTm90RkFRRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdQdWJsaWNGQVFTZWFyY2g6IENvdWxkIG5vdCBnZXQgRkFRIGRhdGEgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOjpSdW4oKScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCAxMCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgV2hhdCA9PiAnTm90RXhpc3RpbmdWYWx1ZScsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaC5Ob3RGQVFEYXRhJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUVNlYXJjaDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2g6OlJ1bigpJwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVybkxvY2FsRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnUHVibGljRkFRU2VhcmNoOiBDb3VsZCBub3QgZ2V0IEZBUSBkYXRhIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDo6UnVuKCknCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgMTEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIEl0ZW1JRCA9PiAiJEZBUUlET25lLCRGQVFJRFR3bywkRkFRSURUaHJlZSIsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgRkFRSXRlbSA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRT25lLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRVHdvLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRVGhyZWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gXEBBdHRhY2htZW50c1RocmVlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFHZXQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAiJEZBUUlET25lLCRGQVFJRFR3bywkRkFRSURUaHJlZSIsCiAgICB9LAoKKTsKCiMgZGVidWdnZXIgb2JqZWN0Cm15ICREZWJ1Z2dlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXItPm5ldygKICAgICV7JFNlbGZ9LAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjokVGVzdC0+e09wZXJhdGlvbn0iLT5uZXcoCiAgICAgICAgJXskU2VsZn0sCiAgICAgICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAiS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6JFRlc3QtPntPcGVyYXRpb259IiwKICAgICAgICByZWYgJExvY2FsT2JqZWN0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3JlYXRlIGxvY2FsIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRMb2NhbFJlc3VsdCA9ICRMb2NhbE9iamVjdC0+UnVuKAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRUZXN0LT57UmVxdWVzdERhdGF9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgd29ya2Fyb3VuZCBiZWNhdXNlIHJlc3VsdHMgZnJvbSBkaXJlY3QgY2FsbCBhbmQKICAgICMgZnJvbSBTT0FQIGNhbGwgYXJlIGEgbGl0dGxlIGJpdCBkaWZmZXJlbnQKICAgIGlmICggJFRlc3QtPntPcGVyYXRpb259IGVxICdQdWJsaWNGQVFHZXQnICkgewoKICAgICAgICBpZiAoIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0ZBUUl0ZW19IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciBteSAkRkFRSXRlbSAoIEB7ICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gfSApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEZBUUl0ZW19ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGQVFJdGVtLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGQVFJdGVtLT57JEtleX0gPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQoKICAgICMgcmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbAogICAgIyByZXN1bHQgdG8gYmUgY29uc2lzdGVudCB3aXRoIFNPQVAgY2FsbCByZXN1bHQKICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICBpZiAoICRUZXN0LT57RXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGF9ICkgewogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmV0dXJuTG9jYWxEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQsCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQoKICAgICMgcmVtb3RlIGNhbGwgdXNpbmcgdGhlIHN5c3RlbSBhcyBSZXF1ZXN0ZXIgYW5kIFByb3ZpZGVyCgogICAgIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdAogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiAkVGVzdC0+e1JlcXVlc3REYXRhfSwKICAgICk7CgogICAgIyBjaGVjayByZXN1bHQKICAgICRTZWxmLT5JcygKICAgICAgICAnSEFTSCcsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgd29ya2Fyb3VuZCBiZWNhdXNlIHJlc3VsdHMgZnJvbSBkaXJlY3QgY2FsbCBhbmQKICAgICMgZnJvbSBTT0FQIGNhbGwgYXJlIGEgbGl0dGxlIGJpdCBkaWZmZXJlbnQKICAgIGlmICggJFRlc3QtPntPcGVyYXRpb259IGVxICdQdWJsaWNGQVFHZXQnICYmICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9ICkgewoKICAgICAgICBpZiAoIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0ZBUUl0ZW19IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfS0+eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0ZBUUl0ZW19LT57JEtleX0gPSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICBmb3IgbXkgJEZBUUl0ZW0gKCBAeyAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskRkFRSXRlbX0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEZBUUl0ZW0tPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEZBUUl0ZW0tPnskS2V5fSA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e1N1Y2Nlc3N9LAogICAgICAgICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIC0gU3VjY2VzcyBzdGF0dXMiLAogICAgKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YX0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgc3VjY2Vzc2Z1bCByZXN1bHQgKG5lZWRzIGNvbmZpZ3VyZWQgYW5kIHJ1bm5pbmcgd2Vic2VydmVyKSIsCiAgICApOwoKfSAgICAjZW5kIGxvb3AKCiMgY2xlYW4gdXAgd2Vic2VydmljZQpteSAkV2Vic2VydmljZURlbGV0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlRGVsZXRlKAogICAgSUQgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZURlbGV0ZSwKICAgICJEZWxldGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCIsCik7CgojIGNsZWFuIHVwIEZBUSBzdHVmZgpteSAkRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRE9uZSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBGQVFJRDogJEZBUUlET25lIiwKKTsKCiRGQVFEZWxldGUgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEZBUUlEVHdvLAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJEZBUURlbGV0ZSwKICAgICJGQVFEZWxldGUoKSAtIEZBUUlEOiAkRkFRSURUd28iLAopOwoKJEZBUURlbGV0ZSA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgIEl0ZW1JRCA9PiAkRkFRSURUaHJlZSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBGQVFJRDogJEZBUUlEVGhyZWUiLAopOwoKJEZBUURlbGV0ZSA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgIEl0ZW1JRCA9PiAkRkFRSURGb3VyLAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJEZBUURlbGV0ZSwKICAgICJGQVFEZWxldGUoKSAtIEZBUUlEOiAkRkFRSURGb3VyIiwKKTsKCm15ICRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJREZvdXIsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeURlbGV0ZSwKICAgICJDYXRlZ29yeURlbGV0ZSgpIC0gQ2F0ZWdvcnk6ICRDYXRlZ29yeUlERm91ciIsCik7CgokQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SURUaHJlZSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBDYXRlZ29yeTogJENhdGVnb3J5SURUaHJlZSIsCik7CgokQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SURUd28sCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeURlbGV0ZSwKICAgICJDYXRlZ29yeURlbGV0ZSgpIC0gQ2F0ZWdvcnk6ICRDYXRlZ29yeUlEVHdvIiwKKTsKCiRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRE9uZSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBDYXRlZ29yeTogJENhdGVnb3J5SURPbmUiLAopOwoKMTsK
fi91dGYtOC1maWxlLcOkw7bDvMOfLeOCq+OCueOCv+ODni50eHQKCkp1c3QgdGV4dCBmb3IgdGhlIGF0dGFjaG1lbnQKCuS9v+eUqOS4i+WIl+ivreiogAoK0K/Qt9GL0LrQvtCy0YvQtQoKISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0K
fi91dGYtOC1maWxlLcOkw7bDvMOfLeOCq+OCueOCv+ODni50eHQKCkp1c3QgdGV4dCBmb3IgdGhlIGF0dGFjaG1lbnQKCuS9v+eUqOS4i+WIl+ivreiogAoK0K/Qt9GL0LrQvtCy0YvQtQoKISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0K
JVBERi0xLjQKJaqrrK0KNCAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDEuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMS4xKQovQ3JlYXRpb25EYXRlIChEOjIwMTYwNjI4MDU0ODU0KzAyJzAwJykKPj4KZW5kb2JqCjUgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAxMiAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJydlndYU+cex99zTvZgJCFsCHuGpUAAkRGmgAzZohCSAAESICQM90BUsKKoyFIEKYpYsFqG1IkoDori3g1SBJRarOLC0USep/X29t7b2+8f53ye3/v7vef9jfd5DgCkgEyuMBdWAUAokogj/L0ZsXHxDOwAgAEeYIA9ABxubrZXWFgwkCvQl83IlTuBf9GrmwBSvK8xFXuB/0+q3GyxBAAoTM6zePxcrpyL5JyZL8lW2CflTEvOUDCMUrBYfkA5ayg4dYatP/vMsKeCeUIRT86Rcs7mCXkK7pXzhjwpX86IIpfiPAE/X87X5WycKRUK5PxGESvkc+Q5oEgKu4TPTZOznZxJ4sgItpznAIAjpX7ByV+whF8gUSTFzsouFAtS0yQMc64Fw97FhcUI4Odn8iUSZhiHm8ER8xjsLGE2R1QIwEzOn0VR1JYhL7KTvYuTE9PBxv6LQv3Xxb8pRW9n6EX4555B9P4/bH/ll9UAAGtKXpstf9iSqwDoXAeAxt0/bMZ7AFCW963j8hf50BXzkiaRZLva2ubn59sI+FwbRUF/1/90+Bv64ns2iu1+Lw/Dh5/CkWZKGIq6cbMys6RiRm42h8tnMP88xP848K/PYR3BT+GL+SJ5RLR8ygSiVHm7RTyBRJAlYghE/6mJ/zDsT5qZa7mojR8BLdEGqFymAeTnfoCiEgGSsFu+Av3et2B8NFDcvBj90Zm5/yzo33eFyxSPXEHq5zh2RCSDKxXnzawpriVAAwJQBjSgCfSAETAHTOAAnIEb8AS+YB4IBZEgDiwGXJAGhEAM8sEysBoUg1KwBewA1aAONIJm0AoOg05wDJwG58AlcAXcAPeADIyAp2ASvALTEARhITJEhTQhfcgEsoIcIBY0F/KFgqEIKA5KglIhESSFlkFroVKoHKqG6qFm6FvoKHQaugANQnegIWgc+hV6ByMwCabBurApbAuzYC84CI6EF8GpcA68BC6CN8OVcAN8EO6AT8OX4BuwDH4KTyEAISJ0xABhIiyEjYQi8UgKIkZWICVIBdKAtCLdSB9yDZEhE8hbFAZFRTFQTJQbKgAVheKiclArUJtQ1aj9qA5UL+oaagg1ifqIJqN10FZoV3QgOhadis5HF6Mr0E3odvRZ9A30CPoVBoOhY8wwzpgATBwmHbMUswmzC9OGOYUZxAxjprBYrCbWCuuODcVysBJsMbYKexB7EnsVO4J9gyPi9HEOOD9cPE6EW4OrwB3AncBdxY3ipvEqeBO8Kz4Uz8MX4svwjfhu/GX8CH6aoEowI7gTIgnphNWESkIr4SzhPuEFkUg0JLoQw4kC4ipiJfEQ8TxxiPiWRCFZktikBJKUtJm0j3SKdIf0gkwmm5I9yfFkCXkzuZl8hvyQ/EaJqmSjFKjEU1qpVKPUoXRV6ZkyXtlE2Ut5sfIS5QrlI8qXlSdU8CqmKmwVjsoKlRqVoyq3VKZUqar2qqGqQtVNqgdUL6iOUbAUU4ovhUcpouylnKEMUxGqEZVN5VLXUhupZ6kjNAzNjBZIS6eV0r6hDdAm1Shqs9Wi1QrUatSOq8noCN2UHkjPpJfRD9Nv0t+p66p7qfPVN6q3ql9Vf62hreGpwdco0WjTuKHxTpOh6auZoblVs1PzgRZKy1IrXCtfa7fWWa0JbZq2mzZXu0T7sPZdHVjHUidCZ6nOXp1+nSldPV1/3WzdKt0zuhN6dD1PvXS97Xon9Mb1qfpz9QX62/VP6j9hqDG8GJmMSkYvY9JAxyDAQGpQbzBgMG1oZhhluMawzfCBEcGIZZRitN2ox2jSWN84xHiZcYvxXRO8CcskzWSnSZ/Ja1Mz0xjT9aadpmNmGmaBZkvMWszum5PNPcxzzBvMr1tgLFgWGRa7LK5YwpaOlmmWNZaXrWArJyuB1S6rQWu0tYu1yLrB+haTxPRi5jFbmEM2dJtgmzU2nTbPbI1t42232vbZfrRztMu0a7S7Z0+xn2e/xr7b/lcHSweuQ43D9VnkWX6zVs7qmvV8ttVs/uzds287Uh1DHNc79jh+cHJ2Eju1Oo07GzsnOdc632LRWGGsTazzLmgXb5eVLsdc3ro6uUpcD7v+4sZ0y3A74DY2x2wOf07jnGF3Q3eOe727bC5jbtLcPXNlHgYeHI8Gj0eeRp48zybPUS8Lr3Svg17PvO28xd7t3q/Zruzl7FM+iI+/T4nPgC/FN8q32vehn6Ffql+L36S/o/9S/1MB6ICggK0BtwJ1A7mBzYGT85znLZ/XG0QKWhBUHfQo2DJYHNwdAofMC9kWcn++yXzR/M5QEBoYui30QZhZWE7Y9+GY8LDwmvDHEfYRyyL6FlAXJC44sOBVpHdkWeS9KPMoaVRPtHJ0QnRz9OsYn5jyGFmsbezy2EtxWnGCuK54bHx0fFP81ELfhTsWjiQ4JhQn3Fxktqhg0YXFWoszFx9PVE7kJB5JQifFJB1Ies8J5TRwppIDk2uTJ7ls7k7uU54nbztvnO/OL+ePprinlKeMpbqnbksdT/NIq0ibELAF1YLn6QHpdemvM0Iz9mV8yozJbBPihEnCoyKKKEPUm6WXVZA1mG2VXZwty3HN2ZEzKQ4SN+VCuYtyuyQ0+c9Uv9Rcuk46lDc3rybvTX50/pEC1QJRQX+hZeHGwtElfku+Xopayl3as8xg2eplQ8u9ltevgFYkr+hZabSyaOXIKv9V+1cTVmes/mGN3ZryNS/XxqztLtItWlU0vM5/XUuxUrG4+NZ6t/V1G1AbBBsGNs7aWLXxYwmv5GKpXWlF6ftN3E0Xv7L/qvKrT5tTNg+UOZXt3oLZItpyc6vH1v3lquVLyoe3hWzr2M7YXrL95Y7EHRcqZlfU7STslO6UVQZXdlUZV22pel+dVn2jxrumrVandmPt6128XVd3e+5urdOtK617t0ew53a9f31Hg2lDxV7M3ry9jxujG/u+Zn3d3KTVVNr0YZ9on2x/xP7eZufm5gM6B8pa4BZpy/jBhINXvvH5pquV2VrfRm8rPQQOSQ89+Tbp25uHgw73HGEdaf3O5Lvadmp7SQfUUdgx2ZnWKeuK6xo8Ou9oT7dbd/v3Nt/vO2ZwrOa42vGyE4QTRSc+nVxycupU9qmJ06mnh3sSe+6diT1zvTe8d+Bs0Nnz5/zOnenz6jt53v38sQuuF45eZF3svOR0qaPfsb/9B8cf2gecBjouO1/uuuJypXtwzuCJqx5XT1/zuXbueuD1Szfm3xi8GXXz9q2EW7LbvNtjdzLvPL+bd3f63qr76PslD1QeVDzUedjwo8WPbTIn2fEhn6H+Rwse3RvmDj/9Kfen9yNFj8mPK0b1R5vHHMaOjfuNX3my8MnI0+yn0xPFP6v+XPvM/Nl3v3j+0j8ZOznyXPz806+bXmi+2Pdy9sueqbCph6+Er6Zfl7zRfLP/Lett37uYd6PT+e+x7ys/WHzo/hj08f4n4adPvwHJ4vTiCmVuZHN0cmVhbQplbmRvYmoKNiAwIG9iagpbL0lDQ0Jhc2VkIDUgMCBSXQplbmRvYmoKNyAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDEzIDAgUgo+PgpzdHJlYW0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz48eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj4KPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KPHJkZjpEZXNjcmlwdGlvbiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHJkZjphYm91dD0iIj4KPGRjOmxhbmd1YWdlPmVuPC9kYzpsYW5ndWFnZT4KPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KPGRjOmRhdGU+MjAxNi0wNi0yOFQwNTo0ODo1NCswMjowMDwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UERGVmVyc2lvbj4xLjQ8L3BkZjpQREZWZXJzaW9uPgo8cGRmOlByb2R1Y2VyPkFwYWNoZSBGT1AgVmVyc2lvbiAxLjE8L3BkZjpQcm9kdWNlcj4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTA2LTI4VDA1OjQ4OjU0KzAyOjAwPC94bXA6Q3JlYXRlRGF0ZT4KPHhtcDpDcmVhdG9yVG9vbD5BcGFjaGUgRk9QIFZlcnNpb24gMS4xPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMTYtMDYtMjhUMDU6NDg6NTQrMDI6MDA8L3htcDpNZXRhZGF0YURhdGU+CjwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InIiPz4KCmVuZHN0cmVhbQplbmRvYmoKMTAgMCBvYmoKPDwKICAvTmFtZSAvSW0xCiAgL1R5cGUgL1hPYmplY3QKICAvTGVuZ3RoIDE0IDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCiAgL1N1YnR5cGUgL0ltYWdlCiAgL1dpZHRoIDI1MDAKICAvSGVpZ2h0IDg4NQogIC9CaXRzUGVyQ29tcG9uZW50IDgKICAvQ29sb3JTcGFjZSAvRGV2aWNlR3JheQo+PgpzdHJlYW0KeJzsnXuh6yAMxpEwCZUwCUiYBCRMAg4moRImAQmTUAmTsHu287h7lD4gIYF+vz/v3VmTlNGvgQRjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB62B/P107aCFp2t6F3nbQVAAAAAABMdK6/3r5w0obQcrj79KXjDjtpSwAAAAAAqDmcLrcfemlbaOl//bpdvJU2BgAAAACAjO54vj0xSNtDy/Ds2/XskI4DAAAAQAPY04vIudNJ20RJ9+7d7eL30kYBAAAAAGSw+9kB94aTtouS44iDt+F0kLYLAAAAACCJzp3H5M0XZ2nTKIk5ee2xqgoAAACA2uiOl4i2ucsbaesoGUs0/olVyDhQkL21R+9P4YvxYXm9/1fvvbcW6/0AgDl21h6+JozzfeYYnVOG7ynlaG0nbSsgY1LA3Wno+WGnPYWMA+x01vk+zPzmRriE89fU29CPEQBAwu6u3GKvglGujxmlkzYe5LH/rGH44ChtJB2n+YENGQeY+BJvCdrtnSGcjhZjFABwn1POIXNGuZz9Ae+GdTKbgfsmSNtJx7InKGQcoKU7+DDkTLMfXMPJYd4FYKvsv94IVybeJsGEUh0LBdwdaVPJ2C0e0GcnbStog92Bdqp9AfMuAJvDHvv8fP4Y14DG97WwWy7gvmim84ZbM5z7ZtwGQnSuH1bOouu5njHvArANdodTYJ5QoOMqINpGJMJJ2mAq+nV+DyesqYJEiui3PwI6VQPQNgWnlPOxk/YWTLF2aecibTAVq9e08GAEKdgTz1rHFNez66T9BgBwsDuUfCW8M5zw9NNLWHs7O2mLadiv9bup1nigDDt3Ztv/Noeeg+P2AeThUkMvbXgC3j+6IFpLNwBbYu/LvxLegYxTS7/2Xjppi2nwa/1uqCIXFCF+3EkplMy7c50YwRw+NfTShmdyuUs6h0aIvxRPwL2gZDoBb6zWMo0ct7X6ZcZLWwxqYufC2hHGgoZ5FxouF58aemnDyfgScxtvQRs5wrwslyO2havjsPYutrGm2K0evVbaZFAP4hm4ZwbfyUYDGi4Xnxp6acOp2WwL2oOaGaW30rEAr6yfX620yRSs6SzyDd4/wDL2Ct6X3wiinaqh4XLxqaGXNpyH0B8t3fDUz0HXjDKg770uVt/BJrqLrH6rGaQtBlWwczJbjue49nLpC2i4XHxq6KUNZ+Ry2kbtdbfgCMzSXKVT++CZ1Qq/ie4iq73upS0GFdDpemF+5eKEogINl4tPDb204cwM52PjK6tKttV+0nfSoQG/hNV3r5M2OZ/VuwBbKccFjNj1v6WyXL3IIgg0XC4+NfTShhfg2jebj+tOil8JoeLUcFp975y0yfmsd7rx1z2QjRtWDyoBJCZeaLhcfGropQ0vxOVk6YarFqyaMoYYUHE6WN1cpIXuIsNan9uoxgVc7I6rh5QUZ1s6ONBwufjU0EsbXo7WzrTGKyFYyvoJtn49s/qQBnT4BRPsvOY1jw+CLRseaLhcfGropQ0vSjsyrqIJRWZ7Bnhmfae0+ruLHNePVGmTgVoqmnB/KavioOFy8amhlza8NNcWupfVNaFcnXS8wPq7Vn13kfXtH6y0yUArVU24f5RUcdBwufjU0EsbLoB4S+tM6lJwdy5WOmZbZ72gqb1X2m79MEXCGIxSx7aVMcptZYGGy8Wnhl7acBnO9a6p1qfg7vR4PoqSUP3SSducx/pDGproiQfIsTob+i7kVGjmhYbLxaeGXtpwKYY6z/WsU8F9ca1XNbfA+sLU21Ha5jzWq9bqV48BA5364v8ZrmV+yNBwufjU0EsbLsf11NGN4EK4ShXcnXOVorkR1ve7rb1Kc73DTtpkoI5dwsuPOgZbIFLQcLn41NBLGy5KZY0v7CAdsCyQipNjfaONyreHJYjWTtpmoI3DkPC7UUiB92douFx8auilDRemIhXXBelgZYNUnBgJd8tJ25xDv9rd2os4ADXVL6P+h39BFRouF58aemnDxalExTWR1L8NOM1IiIR92VWfAL9+00HV7gJ6jhVvXPkkME+90HC5+NTQSxuugFKVOzm0ktSvfad8tSSkFGo+qiHhiYKRCZ5oYNnjDc8aL2i4XJLvj7ThGrgmR68Qu3aS+lhPlSEljVvx/sX1593jwHvwRFtJuG8unEMcGi4Xnxp6acN1UKRyJ5m25hPWmQRESNjjX3OzjWG1szVnHQEx7SXhvmHMNUPD5eJTQy9tuBb0poeam09QnypAwompFe/yTyjDPUvbDNRQcwunaULHFTNouFx8auilDVdDoVaIqzk0OJ8oDXXTpNynajOmCUupXtpmoISWdq58wPYCDQ2Xi08NvbThiuB7R0mn0fkENYDFCQm3qdrF1GG9r1baZqCDfcLgqQmmHzU0XC4+NfTShmtC3yJfs/OJ3qXrVukT7lKtJ4imLBxL2wx0cEwYO3Vx6TjiBg2Xi08NvbThulB2NHsTPeHGueiKdPskPZs6aavTSPC18pPFAA27PuVnUhksuQpouFx8auilDVeGpia0ja6j/gARV5akObbSjYsJDY29tM1AAfuEkVMjnj500HC5JN8UacO1cXV0wzqPZtdRf4CIK8ou6R5JW51EylKqlTYayGMbrB8bh34vCzRcLj419NKG60PJfvt269t/gYgrypByjzppq1NIWTaWthnI0/5WuP+Qb4qDhsvFp4Ze2nCFBA3aIqE7QnVAxJUkaWW+ysXUhAUxbIcDfcoPpFquxLuGoOFy8amhlzZcI/InCbS9Fe4PiLiCJBXI1KhtUpZSq+2iAojYbWQr3H8cafyg4XLxqaGXNlwl1O8oa9nMfAIRV46U07ZutwpvUMqSmLquQqAs3Vam3CdIk+zQcLn41NBLG64TWRHXejXDE3Vumq+SlPQU9ct6EVKexhVKVUDIvvndx2NQbv2GhsvFp4Ze2nCtOLrRvZZNzSdKKki2QNKwqu8Y0RStileJbbOpKfcJwtkXGi4Xnxp6acPV4uiG9zq2U+D+ADuRShGS7k91GaqUpVQMwk3jkn4ZLUC3mQUaLhefGnppw/XiqEb3OjY3nwjFeXuknfrhpM1eS8pSKrbDbZnNTblPkIk4aLhcfGropQ1XjMieuA3OJ+JVwBshraihtsXUpG1/1SUbAR0bnHKfoBJx0HC5+NTQSxuuGInChi3OJ1c8QYuQVtRQm75JyTZiO9yG2eKU+wyRiIOGy8Wnhl7acM2UF3HbnE/wCC1D2kZLJ232OoYEF7Edbrtsc8p9hkbEQcPl4lNDL224akq3L9vqfIJnaBFC0s2pazF1n+IitsNtlq1Ouc+QPOag4XLxqaGXNlw3ZTNESc+fJsBDtARpRQ11nZmadEZdZcvFgAxIuDsUIg4aLhefGnppw5VTsn3ZVpsU3bAlrgxpRQ11nZk6JDiItfytAgn3DYGIg4bLxaeGXtpw7bjswb2UDUu4Os/lrI7EooaaJE5SKttLWw1kgIT7Jf83Dg2Xi08NvbTh2ilW17CZM1LHqSrZUytD2r3ppO1eTp/in5W2Goiw3b0rn2QvOEHD5eJTQy9tuHpK1TVsW8Ldrl2ZMG+ac9q9qUhfJ+WypY0GImx64eODXBEHDZeLTw29tOH6KVM02Uu7KQ1WU/lJLGqoZzE1accfRt4m6SDhXvB54YSGyyX5BkgbXgEliiZTDnlsjIqyPbWSOs920oYvpU/xzktbDQTY+N6VEVxWPKHhcvGpoZc2vAIKFE3iB4Da1BIk3ppa+vftkryz0mYDASDhPsja+o1HWC4+NfTShtcAe4MRpPXvlOzjslESH1yDtN0LSaszlLYaCNCn/RKaJqt+DxouF58aemnDq8BmjO0l4J3wAXeYQZ94ZwRODk4hqWajrnMoAAnYuzJGTv0eNFwuPjX00oZXAXMeIqm3fIPUs3e+VlIbYtWxmJrW/w77MLdHYrfr5sko74GGy8Wnhl7a8DpIDu8SMKH84jjDDNI7Yl2lDV9EWnKlkhwjoENJV5Fr+I8OizJe1qDhcvGpoZc2vA4499vvpH++TzOJsCUDyhqYSR1rVRxom7QloQ55CgiRLUm9ht47a0fMsvboz0HStowfOjRcLj419NKGVwLjYlJi49VsHlPJZxJCdCbxfGEGd1Lvaw31JmlJxho8A6RIzbi3ofd2/jW1s/4s9l6fXNcADZeLT4w8NNxCutQAzyGxuzb4w6w/IjMJ+oswk9jl93ar4MakbSt10maDwsjUM1xOhzW/oc71g4ydib90aLhcfFrgoeGWwvW6XrytSDiueNP6mknK2ueZwgy+SZ5pnbTl86SN1E7abFAWgVNSr2eXooz2R4lF38QnHTRcLj4t8NBwi+lSIzxNKOnDtV/1LvjN/jQUtLCCfE/VpN4Y/QdSpZUG1dL6DhCxG1J/Aqn0GZtJOwEZ55IshYbLxacOEmnDq4EnEVeyJvWcPJfsT8WycZ4wuOCT5EdCJ235HGm7nOromgLIKLwZ7pKUgXumKzf5fpO2JQ4aLhefOkKkDa+HLjXEE5SrSR2OeXOJK/Q+iEQcL8m9CL205TOknbNVR8EtIKPsZriepnGNC0WtTurTCQ2Xi08dHtKG1wPHG3up7r6B4FFlQxFT0XKVleTEr/ZFx8SHM14ZNkXJzXBXTze4Ck2+P6Q86qDhcvGpg0Pa8HpgyBAVmlGCpTG3yESiXStUTmK66qb+JLS0PLH+bX6AknK7yygV3J2iKs4m2FfQvDbxqUND2vCKcKkxjhJKmE2l4O4cBn57sbrFSvJTTHcjtcTXIS9tNyhJuVMNiRXcnYIqLqHZOjRcLj51YEgbXhHkx3mWKGgYHKnJu+QGY4tBaoSVPvW+6N6pmOgWDtraEsV0xrljsd8NpRxY/8IGDZeLTx0W0obXBPWEP/CbfCJ/8O7ZlyM6apPBE6nH3itvEZdWHISDtrZEqbYig2XzgP8V+ofVqyHQcLn41FEhbXhNEK8mpT9Nl3LhSDPsuBck0O6Bky75vmhOkCb+ls7SdoOCFFpJZVhG/Q//K/Q3q1dTd1YCnjLjo4gvXeqYUB0D/+AcgvSx8N8Qv7UP3PbSJ+G+cby3A8kRVobkG9NJmx4npHnkpO0G5SiTKRq4l+cLpeLqeJPmuadW2q111BKDnT34PrBYuxzS7fbcv8UrX3HAnlfEoaqBkz75vnhp06OkJhc7acNBOYbkgb+Cnn/X6L6II3UIGWg4U4+G+6E7nAKLyYsgXUxlzi2yrKP+0rFm9LHCxUn6Er7eti+Jq2R6HQLklMhfXV0JT3ZFzpqo4scBDWeq03AP7EniLOAb7Sof8264C+/74I71DqiugKyd9A1xehOkQ5o/dawXAQoyhv1iWN+bnyly2oQv5EwO0HCmTg1nZM4CvpE+xAZWQ9mbebGKOMdt/aYZku+L1gRpapMetZoUkBOSR/1izuXePQ8ldoh3xdxJBhrOVKvhvuj8wGL8FHTSiDcNV6AfK6eI06oV2qBPvzFKE6Spa0vSdoNi8DcBKNsEu8SmOM2F6D9Aw5maNdwXh8Bifhy6PQKsacQis0nH+CqoVCu0QcbjTOdhtqnLZHhV2Aw7/rxV4d8G726Wb/TnqaHhTOUarvRZwHTpZdY690LPJsbqVFfGg22SsTNI5z7n1N3qOhUpYIC/NZwr7VIBEafz5/4MNJypXsOVVnFU037PaCNzOcN/+NYnkCHhJGPyt9K2jzEkOtNJGw4KwV/Q4Mo7VUDE+fJerQMazjSg4dhbzr5AJC4455SC51r2bD4Uc2GLZCQlNB58n1rRoD/LAIgI6SN+GU7CK34Rp/uMZAMN96CFGJTpl/OASFxw9iqyNCYugW8S0b8To2JSRc8dhZN66q8fnUW2AvsJDU7GL34Rp/Gd7RloONOGhitUav2ApgPQwGegJzFwIXsuL/B8ZWSXcWP07SFLzmnjPWErDBkDfglOyjF+EddJubYMaDjTioZjPjjgCUdhbU4iZIbC9eBcCcVLWTc2RsaPRd8CZPLKsLThoBDcfUUE32vYRZzy/iLQcKYZDVdsPZUkQdTz2ddR2Lec3cDkh8I1u3bIUd5W2vh3UlPwqJvZCGxz1A+i643MR1cr/L2/AA1n2tFwvKWe/6F4L2FsVuQJzFsFV0oRC12M5Mx82qRPcpJF36owYIH5oFThTBXbdhYd7s0ADWda0nCFRByBoXy5/aF8+irweIINcZzk3JlO2vhXQiN+ACaY2/sW6+QUg3ul2Ar7Nwk0nGlKw5URcQRFDXzLvi7fuLUw1XxhQxwnOSPQSxv/QnIaAgNsI/Cm4a6ljrmPw9y/WHUiDhrOtKXhGMXRf/IX+XLKAqcR2XAeeHyRcGUzHDNujK6qhj7VDSR6twFzGs5J+2eYz23UrWig4UxjGq7EGXI+20q+qlSXbVsCTIk4K+HLVsjqMe2krX8i/QltpU0HReBNw6l4E2CWqZoTcdBwpjENx3oO+w/5e7p7LtOEMiSBxRlsOedkyLgzmub05IQiTgLZBrz6Rnwz3DeMvaruWGn/4kDDmdY0HPdovlE8wdhmFZ8fvxR4Yq69Q3jd9Dm3ppO2/j8DhheYgjcNJ78Z7hveLXGaXtregIYzzWk4/i1x2S/wfMXgHUH8Uhg4nMGec06ydLce/ZPuhpM2HZSANw2nZq2AuQWelfYvCjScaU/DMe8NuOVvtmd7MxTr3MXjkZQ3myCrrkbPSdgh2Qc1LgBOWNNwivJTvF3iFDn6BjScaU/DZZXcLSI3f85Wd+EowpdC1g75KFrWKdok5NwaLfmH9IGHLO824Hyjv3bS3j3Bu5qqdi6GhjMNajj2A44znePrLCKXWmBZwMZJDZxkvepoaS/SJ3ugRYUCVlj733pp757hXU3Vs3viDWg406KG4+5bnakt2KouBBPeLCH3cv5sgLzFFx36OmPfhNrEAqBkyBrl02h5kfmBqcXTD520exGg4UyLGo47EefzrGPboZFpVw4suUVtB3M2xpBzb3RskEnPJSp7/gIeWLsUWGnv3mCt5vPS3kWAhjNNajjmRJzPsy5w2WUpYpcIx/yhQyc0S94Gmk7a/DtDsvkqWrMCbkLWGJ9G3Ssma29UPWVMr0DDmSY1HHNpaub8z2YXTfDSYCkkkXSoffJyFBo2yGS8q1lp20EBeGqtvlFV0PANaw2uk/ZuHGg406SG4zsI4UFefoitCFy00o5ltpR0aAPk3RwF7+Uh2Xgc0rAJ+rwhPomXdu4T1rIGpbsPoOFMmxpOc7McttYnsrn9gcEjK+pR8+Stf3tp83Ombw1ZRMAN53qMyrVF1k1EVtq7UaDhTJsajreqIU/D9VxmeZrQKXLLinrUPHkzvvx7eZ9uvI6yWsALZ6dQnb1pBkaPdb73QMOZRjUca8PDPA0XuMySnVU4XgF1zpPNkLn+7So2X2MSBVAz5A3wKeTfYEZhrcNV+aOBhjONajjWXjl5Go7NLEsTukQ4NsR5UY/aJ+/AEOmTDjLe09SVFAIGOB8CTtq5CIHRZ5Wv1NBwplENx6eUbpnvYHylUpYodIkw7D3xsh41T+ZakxU1PmezkxO1HJShzxveUyhNw/HqVpVOQ8OZVjVcYHHrhxzD+H5kHVHoEgn0HqFBHC+ZpT+ytyenkUInajkoAt+ZhppfAtgO474peKqPAA1nWtVwrK1ydBpGFTo9jkHDMTPk3Z+uUtulV4FBCRgrGlQWpX7DWZqqsaoBGs60quFYN3fmGMZXbUEVukQYIg4Nx0zmYJSc03OeVSo39gBiGDNSXtq3CQY+tzVKV2g406qG4+zQnaWWgkqrCGDoyadyA0ZL5E6AnZzpQ51mg1Jw9ghVqGX+4EzEOWnnPoGGM61qONaihhy7BpVWUdCgS82TWYjixQzPmbrxarAFGNtLaVxT/IOzsbHChRFoONOshgssfj3IegbwmUUVuVQY1i6kXWqePu/+yC2uhAyrcd79FmCUMp20b5Nw9kbtpJ37ABrONKvh8g4SmiTnbYRxjZcsdImE9lxqntxNjF7I7qyZey9kNCgI44ZohdmoZzi3EenbSQoNZ5rVcIyFqTm/Ycb+PR1V6BJheP8T9mgDZGYrpJYlc97QsJS6Bfq8gT2Fk/ZtBsb0hb6Kbmg4Aw23HqUazlKFLhGGiAt7tAH6zDvkRKzOSjVgKXUL8C2lXqVdm4OzJ0Mn7dw70HCmWQ3HKJZyNByjtLRUoUuEYeoQ9mgD5FaxySS1+hyTsZS6ARh1jP53gIHPeXWLqdBwBhpuPTmnLTJqOEcVukQYIi7s0QbIbmbvBIzOSsNhKXUL9LnjOk4n7dssjA8ZdYup0HAGGm49PsMsxp9XjlkUMDRkQsqEndzNMxKTep9jsOrGEIAIvqVUdSrmE86qhk7auTeg4UyzGo5xHPsMsxj3m4o/nAI50HDsZLcEtcVNzssdHorbC4rDuJSqbjVxhLAd96HhTLMajrERW84wDnxmKS95ByrJXkwtP+yyctnqd6QDAvrcUR1H8xkNvzCe1aAtDQkNZ6DhyjoX+MzC7jGQQHZm2BY2OK8RvXi2GhSAbyk1ZzN0MbJfzCbopJ17BRrOQMOVdS7wmYXdYyCB7Hf20om4vC2lWErdAIxLqU7at0Uwbtlx0r69Ag1noOHWk2NV4DNL268LVEH+O7sta29WjgVLqVuA8bipGpZSWRdTlSUioeEMNNx6cqwa+MzCMhFIIfudvWwiLi8Nh9/IFhhyh3QUZQomBudiqrRvr0DDGWi41WQ9stisuqHzFUgi/529K2htXhoOS6lbgKHL0S9O2reFMC6m6voJQcOZZjUcX3+4rFcxNqvudESxA1si/529ZHIrLw2HpdQtcMwe0VHqWEplXUzVdU4FNJyBhluNzzGLzao72nr3gCroswdeV8zWzDScrucP4CFkD+gY2jprRGFcTNW13AMNZ6DhVpOVS2az6k41MwzQRH4VX7lEXOY5Jyjd3gCM+qWet+QLXxA6ad+egYYzzWo4vvLyrOcAm1X5poGtkt9NqytkaWYaTlcKAfDA2FmkngmWcT3ZSfv2DDScaVbD8R1MmmUWm1UPUHUHEuirGXiZv2ospW4Bvs4iFb0DMNZ1qKrNhYYz0HBryeukwGXVN9dattwCTRAkLroihmam4SpKo4B0+JYRa3pHHtiioKowCBrONKvhAotft9x3+YHLrG88TfDAtsgflWWebpkvZhWlUUAyXfZgjuKkfVtBzxcGTa9C0HAGGm4tee1x2Mz6Bok4kADB6lNXwMzcNByWUrcAY1uNmmZXxjBoquyAhjPNajgWt+50WWYFNru+8STBA9uCYPNMicMacvdHdAVsBNL0+YM5QlV1/4zVuZo2xEHDmVY1HFtCPXM9JnDZ9cO1Iwkf2BZD/siz7EbmpuGqegSDVAjGcoS68rh82wI1bYiDhjOtaji2+vLMjT+MZ6B8o+kdCdQCQScC/kRcbhpO0xIQ4IJxO5yuU6bm4CvP1bQhDhrOtKrh2MpSM3/HfC1PiAwEW4TiwWeZbcxNw2EpdRMwdoeraTscayAUvQ1Bw5lWNVxgceuW/Tvm13AoawDrCfkDjzsRl/vTKbFjD4jDl36qbC2ecUOcoh4r0HCmVQ3H4tUt/3fM+HJEZSLYIBRVbJbVwuw0nGM1DygB3eF+GdgioahJDzScaVTDsZ2WmptF5jvG9T+1zTVAHoqXdt5EV59rHvLTm4BgIEdw0q6tpOcLhZ7fEjScaVTDsSXUu0zDGBPc/3EEEQTbolc+7rJ37OHNZhMwviQr2sm/CMYOcXo2XUPDmUY13MDiFcU6JZNhr7j8CIJtQbHIz7nE0ucap+exAxjh23CsqaPGIhiPTPXSvv0BDWfa1HBsoze/ICdwmfaCy48h2BaD6mGXnYar7gkMkuBr3lRfTQxbKBTFAhrOtKnh1C6lsm5SeMZlGwq2BcVvZmDbJ5P9aK6rPytIZSAYxuN4addWE9hioeeNCBrOtKnhBhanSEo++ZuLfOPzTQVbgqQ3qmcyLn+mrm0zE0gCHX6fYHzWdNK+/QINZ5rUcGwNPFy+bSUKUx+c9dQOgRqgaMrA1Zww5BqmqBsCYISxd1Mn7dtqGIOhRtBCw5kmNRzXngiKJ1SRwtQHF6QewApIytg8i2n5E7WizvKAEcbUk7Rr69lCUQM0nGlRw7Hl00naE/D1oHznigcXWE52E90HHYdpg06zgDpQ0vAMWzD0RAMazrSo4XoWl25EDwI260YIJBaDbUAyMjnasOVnCM8MVgGFDPkjOEKNRTGBLRpqihqg4UyDGo4tDUfz7sHYeXEEj11xYCE00yH9Cv5uyDbKkRsFNMK4U6XGRQ2+s2PVnNQADWca1HA9i0dkTpXbEPdgcCRWgw0wUAw4+lWW/D1OarIGgBfGijEr7VsCx/bDAQ1n2tNwbD9jqtK2chvivrlYIsNB49BM+ZbYKoJ9ejhnayMwihYtiac1MEpaL+3bD9Bwpj0NxyaRHJGBjAnuCEFNJTjQDE2KmLqNR59vEiq0NwLf3FplKpdxzUfLaxE0nGlOw7EVl5M9mhgrvuPGuxpfI0FhaKr6HKlNBNtb0RxuK4T8wRJBTSHmKkhKzVXHAxrOtKbh+ASSI7NxYLNxguupI3MANApNU1DaRr8h36Aat6ODFPg0S41lqaync0u79gM0nGlMw+3YVlIJ3zvKL6Z+c0EyDkwzkAw0T2gRxRyNYb8RGNcOvbRvSfR8AVHyo4KGM41puJ7FG2KPJBZTfzhDxoEJiHYidHQWEbyUoTncVkBZ6huMx1ZYad++gYYzbWk4vrIk0ufAwGbmEk8g40AMokQG3a+FopsiKnq2AmNZap1lMYyiVskGBWg405SGY2yf21Hayfh2tIhwJHUHtENPM8IskTkU53+homEz4LTUN9o/MRUazrSk4aoZsGwnSSxn6A9Ix4EPiKbEC5E5FA9lT2QLUE8gGC7j1PoiwBYQLYWp0HCmIQ235ytKGoj1Dt/JzGu4nLDKBN4YaMaWIzGG5GWnIzEFVABf+3QlimU1fM9Eqte0TKDhTDsa7sA3XMndYdymsJJwQj4OPEG0pYimvwjFuw4qGrYDwXCJoKWl7VoCX0ikXfsGGs40o+E4j5Kn7w00MFq7msvJdeQegjqh2IF2h+I3QzI/I9e8GRj3qHhp3xJhXPHR8e4PDWda0XCcPdeoV1INr+JMYuiPdVZeAWJ6ohFFMJwGAjNq3cgE1tN+FeZqmm8uAg1n2tBwu8DiBaMzA6fBiVyD53AVVAVVZVD+DiKSZV2fHxFQCYxvxlbat0QYu63oSHBDw5kmNBznVjimp4C6RNwv2CC3dQLRSMqd42lWdTuKkIAqaD7ptB7G1KSX9u0BNJxpQMPteKs8mepvBlaj87hAx20YqteL3C0IPYURqGjYECQjZhxp11Jh1HA6TpCFhjP1a7gjaxLudu14zFabiPsBOm6zUP2gfJYVNGu6OhZ8QBECyZAZRdq1ZPhCoqPdCjScqV3DuYHF/gKe8PUyIgM6bpOQLUl1OVYECgtQ0bAl+KZUJc3QEmALCTScHmqOAbuCY6xH0tMjbhLouM1B1qIhZ5anyVN7qpiACiAZMqPo0CspDHxBkXbtATScqVjD7Y4Di+3PcLZ21HFYwxKg47ZFTzVw0lcyidrUdXRBAeohGTKj1KvhAl9QpF17AA1nqtVwh57F8FdYU+gd70Y+Yi4nyxkMoAiyeTG9rIGm3yMqGrZENedllyTwBaWT9u0ONJypU8Md+iL658KbfWIshecB/eM2AtnGIp9oANHj2BLGBGin+T4aKbTebwUaztSn4fbHUouQDOczvFJBWcMHAec5tA9d0XSXZkAguTgqGjbFgWTQjOKlfUsGGq5a15ZTUQz2Bx/KLUBe2cUKY/Kfk+sZ56s2zkA1VtI2EhF1l6/1gCSQROtyJQnGoHhp3+5Aw5kaNNzO2oP3oXDWil/CVbia+seAMoeWoRuYLuHqRAUNV4zQTQENN0LrC8zQcIZJw10CDXKrjSUkHOuOU36Cx7JqoxCpqFuakOppLs1ZVA70QTRsxrDSviUDDZeClXZrHSwxqJ4yEq6y2tRPrj3ScU3Skw2R9UfyUE3LHX1YgGIC0bgZod5JjlHDqWi4Ag1noOFGuZTKMDHuwy1FOHaFggWKQdbnN2E+JEq+q3jEgHIEmnEzhrRr6RD+kN9R8QODhjPQcGMwNxV5pt4tcU8MaB7XGnTF32ubLFL9IhxHWIBeGDfeSLuWAV9QoOG0wBKDugklU+dB2lsarj2OF28JwrnRr7ow1fYCNBbZGjTjZhRp1zLgC8pV2rU70HAGGu6TsnuhdzV2iRvlenb17hsBb9ANy2u35rqB6KqeJyxALUQDZ4R6j7xvXtlCwxlouA9c4Ruwr7yu4QXIuFag6/O7atGFbIMoxuHWoBo5n6hYNUxk4AuLtGt3oOEMNNwbhQpSn2lKxH3JOCyqNsFANySWjwiypiZoLLI1Wt+9n0jgC4u0a3eg4Qw03CtFt8L9QpjyUAH2xrUA4ahc3iSO5qz7GxqLbI/Wu2gkEvjCoqE9KDScgYZ7wcvcg9ZE3L1StZMJJaCCrs/v8qwY2Yxc81MXJAENN0rgC4uV9s1Awz1giUGdDFbqJrQn4m63C7bG1Q1l2xu77JID1fWQCN4crZ9IkEjgC4uV9s1Awz1giUGV9IKao0UR9xVRKxdRkAtlIm5Y9NsiU41oLLI9oOFGoWv0+IGV9s1Awz1giUGFDLKv7m2KuNtwRDKuWnrCgbDkyK092dUcd2iAOo5ko+cDL+1bBoxN5K20bwYa7gFLDOrjJK01GhVxt1uvYesrSIC00m/BKCBrSbe8hgI0A6NY8dK+ZcAYFiftm4GGe8ASg9q4WOnb0LCIuwUnHVuQRE84COb7pNIlUjx/aIA2oOFGaTws0HAGGu6Lq5O+CQ/aFXG3wSMzUiGkiTg/dzG67XddgdgAZTQuVlJpPCzQcAYa7msoatEXtq1mvy9c0WykQkg3RM+spgayC6G/7xZpXKyk0nhYoOEMNFzfSd+B/zR2YsMbmiINFkE6Q06vphJuSccGzC3CKFaO0r5lAA2XgJV2ax0sMagGZbpiR3fSuEaURRvMEihvv5+4EOFKas0dWUEyjRdgpgINl4CVdmsdLDGoBH2aYtdLx4QXfREHU9BOkRMJMsJVW1ssOkAR0HCjQMMlYKXdWgdLDGrg6jvp2I/B2OZIBVBxVREo7318NfVAdxH0990mgW4IvWOlfcuA8Jf1jpf2zUDDPWCJgX4GtSdBtVzZ8AAqriJo50gfuQrlkRCuYHSAHgLdEHrHSvuWQePHV0DDmY1qONWHQHVtb4q7Z0C16mfwQSC99ZHVVMKVVKThNkqgG0PvWGnfMoCGS8BKu7UOlhio5qL+/CfGPQw6UNKRD8xDuxYzvppKeY2aawhBBoFwEL1hpX3LABouASvt1jpYYqCX4VRD54Hm11NvwUrHGCxjIL3vfuQKlCupOGZrqwS6QfSOlfYtA0YNd5b2zUDDPWCJgVLqEHB3dqTdVVXS42lbBcTHh4z8AinHui8eH6CDQDiK3rDSvmXAqOE0NPGBhjMb0nDh2EnHeg2H5lNxWFCtg4H0rn+uppKu1uLFYKsEymH0ipX2LQNouASstFvrYImBNi6nQ3WT+wZScaGTDjKYhzgR59++nnIlFcdsbZdAOIzesNK+ZQANl4CVdmsdLDHQRKhQv32zgVQcdqBXwEB7099WUwPld3ciAQIKIB1Hr1hp3zKAhkvASru1DpYYKOIkHeAMdifp6LGDVJx+iBNxr6uppD2tkYbbLoFyIL1ipX3LgFHDafi1QcOZ9jXc7XYNZ++sdJzTsK33irtdD9IxBnMMtLf8+bWK8JzUG9JwWyZQDqRXrLRvGaC3SAJW2q11sMRAI0Pwh0462us5Nr+gigJV7VCf12P/f3Wg/F4NzQ6AEKQj6RUr7VsG0HAJWGm31sESA7Vcz8da2ov80v6C6qW2W7I5Au0NH/5UO+3pwFYwRECYQDqUmhlX0HAJWGm31sESA9Vcz66TjvoquiAdMmbQZUQ51DPl706aPem3athjDaRgLOO30r5lgDPvE7DSbq2DJQbquVTT7feBDdIBY0bD9lgQJxDf759NkLS7Pa1oiIAsjAcUWmnfMmAMi5f2zUDDPWCJQQ0MVfX8dYN0vHi5YFOcZqinyu8jsWifL0jDbRpGsVJzByRouASstFvrYIlBJZyddPRX0LiKG6pKjG6OQHy774KLeP610jECkjQuVlJpPCzQcGbbGu5LOfiK8j9tq7grRJxiyOfKo9kNpF+INNy2aVyspNJ4WKDhzNY13Jd0gIrTgpMOL4gTiG/2dd/TfqGVjhAQpXGxkkrjYYGGM9BwUHF6cNLRBVFoS0i/GGi/Dmm4jdO4WEml8bBAwxlouDtV9bZouUbVSQcXROmlB8c0Vjo+QJbGxUoqjGHRcMIONJyBhvumqjaz1KtQiqj5dNvG6aTHxiRIw20d2nbRL3hp3zJovOUKNJyBhvvFS9+INXS+1RO4IOLU0kuPjSmsdHSAMI0f7p4KNFylnq2AJQY1UlUqzhhH2x9VDU46sCAC7fH0tCANt3kYNVzNo6vx4yug4Qw03H+q2hVn7kuqih+q6TjpuIIIjK/0uVjp2ABpoOFGCXxhsdK+GWi4BywxqJTacua7JpNxTjqsYJyd2neGmh+ygAZouFECX1g6ad8MNNwDlhjUSqioy8g3LSbj6lrU3hBqE3FWOjJAHMaaG2i4UaRduwMNZ6DhXqnx2E7HuOVBBJzYoBTikxXIqPkZC6hgHGDSrmUQ2o4KNJyBhnujRhFndse21lSrvAlbwEmPjHGsdFyAAhgHmLRrGTA+GaRduwMNZ6Dh3qlUP3SnQTpyhJylwwnGGaRHxhhIwwEDDTcOX1AGadfuQMMZaLgPKhVxxuwbknFeOphgFMaN4+lY6agADQx8I6zWR4LhfL6reHWChjPQcJ9UK+JaknFWOpRglCA9MD5B0hbcCXxDzEr7lg5fUKDhtMASg7qprcXIC43IuGu9QrppFCbiOumYABUEviFmpX1Lhy8oKt6doOEMNNwYXvqm5NG1UOKgYoYAH/TSA+Odqt+4AB2Nn0iQBuM7l5f27Q40nIGGG8VK35VcdvU3HDlIxxCMwdiGK41OOiJAB4zdC720b8lAw6Vgpd1aB0sMaqeJlbxD3auqTdyDBlHW6PckHQ+gBGi4ERg13FHatzvQcAYabpxGVvK6Y8XpuEbuQWvoOnELSh/8wNi80Ev7lgxjUKy0b3eg4Qw0XIR2VvIOp1p3x7VzD5riKD0unvHS0QBawIGpIzAmJ620b3eg4Qw0XISm3u871w/SAU1gaOkeNMQgPTD+09TPFGQBDTcCo4brpH27Aw1noOFitFbutj+eVS2CLcFLBw2Moai/iJOOBVDDjm+YqTiSIImeLyjSrj2AhjPQcFEaPHi9Nh2HLItOgvTA+KXeZyugh3GgSbuWTGg8JtBwBhouSr3580mq0nGtJUMbQU1/EeyYBP8Z+AZatS+TgS0kOp6P0HAGGi6Olb41bNSj4zrpUIExTtLj4hsdjxGghMA30qy0b6kMbCHR8eODhjPQcHF0DFIuOldDvSoScSpR0l/ESscBaAIHNXzCFxIdjRmh4Qw03ARW+t6wY4/nQTrK03TSIQJjqOgvggaC4Bk0+f2k9ZBAwxlouAnaTsT9sjv4oCOtMgYScToZpAfGDfoevAIN9wFjCbmOvajQcIZJw/WekVBsDbDB0tQInTuFUlFdBUpTdaKgv4iOxRygBjSI+4AxJFbatwfQcIZJw1lmo/dlzpDaWBJI5cqql44KGEX8EDeoe/DKnm+w1arhGPc86Pj5QcOZSjXcFzsXWEx/Qcc4LYm6Uge0ANOJeH8RFUduA00wjjZp1xJhXF6Wdu0baDhTr4b7wgYW45/Y5nNip+qIVR37LsA7jI+HJUDbg3cYt/VW+jbfswXkIu3aN9BwpmoN93UHmbXGdh8Uu4OWI1ZRfaiT3SA6LKy0/0AdAcPtDb6IKFldhoYzlWs49mzAdqoaRujK7Dqco9JX4OY5SA4KJY8QoImeb7w5ad/SGNgC4qVd+wYazlSv4cyetS/G5mvfDr143xEnHQMwThAcFJ2080AfaC7yDl9AlGwzgoYz9Ws4s+NcT93uYup/pGUcFlOVIljWsPl3KzACY2a4zrwvY6WulfbtG2g404CG4xVxm15M/ePQM4Z4FiymKkWsrAF9RcAIjJJFyRb+lTC2h1PyC4SGMy1oOFYRhxf+b3ZOrlTVSTsPxhEra1CykAOUwTjkpF1LgrE9nLRrP0DDmSY0HKeIw2LqH3upNVUspmpFqKyhzqQIYGfgG3NVLsic2MKhZW0ZGs60oeFMx6cuusKuaGbnB7Y4T3CV9hvECBLjobYpFpSCcThW2aaSLx5ajjCChjONaDjGhX8s27zgBrZIx7HSXoMIImUNyMuCcVCY+srQfDig4UwrGo4va4wHxhsCKs5L+wxiCJQ1XDtpp4FSHN+o07J4uAq+cFhp136AhjPNaDi+V47yrmjHl94XV+X8uQ0Eyhq8tM9AK4yFqTVujG6/LBUa7k4rMWAbrwK+aGfHt1d2nHyLbb7XYAzG58Q4NT5MK2FvpS3IhXHcaVEtK+BLS6rZogwNZ9rRcGwHrXgBX9SzL9tpJLsozN9u4XToCDwHb5Q+j81KO9wge+tPYbjVX8HFOC1Zad/Ww7fRQc3KCDScaUjDcW2vVjNcdVF0I5TLtXb4/p7hfLT5roNndmVX1rE/lZKddT48CR8t5Yap9HwDz0v7tp7QfjCg4UxDGo5LVahJGyujZCout9PySx+zcDpUuC6iF8ZGop+goIGInT2ewof8rv0ADMaxWOHLw8AWDCft2i/QcKYlDceVEKiyu2MBdj1PvEfIzYV+WDr0DreVipLr6l7a2Qa4595ic6WTNi4Pxt2Z9e3D3PEFQ83kCQ1nWtJwXIl0dIiLUSwDk5kLHZ/MrmdvScKwdRirAd+p70Gqis7687TirnznCKNsqW+vIKOglXbtD2g405SGY9oRV/seEUYOpfZC5S3xTNRnBW8rXz5SQLm9kVba1WrZH+LJt2c6aUPzYMwJV3dSwwZKGqDh7rQUA54SOZzOGGdfSMTZLCvD9JdfsEEuj2JN4irck6SAvTuFxSH20tbm0bONvexNucXhqxjXEwpoONOWhmM6glvGmTooJOKy3oGX5Geh43Io1CSu9h335ekOPqyLceWr1YzbO6p7lx/YQqEnJQkNZ9rScEyjVsqbKigj4nyOiUvn9cvJdTRB2Rw9583/AztTV7Cz/pzy21SzXT0JzrcJad9Wwrg3sJP27Q9oONOYhuM5PwCPjimKiLis5P2aPTLIxyVRpElcdYkQMfauT94YVvn2X8oB94aV9m0dTKtSN1W5Wmg405iG46mQ07P6rxLGg6b/yNlEu3pQQMeth++B8Z+6M0SlSEy//VF5P8xANNhG8NK+rYOvpEHRtlRoONOYhuNZTNVThaOTAmWJObcgKTn7pePI4rMJ+I/cwqvUHLvDiuKFKHUPfMajnCt7DgS2QChamIKGM61pOJ5fsJQ3tRBYov5MzjLakHrRgP5xy+m4V1MH5Ean+NJvRH016l5M5UwIS/u2Dr44KEqIQ8OZ1jQczy+4k3KnEgrshko3Lmt9/Xo+KpqwVMPd8NlKO6gXOv12p+7FVM4uv1VlKLfQ4Rca7kFjMWjMnUrg3w2Vblt2anboHVJACwgEtzmOoj04qqDVbw+qkiofMHb5rWo1fwsdfqHhHjQWA5ZtOV7MnVoIHGF/Jt20geLyl5Mli1WrsK6mojXcGNZzKJa6F1MZN8RVVRgd2MLgpV17AhrONKfhWFZ0qnr/EoHpmLP/JFtGV6qMZdUZerJQf3JF7N/YH7nKSOpeTOVcE+iknVsBXxSstGtPQMOZ5jQcS3eRzOSxCyyoUpY9R9yfSDaM9LV86NF1JApvo0Ak4p7YuX5gjHXVeplzQ5yTdm45fNvhVEl8aDjTnIZj8Sdz1DLtTFC1Q4g7EZdsGPliU0A6bhTuXs8XiLhv9iwLqM+oejtcDWN0VE2502yiOxw03IPWYhA4/Mkzienn5EniRUXP4+QvqWaxaEuk4z7ZcQsLVVuppdi5vsCJGIr68CfAuCFOU0XmDHw/R0Xd4aDhHrQWAxbBlOfPJjQczxEZf6SaxdbxAum4V9glXO177fPZHwsE+UHVQ5tzQ1w1JbuMK8qqBgc0nGlPw7H8gvN+upvQcMwPcY1WDX01Uzo7PWOc//DSXgpyYN0B94aqVMtqGANTzWsE3wGIupK00HCmPQ3Hsnjms0zahobjPTY10Sj2etmz6yiDWCuc61dPOGk/Zdi5vCNQV1NVE40PAl9gVO3nn6JnC4EuGQsNZ9rTcIZjtssbt9vQcJz1YMkajldYfnPxqlYXJCgR5gcbTHx2x1Aquv+persn54khtQxAPs2vKwLQcKZBDRcY/MnbTr0NDcfb5zfRJv6T2B9sfFWV/5iOX7bWJq7cFrhXnLTjOXBuzdWVhYrC+IvUJe+h4UyDGo5jWScvhb4RDcd6YGaiTZwmvXHe7Ilc3F1FntmSiNufhnKBfUVV/4jVMIatksXUni0AyqrDoeFMgxqORUpkWbQRDcdamZpmUrkE0YPLsSONaB2UlHDbaRMnKOBu1UiVCJy7M+tIuPP9JJWVu0DDmQY1HMtdzXr734iGY016pVnUc5o0yuW0oUTRA/7GcG8R3oCIkxVwd6x0CHLgfHWrIkPJGIBO2rdXoOFMgxqOpRQxy6GtaLjA4+eDNIsGRouiDJuScaUlXCVP0QzkBdyt9qMaODPDNbxC9Gzea6tYhoYzDWo4Fo98jkFMG8WybOKAcQkjbepg7jsc57qdGodCVSPPVLKvPInOD+UDOoK2Z/U6esbIOGnnFsCnYbVpe2g406KG40gM+ByDmI4f1vZz4ixqSNtJy1plMcNGZFwvEVt1I5+ITqgKdYxOOhg5cC6mVqBuGd3XtsQADWda1HCBwaGsahwmDaesQojNz3RfhZ+IG5BxhXr7vuOk/WZg5wRSmnGcdDxyYO1VqU3GfNKz+a7rkAYDDfegvRhwPFeg4RbAuHSZtAeKt+vwIhqXccV6+77jpD2n5tBLhTJC3QvWnHJYfWQY5z11GXBoONOihmMpIcgxiEnD6Uvq8/h5x6eYU7izSISGZZyYhKtulp1mfyp7lNYS6u4uwjkyr9qrGhi3kKjLQULDmRY1HMujO8cgrjVGqoCRweTnLVHD9Xz2rOPaZqWqWMnIraVev91xEIxjnKoDzJqCd9LezcC3hUTdUio03J32YsByW3M84jp4nSpgZDD5eUvsLDnw2bOaBhuOlO3t+04jIk7XJrhnlDVzXUnPGBl9SuYFxm3J6pZSoeHutBcDfQ3iOAzKtYkDvhdAm2CNZJpojMZOcZCVcF8irpOOQDYa11D/ULfddhWs+yistHeT9HyO63tvgoYzLWo4fQ3iOAy6KTz2JTA5mjagJDuLRAjtnKlavrfvO5Uf2LBz4hGcRjpAeXCqY9XylnEZWd8ObGi4Ow3GgMMjr82gXJs4CEyOpj1PdK5SndUp7yTkJVzdIs72ilNw31jpGGXRc4ZGXz7qP0ynAt1RuLwODWea1HCBwaOsVy8Og24KDx1i8vOWpuG0PiRbqHDQIOHqFXE7pWUMr3jpMGXBupNCc3sRxmmvk/btE2g4Aw23EI0aTt3eWh43b2nRZ9zam81Q+9Y4JTlOdW8xS7C9dNiWoXrFcJ6BMzadtHdRGLuqaPy1QcOZJjUcR5PfrHZJXE88bWkIJjfTZg/GNQUKzo46+gXppaP3i+aEyCg7N0jHbDHappd1sG6H1TvuBj6nnbRvI0DDmSY1nLomv1xywhIFjAomN9OWdQKbNURc+1rXVHvp0P1H78N0jL3+XXBP1L1zk6uj0zedtHsRGNNwKrs+Q8OZJjUcyzjOed5yaThPFTEa+CqiXII1bMYQcjnWmOsQOiR1nIpEnAvSwVqHlw5YHqzr/VqH3cDnsr7mcAYa7kGDMVDX5JerWZGyHSt8O9BsgjVHJXu2ZuhTfBNF8IStMbx0PJbR+ZpScF9zi7fSIcuE96i9Ttq9UTh/m520c2NAwxlouKXk1FWziRuykJHAN2kmGmRPKsonZxh8R3kXuFEm4XRu03mnljqGby6nQ4354XcGzhgpe3/+gdFlnQ5Dw5kmNZy6BnFsWzMsUcBoYKsiyCjA7dy5gvxHRU3j1Em4CkSc9m6+z1x710nHiwjeqiYr7d4InD9OJ+3cKNBwBhpuKVmF1RwG3dG1RYFt8TKzqL2GdFwtyTiFEk7r4+WHmhZRw7HWMpsxeKsaFB5asBv43FVZ0QAN96DFGHA8srNSyQODQXd0dYhjU0o+27Qa0nFnm+0mO9rOoP3BScclyr6Xjs1Shr6JBdRnetaA6Tu1gDPx6KWdGwcazrSp4QKHT+oMutMRRYwCvrJUS2Lf4TSwWUjDoL1MVfqc+yhOOjLjHIJ0YBbSVgLuF94231dtP9aO89fZSXs3DjScaVPD9Rw+5RjE1o3BE0WMAr6SBrLJcn/UvqqqumecWgmn8wTLStr5NpiA+4X3166tvwhnIb42X3+BhjNtajiWnHKOT2w9wzUtprIJVVInd055z5GLo3SXEsUS7nbVJuJ2dWyDu3htgaOEefemlfbvBdaso9ZRAg1n2tRwLJLJZRjE9/NS9NsauHwkfwc86G6Xf9VZ36BZwmkTcZ3uEfbDuZkS1BgDa/w0vUHz+qqzsYiBhnvQYgxYbqzPMIhvq5ieHDdfFRjH5uG97s1xCusbdEs4VSKuhkKGa19PP5t0mA9N9tL+PcHqqtqxAg1noOEWk9Xggu35p2djLd8cwvRw3nvNm+MGx+N1KqwbpknQIuJskI7ELMNJSay42TGPWj1hZK0Y15VwfAYazrSp4VicykonBw6LHniikGUzcHnI2Jmo01zjoGpJdac4UL+oEHH6S1Hb3gL3BnMiblDzCs36+3TS3kWBhjPQcIvJkhJ8x4RreUXi2/KX2eF3BtUyTk2Vag0SToOIU1+Kejl20jEqCt8ulm+0dFnne8Dc9DxjRoCGM41qOJYnTo5BjAVSjihmmfBVezpu0zXLuMDu/RLqkHDiIk67gtuagLvTM8dUx04x3k54Ttq9ONBwplENF7Q5xbhbQcdLEuO5Nl0J8/XKuMGJr9fUIuFkRZxyBXeWH0cS8B649TXiOmkPDfe2Px1PmHGg4UyjGq5X5xTjj8zRxCyPns29UucS6pVx0hvj6pFwciJu5wdp16cI2xRwd3rm0F4URDaweuik3ZsAGs40quFYdrL6HIsCh0XfaChNZcwzFtxx0h0HPj+y6LtyUXinJgknJOJ0N/Td4hLqf7gTcQraO7FuhlOdhoOGu9NkDFia/GaJicaPIw583pV9JqvtGxds0Tj8py4JJyHiVCu4bQu4Oz13iDn6V66B+TQKJ+zeJNBwplENx3Jns5qLsG467YjClgzfUamcnUUi7JX22Jcpb6hNwhUXcZoV3KCpPY0U/J0Nnah/zM23VafhoOHuNBkDljubtTGLtcZd+iQUzi21IisVh57PoQwE+v7WJ+EKizi9Cm4zjXznYO4RJ1wOzX1+ihP0bR5oONOohuPxKssi1mehcDaf8xR5odr9nQuMTiUz+LKbH2uUcCWfqWprUbdxlNYyuA9rEBVx3L9Q3Wk4aLg7bcaAxausxyfrvlPZAnfO/RiCU4jOCodrSRVXp4Qr9kxVq+A22kckBnsiTq6ujP0XaoUcWwg0nGlVw7GM7CyveLswlmrAMQZrMl+2D7rKrXHlVFytEq6MiNOq4IbNVzG8sxvYgy7UYYT9Fyq9TWcOaDjTqoYLHF7lrU5wWPQfOa3DO0GKb+lxnAvFqZRpNVKvhCsg4uwg7eIoV2yCG4G5cvOOiIjj/4VqH03QcKZVDddzeOWzTGLWAo4kbuvhnUYk84u/qFxTLaDiapZwX2LGccbGBmn/RjmzOl0xgT/2AiKO/xcq3/tuBmg406qGY9kBkTegWXrW/UdqW21g9Uq69dIPVuGaKreKq1vC3TjfavZB2rcxsIYah3cnyzfFZ2D+X6iG9vHTQMOZVjUcS/I8b28A+8F9IiKu53VKzRyyc/okDauK6/T5uxbHFJle2rERrr3l8bYR+hL3oHA7cv5fqJJX6Amg4UyrGo7l1mbWSHL/5CSS+YHXJVWp/P1JXTKOT8Vxd50qgmMIzK6X9mqEC+pQZ+DvL3LjXr9/o8AvVHlfkTvQcKZVDcdzfmeeTbyn2t0ERBx7Ml/bjlp9TeOYVFwTEo5BxGk8lOHaa/uZaIR5K8sPvpg/Bco05B/j80DDmVY1HI9beXMl47nwPxQWcfuB2R+Fhe2dumQch4prRMKRizinLy5IwS2kzN6Ac5m7USQbrGoVJAI0nGlWw7FMtpluDRw2vXDpKGK3EP4HmivozXLU7YzrqZ8bzUg42ueQvnYiSMEtp0RZwxeXEnekwFa4GgoaDDTcg0ZjEDjcytziyd8uvOC22gJvgmq3Y2hr/Uvc9bchCUco4vQVow5Iwa2BfS/LD/yFAMciP1D9BQ0GGu5BozEIHG75PJu4K1PvlNpWWyInUciVFHbKmvRTqjjbkoSjEnH6ilFRiLqSAqc1fBM6Vj+6UMYLVieogIYzzWo4lpxX7rAusghX4sSGXYl3WrVpuG9sXyAGy7lSvTaX2CxdFAIRp66UYfBdvldb41Dq7pD9Fscok4QTPoJ7MdBwBhpuDbmnBpR5PDK/BppSW7sdtxu5dLqe7IOjcKqYhAvFthVml/ooS7reAsmd3h7ljs0LXHtaih0QUsVKKjTcg0ZjwHNvM40q0qTo6xUq72DXOWyZh6/yNNw3uuobBpvvUClbL7tCv4ZbrogrNN4XgzqGVMqNuNvtxLFXsdyKfh0rqdBwDxqNAc+97TKt6lms+uSca2icYi+Cjs0FUnQtqQab502ZLlq376WacrUTGSKuK5e8WcJAW76yMYqtpt7IC41M0RX9SlZSoeEetBoDlX7xt4j74eoJQjjCIZTyoIo03ANdS6pZ8r0vZeV3/XS5R+qQmLtSthHu4jJuLihXm/qAVsUVHYqVrKRCwz1oNQYsfmUP7cBi1hg0u6NeKFqMybseTIuuKtX0VZy+mI3u+4Ll6ifSmu6ouq+3s029seCHYrWp39CpuLJ10Wciq/mBhjPtarjA4ZfPtapk0R+xirNFm6LVsh/jl2JLzAtITcL2xSz8excqlxdJEHGqOsJd+c7G3RLFVkJ+Idm9WPiMvyq6+34DDWeg4VaRrywGDrNi0Km4/amo4fpOSp1n35eN0BQpN5798Nv/PHX76ItddO0GyyL9c5ZCv7lqqxRotP7G5Zh37/bFj/ezNKEuATScaVfDqWwuUnwKuVL0kSou4Oo4qu8DTRvjVhc3FJRwLys1BYs+3Zp4aDoalWFfxHYJAjfwnHyihsDcm7/aVBBoOAMNt45ss0qWt38Tsk7k6ZzEuVIVJfNf2B2H8sGKsK64oaCEey0SLXjhFdtZNfUTCTVtDdVP+Rn4+y4eVy8tyMy9BImKgkDDmXY1HM/NzV/iK5/L/3qcH7sUU/fHfhCw9lZRWdQnirbBr1h/K3hE6vBmVVfwObUwvatpGTW3Wwx4h+fJsIDr+WiXGrl3UnNvXe/P0HAGGq60Y0KvgcPJdSuMtMdTELHzQW0FDa/oKW9YfHhuQQn3WVtQ8OLLRJyiZVQUMjAg8Rr9x6X3tpuybm99HwQNtGVuAhFaH/NFaTYGLI75fLvkZpBr8IeZROLOHr5mEOFnWDUNJmNYNX1hl2VxDpISrmyt4Hy3X0XVqFBwPMj/PIdw9v5on3Hen4L01FvXZjgDDfeg2RiwOEZxfra0QvqcPu7zhz8rmEC+qXgl9Zey7ZymWKADSja8cdIGzIg4PcuoKEVlo+QezMqopzPcN9BwpmENFzgco1jlE03lV0DdK6m/qFFxs93iip2vdYuWhhZtmziVij4MBS2ZAgqOk5LL91WRd7KwANBwpmENx5Mwp7BsYLGsFapfSf2lK97XKcJgp8zsC1pyihlRMvsV7/bbhYJmTAEFx0zJg1Mror65FxrONKzheNJdHYFlJbMO9eEIIqwENadtTvQZ6QuaMbEToaQZsVIPLXcLCo6fksnneqivszo0nGlYw/H8Skl6NQUW09qgyu6+UbSouNiCatGdQZN7bfqChoy+J+yVbJKCgitCL32fFeKkb8p6oOFMwxqO5+56CtOKH9pXD9VtyJhDi4obXVAtKuGmb23ZfeYfbwpaahmg4EoRpG+1Orz0LUkAGs40rOE6Fs9o6naUPDD0kXAyuXq0qLjPBdWiW7vn1HlhEfdqjR1KXjwKFFw5UJz6RpUrINBwpmENx+MZzUEku4HFuPpxJOHVhhIV976gakta9X48w0iUij5UnyXlTr5h2B0ouKJgEn6htq4i30DDmZY1HM8jgcY21EWNEq1brB0lKu5in2wqWlqzJMFa8tStr1j8WVSwxfEEUHClQYeRJyrdxAINZ1rWcEGzazre/JVR56vgMpSouNPfVF20Mm/ZGnnZh+qPTUoaikDBlQci7o9KJRw03J12Y8Cz6YzoEAHp0xo0Uus8shAd2+avP5XVfdGLLtzmWFjEua9LHlX8EHGqlggQcT9UO/VCw5mWNRxPgziqnZ88g69mrrXOI4vRcXZD6L70ZCh6ycUdeQo/VI86knBQcFJgFn5QX2/fX6DhTMsajuf20hQ1GNSmvtNiSeoHKlTc1ReuyXPLA7TBh2rYwsDXCvqt36qeeqHhTMsajqkLG5l9qG1/od55ZBU6Mj9FcWvis7WHarA84wwsY2vjbYSKJRw03J2GY8DiGp1v2IzxjKMKq3pskI51Wdy68GzqoTqsDA4gZ1PjbYyaJRw03J2GYzCw+EZU1GDQYOQZRxbVCjgM0uEuyOrfy3Yeqle6uQQko6O1jBiXmiUcNNydhmMQWHwjbICBLXG/OLqgVoEbpCNeioQaoK2IOLQT0cGmF0SqrUj9BhrONK3heApTB0IL0SXuG0cY0zpQ0i6OnaQy7k2IOBSjqmHDIq5yCQcNd6fhGDB1Me3oLMSZfQ8cXUTrQUe7OGYSO/G0L+JQyqCJzYq42iUcNNydhmPA1KdgcbOrBZQ9XkgpjjCgNdE1n4ZNbqZY9BCJ8gyUcwjIZ6Mv01Uec/8CNJxpWsN1LL7RHuq52TfAP66WMp510XiJasYjope2nZGrJxtAgIhNirj6JRw03J2WY8DiG12X3wcbbGr6QtWV7fm0XNyQ9Yjopa1no699/apNeulxURwnHXICoOFM2xousDh3o52D29/7M0Xdle0EtFvckPmW30vbzwNOZdAKTwmcWtpY/4CGM21rOKb9RsSbWbYs4qrfU0uAivO36MleqOmlPWAAPX0V41p9mxqjkZdnaDjTtoZjerMi3RBntiziGtiQQUGL2+IIbm0v7QM56Ainmv0gPUCKERoZidBwpm0Nx3QQAu2GOLNdEeeoA1ktzaUASBKsvbQXtISOICaAkV2QHiOFoE5DiAENZ9rWcFz1Ah21oZsUcW1syCBi19ZuHKI18paCgn4iNdDSiItybWcoQsOZtjUcU2EqQ/5og2f2tZLNp6IL0neEDrJtju283GAZtQ5s+zPxpZMOMh3QcKZxDTeweEd5ZOovm+sT5+ljWDuHQfqmEEG4zbEREYdl1Gpofj21mXXUO9BwpnENF1i8u10ZTN3Qftob1lHHaWRBlbRSpQURh2XUqmjjVxihoXXUO9BwpnENx/Vr5PgdbKlT+BkLS+O0sKBKXGxcv4jDMmplNPw+3doOFmg407iG45r/edLRPZO12rgeWcLXBtUvqJL3i6lcxGEZtT52J+lRw0N7My80nGlcw3EVpg485lb+tFoIHmqTVL6gytDyr+afxdXRxwPwYwfpkcNAgzMvNJxpXMNxFabemJpcN5zE/6W9V0Fyal5QZenaXK+Iw9motdJeKq7JmRcazrSu4QYW9/hqe3ZMx4OpATvhllBty1+mgzcqrdoeLE84QAkaS8U1mIQz0HAP2o5BYHGPbTH1i2Odj6tl4KG2kEqzAGxnp1Up4jxXNEAZ6t7V8EJj5ah/QMOZ1jUc26/Qspm8b7Y+9erZgtYetsJh4PnCUZ+IazPvsS1q3tXwwqnV5Q9oONO6hmM6MZX3tPaGXv+e6TvGmDWIr022OM5oVCbimtx8tEGqLxO/E5i2bysAGs60ruH2LO59ceV8sWkxFRcsY8DapLIsgGOORk0/Cmz7bIbqXqXeabrDNDScaV3DsRWmMj+xWtsVh41wSdRU2+C4g1FPE+xWNx9tk10vPZ5yaHwDCzScaV7Dsc37gdfurqUC1cHxBqtdqqlTLiFbahFxzW4+2ir1TsbX1s8IgYYzzWu4nsW/O9x7DGrc1D4KFFwOdXQ4uBbZcVNFRgQp5waxQXpYJdH+FmRoONO8huOrD+CsavjGDWzGlwMKLpMa2oyUkXCmhuPokIRrkwpVXPsKDhruQeMx4Dpt6wv+yXpX/X7agJ1B+ahPxV3K1b310r5OgyRcu1Sm4rag4KDhHjQegx2Lfw98CfOrVnG9LRCiDaD8CNVLydST6nO3Wt99tHG6XnqALaX5fXC/QMOZ5jWc4dNArO1F/qhWxV1PXYn4bAPN3WaKSjjNIq5gOhLI0J1qmI2H40YUHDTcg9ZjEFgcfODLeLA7Dnw+cHFxZYKzGdSm4oof626VPkZ94TgACXbqdylvav8KNJxpX8MxPvvKJOLuOMVpmBGuPTIS5ChNxfGX9nxGQqOIQxJuM1jFrUau29gG9wc0nGlfw7GdtnUr+uZte0Y/aDm7cmHZFBpTcV4iEAqPbEA56pbolC6NXNzWhiE0nGlfw3UsDv7QFXSkjiXVy7FkTDaGvlSckwmEtm6/KEfdHLbXlg0etrgBGRrOtK/hGIsabrdzWVf0zRuvQMBxoysVJ3emlK5uv0jCbRKnaE312m9pF9x/oOHMBjRcYPFQyNGdpnnjFQi4EmhKxRXr7DtGL+39H0jCbRYl0/FWBZyBhnvQfAxYUxdD+TdwJfPGK2fXFQ/ERlFzbIPwLn4tPUbOSMJtma/pWHZxZMMCzkDDPWg+BpxFDSJleQrmjReG05YnkfIoObahcFu4T5yG34DccjJQw+E0CA2/i994OXTnOeik3VpH8zHoWDz8Q8ote9KwqnbtkYArjooTVIu3hftEQY+RIB8FoIHuWPy1eug3V4UKQFt0rh8Kzxsvc8j5uPGXQDHk29yepENwR7rHyPUoHQGgiH05HYe5F4BGENJxlxPyb5LshPdEOukAfLMLkkFAW1/wzv7IPh9j7gWgMXYHH8olZi790Up7DER3gynaBNbLRcFL+w50srP+PLAMOcy9ADRL9yXkeCaOP67BOyvtJ/ihC7x3ewJN+SexKIjXdADV2OOJ8M16wNwLwBawjkXJXe4zCJ5ZqhDcDCZSjD1OLxaE29VKOw/U8zUh91lSbgi9P1hpNwAAJdnboz9TvAReviYQZztpf8AnR8myBi05KNn9cDifASykswf/NSUvHq7XEM7+S7t10oYDAATprPX+FJZPHQ+Gx/zhrJU2H0SRrmnQsZ1f/NhUHWEANbG31rrvvlR9+M/p+58OX//bSZsIANDHzv6fO+5vhP/p/f/pA8+kKjiI9xYRPWfrBwX94VDYAAAAAIDFqOjxK99eRL5J3h2k4gAAAACwDCVnbUmnoLScl4pGvwAAAABYgpcWLX+IlqfqCcMtdJKBAAAAAEAN7KW38T8jeFpoL+37M0jFAQAAAGAaRdmnO1I9RqTLcj9AKg4AAAAAcVQl4R7IlKeK9xT5BKk4AAAAAMRQloR7ICHiBE+omACpOAAAAACMoS8J940rHggVPUU+QSoOAAAAAJ9oTMJ948oGQquEuyEVBwAAAIB3tCbhHpxKRsLplXBIxQEAAADgFb1JuAcFG8Vp6ewbA6k4AAAAAPyiOgn34Fyqx4h2CXe7XX2hUAAAAABAOcqTcA8KNYrrpf1cAk5QBQAAAIAxVn0S7kEREddLe7kQL3d+BQAAAABUsDtJ65GlFMg+9dI+Lmaw7MEAAAAAgGLsIK1GlsPd7XfXS3u4hh6pOAAAAGCzqDsVdBpeEafwfK1JrgfOaAAAAABAL6o7oY1xtXzBqE3C3dBmBAAAANgmXZDWIAk4rmhUKOHQZgQAAADYIjU0FBnB8USjSgl3Q20DAAAAsDVqqmV4xXGEo1YJd0NtAwAAALAl6qrAfMPRx0P/ORUT4AhVAAAAYCsca6tleMVTx2NfdzxuAec2AAAAABtgH6Q1Ry49cUAql3BfnLCgCgAAADROPecyTEAq4hqQcLfb1VGGBAAAAADaqK4l3DiEIq4JCXfDgioAAADQMvUvo/5CJuJakXA3LKgCAAAArdLEMuovRCKuIQmHClUAAACgTRpZRv2FRMQ1JeG+uFiKqAAAAABADzZI6wtqCERcaxLui3OXHxYAAAAAaKHqpr4xskVcgxLuC49tcQAAAEAr+CbFSq6Ia1PC3W6DIxk0AAAAABDmMEirCi6yRFyrEu6GbXEAAABAC7TTT2SEDBFX8TH3C8C2OAAAAKBumtwI90SyiGtbwt3QLQ4AAAComV2jG+GeSBRxzUu42+3qSccSAAAAAIrhBmkdUYAkEbcBCXdDcQMAAABQJ3YTOiVJxG1Dwn0RLPmwAgAAAAArXZDWD8VYLeI2I+G+CHuO0QUAAAAAHrpeWjuUZK2IO0sbXJS+4xhhAAAAAKBn56V1Q2HWnfXeS5tbmh4lqgAAAEAFbKAY9QO3Ij59Uct6DUm/K87fAgAAANTjNCi469GVvaBbHJ++tF12KHrFcaDiAAAAAN3oaCcSuuJa0i0MUNFl5uvhfsndqeQ1Y6BdHAAAAKAXHQru+r09rfB5pG5ZhEqadP2tCd2rKIRFuzgAAABAJ0oawv0d1dkVtee6pIlGUQl36f5f+KhhhRsqDgAAAFCIDdIK4cH38uE3ZfuwLRBxh5L2XF52oO001DZAxQEAAADaUKLg3ttY9CWvPSviiq7ufjT0UFHbABUHAAAAaEKLghvsu2VFt/Nfp2svy0q4EQOUNH2BigMAAAB0oEXB3cb6V5TdgTYl4nYlFdR41+FOx4IqVBwAAACgADUKLnIy56GkdJoQcUU357no3RoKWjHB4NAvDgAAAJDE6ahF/WsoMkLRJcwQs6KkhLvaiTumZEEVXX8BAAAAQXT0g7szdSRn0e5oY/vQ7vTlTJiprdCyoAoVBwAAAAihR8F91jK8UHQZc1zE9eUMuMz2ONGyoHq7nrqUgQcAAACAdHZ+kFYAv8yf4lS0OZobMaDgCVuTdRW/6Gj5e6fvVg48AAAAAGSw07Kr6vZ0LsMUfUGD3MfVCxbHLpJwXzewL2fSDGe7ZuQBAAAAIJ2ul37u/2c4zNt7p2SjOPt2bVvu0rHteJ/sQzmrZggL7yEAAAAAcrC99DP/ieXb4gvmwt6KCgoWxi6XcF8chmJ2zYGGcQAAAAA3hyD9vH9i0TLqLyVF3LNdBXv7nlbeTEUr4ihSBQAAABjZ6SlFvc1Wo35QMB/2tCutYFGsW39Di55FNs0V5Q0AAAAAD52itM2SatQPSoq4v4uGYtd0STe1nH3zoLwBAAAAoGffSz/hX0hK2uyHcvb9XLIvdkWXeGPVHJZ255LqBQAAAABGcUH66f5CsGluFFzY/N6bdix1uZnDGaZv7lDKygVcfZfuCQAAAACe2R0H6Sf7C1eX7krZ3WnF6ihyJJxRVdzwRZ/nDAAAAAAe7HtVD/g1/URG2IVidtpyG/AyJZyups03LKkCAAAA+ShbRCU4nKkvZenVltJFA0HiSlPj5huWVAEAAIAsOj2Hov6QuhHumV7aCWoWnq81hzIVhypVAAAAIBFb8qT4RRC18++l/aCFSMIZZSWqXwxHNP4FAAAAVqKtjuGW1BEuQrFq0RLQSTijT8WhvgEAAABYhaozUX84EWqVguducUMq4YxCFXdxSMYBAAAAi1CYglt5NOo8zYg4agn3xWGQduqNK5JxAAAAwDwaU3AkpQyvNCLi+nlPU4IzSPv1DpJxAAAAwCT6ClHvrD3cfhFOVUO0RHgknNGo4m695XIWAAAAqB2nrhD1DlEx6gfFGvDywSbhjEoVNxw7RocBAACAStmfVGoaumLUT49VOrwCTglnVKq429nx+gwAAABUxu5Y7hzRNVyzztWao3IRxyzhjE4Vdz2hwAEAAAD44aByDfVG205kjKpFHL+E++IQpN0c4YI1VQAAAEDhkfZ/ZJ+MusB5rb7PU0TCGYX94h5gTRUAAMDG0VmH+qCAgjMVi7hSEs5oVXFX1KkCAADYLJ3STXB3yig4U62IKyjhvuh6aX9HGbA1DgAAwAbZ6Wwk8k0o+Gzu9ArZOGUlnFGr4rA1DgAAwNbQLOAYDmWYZFefiCsu4e5h8kozljjCAQAAwGY4qK1iuFNYwZkKRZyEhDNKz9F9cIaMAwAA0D66BZyAgjPViTghCXfHqY0UZBwAAICmUS7gZBScqUzECUo4o7VI9QFkHAAAgEbRLuBuvVyVYUUiTlbCGb3lDXcg4wAAALTGzp2VC7hy3UTGA1SLiBOXcEZxecMdyDgAAADtoLqNyA+yCs5UI+I0SLg7ejfG3SDjAAAAtIHmRr6/XE+ddJgqEXFaJNwXVvWLwRl94wAAAFTN/lSBMLl6HVmTCkScIgn3RXdSvKR6b/+LUxwAAADUifoahgfDUYeC+2I3SAdjBl0SztxX6QfpmEwynKx0iAAAAIB1dBVsgbszOOlIPaP87NSLGrX7hO4l1dvt2h80hg0AAAAYw9awgnpHqh1cFNUiTqWE+6LTXKX6AJvjAAAAVMDOVbGCekewHVwUxSJOq4S744J0dOa4YFUVAACAZqyvJAGnpBR1BLUiTrOE+2Kv/9Xh2qPlCAAAAI10+rv4/kdRIcM7SkWccgln7hngCl4gLl5h8rcgnbVH/8vBWvWjCgAAmmd3OA3ST8cVhIN0wKZQKeKuVTxsK0jGPdJxnXSgBLDHUxi7O5ezP3TSxgEAwFaxPpR+DGahcRvcCwpF3FV7zH6pIhm3ud1xs1PEFVUfAABQnP2xogXUO4OSfr6TWOkovVONhLtTRTLudi9WrSmq6SzdYzGcthGPOnCen07ayXRi4XHShukkNgKstGGbp5KH5X+Ckw7ZMpx0oF6pSsKZapJx9xNCpEPFzTpBrXib6tYIXGP+CSvtZDqx8ARpw3QSGwFe2rDNU5eEu6pfRP2PLhFXT9z+UH4M1y8n6TjxkqCl+07aaHAn0A/2D6y0k+nEwgMNN0psBHhpwzaP8g75L1T2iq9JxDnpYKRxqGB4WukgcZJ4DlpFr1oNE0jH+ThW2sl0YuGBhhslNgK8tGGb58jz02agt9KxWoseEeekQ5FMdxykgzeDdIQYyTjJFrk4eQLZGI9jpZ1MJxYeaLhRYiPASxu2efY8P21qhio3z/bSYfvBSQciC90FDu3O+DZkBaaGyqO2ybt/y7DSTqYTC0+7v+gsYiPASxsGND8ffzmrbgY3QS8duQf179hSvKbqpWPDxO6UG5nBSvuwcQLB8J7DSjuZTiw80HCjxEaAlzYM6H06/lBnCu6HXjp6X/TSQaBgd1Rap9rozi87EMTmhFScJIHgFs5hpZ1MJxYeaLhRYiPASxsGlG+Iq28X3CvyErkJCXen84N0LD+5SkeFh+wk3DdDowq3DgLNTZzESjuZTiw80HCjxEaAlzYMaN4Qd6mrEHWMnXT66CIdAUr26tqNnKVDwgHhoHXSvmyYQHYX41hpJ9OJhQcabpTYCPDShgEzsPy287m20fNdWMTpP+d+JQddFQ5H6XgwQHpQXDNp4PoIhLcxhpV2Mp1YeKDhRomNAC9tGFCxZeuTs5OOCxWiIq45CXfHyS9Q/9FJB4MeRyuSQ4tDsAoC6X0cx0o7mU4sPNBwo8RGgJc2DCjqYvZHA2uoT5CmNdZR2wlbS9lpkXGDdCToIZ8PmnyPqIFAfSdHsNJOphMLDzTcKLER4KUNA2bH8+NOpr1zs8VEXKsS7o4OGVd/25Z3GF7pIOJkCPS38gMr7WQ6sfBAw40SGwFe2jBgjPSu+2eufa2t4KaQqhux0o7zokDGNTdaWbLyEHEiBI57+YaVdjKdWHig4UaJjQAvbRgwxvP8uhNoZxPcGzLr1U7abX6kZVxr4oRpoELESRB4buYLVtrJdGLhgYYbJTYCvLRhQE13kbNreKKXEHFO2ukySMq41qZ7tqmgyRYs2glcd/MJK+1kOrHwtPajJiI2Ary0YcCoOG7rcuyko8BL+WTnhpo67JxQw5HGOoswbtxsb+OgfgLb3fyPlXYynVh4oOFGiY0AL20YMPLdRZoXcHdKB3lDEu6BSN+4tmpGWLvgOGnvtkdgvJ2/WGkn04mFBxpulNgI8NKGASPcXWQTAu5O2RW/po5nWMj+NBSNcWudRXrOWLVcI62UwHk/f7DSTqYTCw803CixEeClDQNGsrvIZgScKdzrd6ubyPfHklFua4Fw8avc5eyP9oHzp7A0/bnVISlHSBvVq7DSTqYTCw803CixEeClDQN3YqOZl7PrpB0vSkERd+2knZWjK1fj0FRnkW6RGLt4+/GHC3cjtqV4KyBkDe5lWGkn04mFBxpulNgI8NKGgTtHnt/3FE1XoUZY9pQkYPPrVod+KBFmaTdJCQscPnWRP3YL/rrm532VLLknuVhpJ9OJhQcabpTYCPDShoE7Hc/vO0abjXwXUOrAho2G94W9Z097NtUwY/497uqnXrtsmP2CYXuvbaLs7TwTt/2y4M9txbc0NmCh4UaJDRMvbRh4UHAT0aW5o7RWcCgSYiftphK4V1WdtIOE7GZfL85zj+vD7Ff4Ep6ANdj43Wpdy4SN+p0IftS6Oc3NvkScN1TDMEqJEmDsO3riwFirWnEO4oN+xtfrgtzublYyd+x+gHVAw23O70Riw8RLGwYelDiqYegPLT30EuFXy1trDDdLd+RJx7XUvmVuAlhYVDr3itLU6nMTQMNtzu9EYsPESxsGvhlmJt9cwnHDK6gv9MyRbklZ0MGRjmvpkIYw7eri94K5HZ+W0QeQADTc5vxOJDZMvLRh4BvO9BAScC/w7j1EF64Y5Om4TtojOiae5HdWpHZnRByej8qAhtuc34nEhomXNgx8w7WYet38DrgPeNvEId05xeFEF/yWEp5h0tNVq/MzIs4yeQDSgIbbnN+JxIaJlzYM/DBMzrxphM9+oIC5ONVLe6edpR1pZ2loKXU6DbfymTY9vLEjThfQcJvzO5HYMPHShoEfqBdTLyc0KYvAu5iKRNw8+2PID3Qn7QUd/ZSfq7u6edawdfcTvr5g6k12b5l2/3pnLfsvaffjyqHAtWIwarivO3XwjLfqEcC/u2VX/3VY5ffXte5XOrL2xNtzXeTrXjy+OS1SD2LDxCd92/5pcHRpBk2y+/n+Q9UtDNdBuZj6pd82E7f1TD/issFb5DJyl1UbWkqdbvG9Xl6Eqa/LKJveudPbV196ulqpvfs4+/UaTlznAVr/djHGa03aEb9T6TPJ7uDD8P5t/dHSmX2/wsfvN/SrFn5iw/TT7693vtebFQjH3Q+d698cupwp1rE693kv1kbqQWyY+JXfY4/9xxnL98FPFtDuY5oIGxEkH/c5Dei3GdgP3GpojY+Zncs4kquhME++Vfj13zc5xK+J08PuGNHcFKe+7CYW2Af6puSH2NUu0cPMuKDXcPuJlyOaExYni8wvJ7vwa8Iyv7vI1ShPG+qig/vsMr52aljftzqtGtixr/ErvqObWgAh2TsfjeRlA4d7EiymBg/9NsvEIKZhy+fdr6dz5zRR3UlbTscw4WbS+ViT53a5z89HPmn/f6Lrp75ymDwFbJbDXMHy4Ltl3xRTRM+f2flh6lrB5biyGmIN100798XZ5hm8n9/Oeu0XXSMs8XvyCLnp0+emLuJfrjE5/q5LB987C06pGVa8M8S+w8/+5Q9RefXE5Zj1S56+W333/5OR99a/e7+Lf88yC+NfwLfJLG8x9UqS990ABU7bwmrqSvbH9TquoaXUySHpkr5yWDc8I5+0v/8/reAenFLn/p2bMvaP5/k/zryG2/nZoTbY6PfTQ6rhbL8klINLN9ct3AAxLNACYd7v2UOAZ1Vc5Av8imt8fXr94O7mx9mPt27hN0aNW/bny8bGF31y2ns+kv9niTkNZ+IC2C0yJtru/Jrq3gKG2ehGuPR0a9mtM38sJQFO2ssKWavjGlpK7SfcTHwfmJSF3cfHIx+0P/+9aAfp1SdZuvRR9/VsWfAgndVwbtHlZo+mpYNQwy0QIz+kqtRlcvub+RxZzNw/v7slDSWH6bRK5CL+7xoxK16dWZm7WfDS8+SBW/SdsT/3s39p1oyNL4Jd5+2Pz0vu1l8gZzVcfApbVloftYbzKMyUxdRr8Nsp+6CgyMG0qVuOts4aHddJG0vHlM828TvDxHd+yt/Jiy/up3hZ/yZ5GBZ+953rvG6f0XDzB8r+XsqudiURMg23SjbcQpdg6soipLn7FWb8PiycDCYfypGL+J//Xqbpb8veIH7ZrS2bm9Gh38T+2M/+pdlHohAlYXgc192tWQ03MS0uMSe+lMqZ75quThtxV6SOqm5m+uFTgSZcySzUcQ2tV0/lzJJXjKcOTv380sgH7f3/5k7vesavM3JZDuSJ2UfLtIbbD8sv5da5kgyVhluez/xmgSB+ZZfw+jut6sO038uvN3U2TuQi/vt/+xW+LBZxS7XnMwtEU+xP/dwfpty5tcvHu7D4m78L4+c1XNzqJYo3OqsOq/xay/LXHMpK4E3B2xruP1ba0apZoOOctI109CxuDhPf+jE9T4ziNRLua2JaM/MvfXN/4joTkEkNZ1ddb+ZKVNBouC5hYlu3YGyH9Ve4TQuMMOl3v+IqE/oqcpGHXYvTsnMXeWbdl/4xr6ljfzkV4juJd25YozDWvB19i7h5DRcvEFjSHqmP/THvJpzJarI/JyHf0lkUYQqSqgnBE/vjVN+Rllarp9xM/9ap5Rz3/uHI5+xaCbdmPTXxWTc9f09puLXVTB9RYoFEwy1eEXxhzVM6uanmenn17XdPdJXIRbxZf+jiIhG37kXhmTlNHfs7P/1n6e1Ql6udlU73cbOex3z09iyZFqMWdYu9SmFmMXUI/sBrQOsUKWj4hnPj5GboXKzVVUajWm1M1aNnuDk1mXx8beRzdrWE+5pfFwqDVW/uz0ym+iY03HpXbFLgV0Kh4VI3+S7e9Zeot78vEh0QIfIXd7/7lVeJ/lIiF/EJ11iyRSYnSzCjqWN/5qf+KOfOLd4DOLVxI2byAg0Xj+X8Ymr0hY17m1M03uF0ROlCPjnjeS1IltJwbwj/GV0rbRYdU7N+ziCaSDJ8vMdGPmfXZioeX77I6PR0xWQ6JK7hElp7F0n25mu4nMe0W3aFrC0o0QERIn8QUqRQLGkUuYhPUr6zmal+/Xc+Mf3Tif2VZ7tzC5ePE9p12SUaLl6WMP9u28f+1C3xKIMRPXs/lKNjvuxWKFTQ8E1D/cvksW8b5Hj3pZZl4gmc5ebUY7B7+2zkYzYpwbNExK1+c39m4skS13ApD7MS2d5sDZf3mHbsV4gPiBD5fEjplRoT3JGL+KRGoXPt2/uE73xh6nbE/sbz3blFIm59gvt+txZouPjUOL+YGrOJszncg+e1vms4Qb3RMqwfaxk01MBMBc8Lqy3FdmJUZmmIqcVU9/bZyMcS1+jmN4NmSbipJ0tUw6XtCrI5N2AZuRou9zE9vyyVLQRiIi5EPh52Q8JFIj+WyEV82r6a6ZW4PuUrX3Hxb4/9iWe8cwtEXFog+yUaLi6z50Zt9CWA/7Wsf7hx9s6yX2p7MJ91/w6O3GLA+ntCrqWKhimplXcozBD/4vfdmsRDf058ZEq4iZk4pogSD8Ep0MEmU8NlP6Zns6YEQiDygw2RT4e0d4du1PzIRXziArSdiFSf9pWvxG9H7C88552bF3GJFwmRf3757qg8nJNi0RHEv8Wpc9j2xgX7WffvoEkcD51z0iYQMrWkkzcX9PEvflcH1EPfTxqWsviy8AIxRTQkXsdm3YElZGq4kOjYf+aypiSbiEd3loTIhxOHx/hzPXKRIe0aU5M6TY4grqljf+Fjf0DTSGtmUxBxZuR1zEel2NyS6BD5u5Y24WyQnnawLcBKuwz0MzEHZk44U9mut48WHfokL1ORC1BveeVfesnTcD2Bj9PvmkTP6LE6/UDz1X+sSval0sUCRXUQdzTxFfsDzzg27kz+BvJOef8kLPz26SWK6N+1tAlnexQtaPgGTeLALBNpjkwBMTW9dq8fLTr0SdIDkeV08l85+084S8NlL0o/mHqwkQXUfn53oPruH0b9oL6IjwSKbpknpqlXWkQzNu64ifFB3TQ/LPz66bkxmr/rJv8M6KbUCQ3PeGmngXoC3/CZGJl28ScTidtOdGLx+JOOXMO5zHswS46GI9INEzt3k6oLRhlZkgtU3x2/BP1FYslxwutENHXs455zbNyZGB/kTfPDwu+fXkwdln07qIpiJzS80Em7DbQzMXps5leH+Ff7xUY8cTk5e9+tY78rS9KG/rTKup69fVTjWzt5TsctEh1yDce+qTVHw02/l/7ers6OtlhcdKE5wX2/XbsllxhTJnN/sZpuxIMiF5l/vgz90dpFNyOqmWIf96OfnrvI/x/zMdZI/Y/o+JitSb2cDvef827RlDFyqXiLuKnF1GidmJv4I6Ccgic0PAPdD6aJT1L5bwB9/Kv96ycXDOWrfzXnEKY/H1nsmEzs9G8Tc3ea+NmOJkQWabjzX9Mm6/qZiYG9n1SGhpvSDcPxdRV458LEp9164+7XcLvllxhZ/Z78+O81Tr89GrrDaZj58JgbKy9iZwXNaJZsOut17V8LFXZu+iLjLw6xT/uxD0+vpA7H7tV8P/0zGAvsnenNkh9TRj/58QfvYz661WRqMTX2w2ipn8H2IFrAWU1edwjQPFNPydzvnphh36bK+YHsP6c/O/0g6tbadB75i1gr0IdJI18/r+HehMfX83T68cXdjCBdw03ohqsbu9IQD0rkElN3eOyQ9snj1T8+HyY+/M2b9jF2+k/GnuvrL7KfrsQdFVj95AVGpMNhmPoLO3aN2If9yGcncxZjd243qeIi4mc6M3L6/KMuTP3BnfcxH9WiUy9XsWHb0AmN24O6emYxKGsAk0w8wrNP+piolFup4SInOU6+GY1OmPFueNfI6078UK6xB8uchht9fE0+s7kr2dI1XB/9w8g5l7v4X/jRP5hK5lxGh8TEJT6FYpj4+jtjov4wJRvGfjHkFxnTu1PDLnIo7W7qxzOqqWMf9iOfnUqQhRGPv+imBPvYNaavEnF7bs35Y8xHb0U8PRKdZMZNAlUQZkYOH17adaCaiTkteyF+4sny9pCYGcTRdgeTKzbdyB/00UuMffpBvJucX+XyxFWiVt34392TNVz8vdRF/ybq6HiiZZiIZGxITMTy/akb4h+NuzHZXHDk8zMXGZfokxcZ8XziIvEeuVM/njHfY5/1nx+dSpDFB3Qf/6P146OLXGSmOeTHmI8aFfcjNqeiOVzFULXuSaGTdh5oZuJVdqyl1iqmjoB4/eT0ED7Hk8lTM/KI/VGLprrBR68x8mCZ1nDRq0xk4ri3tCZruBD7MzfxR1FHx7TMhMiYuF999I/en7pRDybdmLrFdkWYJi8ytXDzeZGpZHrKwB6XG7HP+s+PrtyB8Eu/7s/Sxse0iPsY89E7EV9MDQmuA+UMU6OGGZQ1gAkSZ9tlTAzLxR+cOW1nYh4fmWT7lEvEr+E+Pjqp4eIbG6byFlOWEZCq4dJq76IlJWOiIb64Nnm/on/2PiBC3PUpNyYWIUf+aPIi8YXyid/l5x/10c9OD+yJ3IL9/HTso/7jkxPDeTqtHHdkLBEXf/OZPMBt8jf6OeaH2Edji6nRMrFu0negmcIHpb6BsgYQR7+GmynmmnDgY+THdMfcmZ0h8nefwmPy+WDjV5iQosw7WlM1XB/5o5nsbfRyn9NU3LLpo6DjOay32xzirk/1dJlQKP7z01MXmQjwmotMbPKcDNTUTooR/5c7HR/NcxmFEP1L9xmi6GdnnnmTm/WWxygmR2PeZ+8vBmII9RX5BWUNIE6IDxyf/eUTo3K39IOz7yBxDz4m2djkPVc3sHyT8pSGm0xBxOeIj2vQkqjhYg/Q2T0/seTJp2joo4bNDInoH/rXz4W465MvDnENMKJ8Ji4ymZiJX+TjtsQ/Ovv+Hrfu07bYJ/3HJ+OZ0LlnUbzW+VMBxZXi3B7SieqJzzEf/fHHFlNjI9zNWAX00sdHTBG8dACAXkJ83NjsL5+YK1+/fGL0zja5nchCvH90GP/c/AtyH7nCx8NiSsN1U1eIL9DZqT/LJ1HDxbITs9ZGb9f74z2eZplL5kQv8TaWQtx1n/T9Y5ZNXGRSaqxwf1hhzmJXPt9rYp/07x+MJ0Lni6zjmcGPXHl0KXVWKa4b89HrjCvk6I1DLqVapnZ2l6GTDgFQS4gPG1vuy7MGbzwN8eZBbPvPvKPRRdj3D048HaaTA/Hnnp+1LotEDReR5wt23/aRq70/3+Nplm7uEiHyh8Oyj81eIvpusu5Ar+mLxCXK2wfjQ2c2UBM/ns+EauyT/v2D0feRJYWZQ+yPPxbpo25/GPRBiP7tyACODsTxX3Ts42gOVy/x8VIK9vN6QLVMjE5b7svjn1sw88X3KrxN+/34p5Y8WWIP1PdX8QlFNLOutaaDCSVpGi6mGxZsvo1dkKRD/jfRZM7rx0LU85kZM/7W8PnZ+EVm0r/xjNTbB6OSaYlqiKf7uvePxj7o3z84xD7pFhgUVUzvP9PowF1wGkJ80I+N+Whd+uh3L50qQDWQn6CYgJUOAtBK4Bw1i788/rluwWX62B+/PSUjc/GSLrqxFN77Y3JiH/7MFaKSxS8wL4M0DRdRMYtOBhsil3t79EbN6mavEF36eF2PC9FLuOnvj8fs87Pxi8yMu3h67e2DQ+xzdi5Od/rF5sU+6N8+F43+sv5oUXe6189FhfQS6Rq9yNiY72MfHpVlkVkGzeHqJTpaCoKKGBAhxEeNLffleSM3vlvhRRbEnryLTrNaODPHn+5zyfDoI4k5i56m4SKriYvWi2J5o9cnYtSuJc2Shsjf2pdPhajnc5mc6B9+fjR+kS71Iq/WxXsezkXpQVQqfsQ59kH/9rloAvH9g+NE04pvojLEPrfk9xy1cWx0RUM0Ntxjb3vZ3TaBFJOd5IvBfWAPqJUQHzT5yf8h/uX25YOZAze6P+nlKjm5o2iarHv9WFwRzXmSpVkySNJwsRU4t+SKsUfi6xMxqmmXXCN2t+zLp0LsErPqZ4j95af4i15kdtxF//LVi+gTZuGkH/Xl/YOxz/m3z0Uzyt0ie6KK6e1lZt0K5xtR4Ts65ocVl+qznAf6iPa0LMuCLQJgk0ycEOCzv3xiRC78YLfoOsve/MP4Z5ZppNiT0r1+LK6I7MwF1j1V6EjScLFkw6KUZuzp+6qcQsyqJVNZZ8fpll1iNp0Y/Uu7/KOz+dXoT/P1In3sY8tuRjzv9e5L7HP+7XMxcfWvvXMvcJ0FoviVUAmRUAlIWAmRUAk4qIRIqAQkrIRIqIS92321STjDAJPm0fP76/vu8hgIDScDDNrVxF6VH/5edGcHUCXRMQ/fL26aVjW4yYZYNrzvHXpySZR1x/hVvvZ1n+5VzURTxuiHlbNTagTKuEYNh+Z9XZVInAzU2RO6I6A6fCqnWvfUVAJ/msNKkBNaK5ngZQ1jP56yIVBcaeegDhXQPKaC41bnfkSVRIdXRpNQb7bKxpO1sXB43weapbuCrJJ1azjteXzNpz966SuXjEEVo3c+nFnSMypqwxo1XKgyFY0595AGynJf01hVKxQ7QZXySqwkOe6UlaBU2n2U8GTq+MeH0vlhMqgJW6VBcHF40O6MRxADudbiQziA1NNfNVL3XAjbKh0aaE+H16aSGIKGqx4y0pHsYUqUSruPEy47PaRBb+3Oq+hVDanY1RaKc1ZRpOFAhl7XlR3I7h9q0E3kdaAeT69CWmi4ZEOgGBrkrBe7PShg/PiVFcG+Ua7tKlsEq9FVoo1w8w0cjZM29fF0DO+1VZYP73vHLd0ZZI0IZ27m1HCj7SG1g1YzbwhXldcwfIvDJqcXkgLIuUINN9N77dHxA5+ooUMjoDqSOWGnOX0lyYboKtEpPQnNB9ANlMwPk3XK4jCogIFjMIBEyiVk5H2Mj3m4njb+WVfETSSrpEOjcQG4qZJEEKZw3YFNARyldPyqRMm0E7ZmIguqn0k2bmAI7E6fbAOyb4UabqaYl4/1BZDGMswWquM5Gs6oEih2G203aD1aKJnXNVg/jtEOv0EJtdXkZe9A8vFwBB+K1a9SshBrCO97p126O8gKwZFEMz6cAYLna7TXptYC2IqHxVjh8tYa/MCQ19Bwgjiv4XGmC7k2FYDqSH/ubkHDqbtBu2yNkvlhsh4k0z+5AEroNYm01YD8IDt8FqPFVNB4HincKmiYLQPji5AIwohxlUUHXLRXGaF/7SvqUf1I8hm2pOK0XAA5V6jh5jpt/1AFSmI5GwZQR7rHDTRc2qGoq6S8/NzGoGS+KJmASpai1U1tNSGeHT37HlQ3HI/oW1K7FZCsjHW54Wa/tIdskh4PmNrI0MKh7HaYEqTSyxfFG135K8llaGPG5D4mqCowZ00arrlXgZJ4w6YHUMdTNJxVJeXl/wKd2KNNXCiZL0omoNJwtdWEeHbUbcimoVQGDmruY9oqYJQsxrVZukfI+gh4wGgjewCkne9umBSk0p/mQq24v5Lx5d51vKKGQ6bW4v5qgE+rNWw6asaLaThbcQZ/9a3aHri4W2A0BIgy1G2wWQMXG9ivwWuSNopw4m8hKudkskeETWuVn4/woMGHdru0V9cVQAn3V/JcXnFqODtc2iqHbCoANWMXGi7jZY/q8SXJDJ6cqgil0ZBMDQf7+XExFQk97mLaKD0aZcvRLN0nZHVInxp17x5BHY4364BkXl1XACXMr+GGTaGGq8GlrXLIpgJQMzal4VAir+0FarhH4GNB78nH3z9YSmVwuI2yPjccA/2SKdLB1LqoRsJB0PFbDSTz6rpCcsTPtjt1YAc1XA0ubZVDNhWAmkENFy1Cl2yvGg6GiHtYTAVvvFbdcrIqejTIlsQt3StkdQjDpeoQoLQdzutsGCfDBFACNVyKNWk4n7bKGTYdNYMaLlqELtnSGk7r9MrVcDBE3P0lCd54DA63UdbohqMjjkwJeLhUBVSVfgFulBYk89WNoIZLQQ03gRouWoQu2bM0XABptD+XLjc7sur+kgRvPG5D3yaHHo3DZWmX7hiyNqRAETVxjeAVPh/T+KMgmVdXFkAJ1HApqOEmbErD9SCR1/bCi2o4kF/I3oMa/16S4I3H4HDbZK4ISrVYXlVDdoEkbio+IaWl1MmLEqTTr+WGZE3UcHHWpOHe0lY5w6ajZmxKw5WX/weqx5ckM3hy8ED7oxpC7dbeTwH2rgndhub037cUiIfDKXebwA2Qi9Mu3TVkbQhjteJuD+krZhIvCaSrv57noQTd7yOb4W6X19Bwkou1Bpe2yvLy8ADqeDENB2PxjX6mKJkvSiYAXx2PiTqUqNFVAnIL3Ya+Sn9FGlhKZXC4bbJWNxxv3CITpBm5LS61F0qdrC6AdPX3NMyv4V4xPtxcrzf3VwM8Le0Nmx5AHS+m4bSNQcl8UTIBlYaDiRwodQgaYFK3oYP2P68z8B5t1O0mK2K9bjjeuEXGSIcPihcC8goFCfUnuhSjHSU5uSqGevS1Ndx7XVe6h+9LZNNu7ku1qqRDqdTd8CQNp9+XoWoSiMWmneDQ+0l6LCjPWWo4g8Ntk/W64eiII2PEW6jawkJ7oczpPIxSamuDm+/8PU0ASVxhC6O8hoYrmQAzybapgPIeX5GGUzmtRGAJzTAdSuatGpxVAuwdnWhCiw+SlehF+f1NCnbxtepmkxWxZjccHXFkjLSYWuiIE0PrTA9qoZROWR18obf3NAEkMd2v8hoaDuUxvNsbrVtZ7hAv7/EVaTj4S5uaAoD3qYzSoWRe12C9U12xMUL48tTVo6pjTAcyHfEfGRxum6zZDffBBXoyQhRcRRJHDK0TmYZR0lZZn2ZzDErjSxqIeA0NB+dPO7NQb1jePVne4yvScJrPl7JuUF6IN/4Bwd+i9snB0TWsCDpKNMde4NFX8bGgXGdsD4PDbZJ1u+E4rMgYacAWrb2LXzERVYiSanc/daiA5p4GKVXTDSuvoeHggLETWJVb1s8hyvBZl/f4ijQcVDzqnYOogLGFKJ0fJqt2DCpVaUDJNPNbp230kD6e6aZ2gb7TNpqsCmM33Em4d7KMZukeIuuik0ZLgcaR7mCNTvQoqXZxDv5EFEYZLgC+jIZDtjozs6AS8KrsvaZF5T2+Ig0H9bR2XKuPACvTQbPH5SGU8h0uASu+OnHwSvmxoDqP6B3K4HCbxNgNd/l3tPbr0RFHBkjxeAt25R7Er47Y6IOJdY4d6IsYvJFRotzmSbyIhpt/XRoqC5U0QQNi6Jsq7/E1aTi4m1XpFIUHPMdrkiidV6arvEFh/EOFy6GK7R8dzCsbiV6UZySlx31DNoGtG+72UQF/ZaU0S/cRWRdBHIK5l8V04uBzkRwwcauqEDptBnM2amTMoFJeRMOh+dNwXRp+uGqkCbJvOLuX9/iaNBycb9pkDaKBk45G6XxpgXF0H2TSh2efqkj4Zk08FvB12qNvjkbVZLIujN1wXx9DwbRIOuLICGEi/+Q9b5uT/MkRfUnC1HWBAobT2DMONbyIhkPzrOEpPN0zBXSqp1De42vScJVBNqCemSwDooR+lA4ucrYqg3QfZP+k8EVji8YEmDP1WJBxx3ijZ/7tknmwdcN9j1vzUxJu2T4iayOIwyVLxImnXMHQw8k1NeMAd81jsidExHgVDZcKWW8A/BLQPK4e5B2mKu/xNWm4Oo8l7ufJmQiU0I/SlZ35/CMom421YmoYSh+ZCRvhIn0f/edW1WKyLmzl1q9XGK/9l8HvAzJAdsTliLiEhIuPPJzeK6qEn00jVwL6aTaqhh1SVwvceBUNh7pc6eE/pm+8wOtdaZ2IXpejBpX3+Ko0HPRY+mQV/wRv1iREh7oaOAU2CnvgRsiJj1eYFMX3lXjiKvVYOmBc/F8ZT3+LJKawTNxvsda3TDvcAvKKBHm8vDfKclJuaBfNhdMrXoP4s2mkKDqQzKtaFv/sb4aJXkXDoXlQN2vFvRkjxw88GJPWieht6YfJQn67f1iVhoNTjuZh4MyTpCilHyeEk1VV1I9pZsFdItQkHxFMPZYsbwr3LG2SPucZp7i/1cSgqQXQEUcGJBxxH1enKeWQ+tYA407I4ZOVYtk4ciWg969KeMSV4nhh71U0HHzPeU2d8Sc28q/hFa+UIw668NwwXSho9zer0nB4K4FP1oHnq6n+UNeCdU7ahYqH4zR0bwfTCvIpEeUh+Vh6MXvKZLJ+TN1wjxNEao7NxS3VQ2SdJD2957TScX2qkCaesSDLHw1+KY8tRil9unuAG64d9wAyxSUrCCDnOjUcUlgaPRx/YuM99KUxvPBQHruWQmH5K9NwWMtcm1Qd+Ptn2hKU0k9Swl9kutEBtiWjg25c4gOxTex1Sloo7MIbw+Bwm6TXP+E0g6+WjLGjgY44MkCQQj/0ic/KQ5ccdSh2fM1IDTDn5GAe/A0V+wfGE8XLaDiosBTXA8RXSf04Gf6qkAOAQTfQ2DcTCtr9zbo0HH6EqUrw1rCMC/H8JCWeq1Kh27DzNTauepj61oJxN33SJL9Uk49Fjl+eNJmsHVM3nB8Ubb2a6hbpILJaFFEIg8PZDz59mgcGbhJzybtKhG+bdpwWCo/kmQ2wAjMx7WU0HHb+tKkaQc5Gb5kYsRBvjxx/g4SSdsumuUnSZ1TSo5QJD7MQjDvjQrxpHUL8NflrSRBITSR5YrrtRnmac/oVlX4s+muTYiaTtWN5LdZ4q03GB4AGOuLIkKAZlKe42nGd5jy2Q1XL2VrBaOE1Hll96VDaRCwttIlm0qDX0XAwXyokdBfPFnkCPbRMiuIK38ET11IoabfceDdJ+oxKhB9BK1QgSLjYkjhK66dJsbtLHB3CXrX4D7THDf/Odfqr7nhSnQtMPxZ1xH3TS/zIkzDdtDYZ7Mb3sLoFOoismPRq6hfvfhRQ49iqBJy0tpDI6GFG6Us8Up2w6iR54tAmmukL/3U0nLBzyQm5oG6IZBIeLnacdjCP17ZgcxpO0jItLF+6Es9H0mekFQaVIOKk4wbTNt/QrHu9h0/UzpX0Y8FHSEa0yaLI+gjax6vAT4u39PLREUfG6HcCXEM4+xsX/dtRWrBMZQUblOUdeE0kR8DWwbkF19JO0r6QhhMyepjpDU3T0bp6XAWQAgfUizHXEkq7PQ0n/XLRVoSj8MuNnkxBiX0kLWr1rWy0rVY6boB6qxcaXoTi16aN88XgcBvE0g0Xc8Qar6a6Z/cPWTmd7QAbIq2iJDPHNij/c6J+jM5dwk4ddPC27aFREZNQ2pj9QwLIuVYNJ83T7y6aQ9hSHs0gvlB9LEOP00/HA2rA9jScqGXiD0Nc1fGxHDmJxakq+kUmHzdocvuoFMWvTRkijsHhtohlIN7ohGe7mkpHHBkira5U0woVa0arG+U5dnKGJlqTdLz72k1+dQes4KLhn15Jw0l6+CO0k4laemCgKtQnX/TtuClS8kicDZR8gxpO1jLdOIc4rFFQDJTaxxKLYRSuvhklbzqxAXgXhnXwe82vTbdzhMHhNoj4TsvEx6uwnWPdM3uHbADzi3nveKleVQn9+e1XFxycT/0UwGdwooX9ub3rOCdvg4697l9Jw6U+KS+n+8bJ5g3cKCl3T2KL5sOISFUQG38BJN2ghktpmf58fxbp3f2xCjI1XOpN8jk4/pImf8xC0EHrN5bm16YK8xU5UUVWT2c3ktCRFtvVVDriyIhEFPNy5JWFjDF7Q5EOvvY1KyFflSR7IuYqfykNpwl3pNtRDkeHJuCNast67CRrQCWWd5pbphKdlnlXDWvo9ULJfTS1+nemSCe5tEpXU4GO1fzaVLMwg8NtEEs3HNw6ZLua2jyxe8gmMN5z+Usidod9hTiYaGdUQ/Ql/VIazmywCH4W1Cu5xGQAKnuLGi7vIk8RFLgFpffx5J2ZQbIcKpsSzyCb6temWQ5Lhw0nq8NQXnlci+lqKrddkjGmYap/ScXQNa9QeBUbbfqLz3SvpeH0sbJkBD+L0VpZ9E0XQOJNajizi3zg2SOUwceTm22uTb08uqIyazScYtgzONwGMVyYl56/rZ+keVbvkM0wg4gTg6/dsK5QvCjSZr04PtO9mIazcbaIn5ImL7y4DAgg9TY1nJXLskX2oAwepFfGm0yRvvQ1/1zDp06t0XCKEHGpS8XICjH6JL0humFNV1PpiCMTzPfEpUeZcYWJ8JoWy07gHf1qGs7C2ZLwsxh8UwDXUgDJN6rhbBxfHtqTncPkRZK69uNGl1toC+dR3a8trRoZHG6D9LnjCOLlikxXU5tndA3ZFsYiTrG7F2UtHOsp0VgvC1ANr6bhDIRDcpKuf1ouXnAAyTeq4UxEnPDTQVk8zGHh0m+T/fQvW8TdyqzScMmvwMT+X7JG7FagUivppqupdMSRKaZx4lpFhSivHMUXkX4P1/5a4Sv65TRc9VhR+Flqn1YLyg0g/VY1nMHvVpoPUB6Ps9TPim2ym77IWgX7KrNKwyVDxDE43Aaxm/VcqirL1VThRBh5Yaw2SH/0qvNZKLcr2WWa2gN9o25ywTW8noarFA6apbLKp9WiYgPIsFkNVy3ixE96lMkLeeDdajrEq3cHHHt1md8jrk7DJd6PDA63Qezu/EivPGnCMqnx8/cN2SCVL99fwEWnY1B2V7Cuq5Fw8uWMFY16QQ1XJRxUEq5qNMLrOfeo4aT7YhW0oj0ol5cyVe3LUI6O75YrXRu/P946DZdYDGNwuA1iduUHCs7ziOUlcXTEkSgHgyEtzJ9DUAEufxJInoH9Qf/hPkZyVryihqvw2uq8tP8qnpZUQwB5NqzhajzoKacXyufFXBUKX/tT/qEJ6SLv9y7XabjE9ncGh9sedvF9naY6s5WuDx6CJoi3vnJodep3MCrB/csVcfoNnoUi9dpKhb6mhiv1k2VM0oeuqAbRDxyK271iDVfssywOAOQT+Ur3/qTKneK6RBPbpFXaMS9uwIvfN0tWTWLs6NGdZ7G8JI7jjQAOvmacTS6pF0BlfBWR4YORBdaYktkuyJ/YL6rhigTxNe/zseCTIlFDKG73mjVc2ceJ4peDsvpUxmOJK+69yJfV+B62sBuUWKnhRK8N/SLbw0xTaVc27S5WUZ/8IS9Ioffjk77NqQeV4r6t0E5Kue/9Q65DOyk7XlXDFUisS5NpqXbHk7qGUNzuVWu4z5zZoknjMkd5fTrrKXeCzNT3jxxPl2lt72c3Slap4cRDjE2x8WQpzOL7ttoazfbf0RFHJJoiX9x7m1cLKsf9/F01B5S895suo1VXn5zpXlfD/fvX9hl9meOl/SPraaVrCMXtXrmGy3wWH12TLrFKw2W69BU/NJnGnXwXvul86yJJgIZT78UQPigYHG6D9BnjU0L/0rRcTXXzdQzZPodTnzmgLi63juTQVHjM9LvvBjSd8qekmlheWcNlKIciBXdD/bQ0NZT3+Oo13OezQBWPueoUXJ2Gu6m4XmlQf3rGOTvwQvHa/ILfpp3PajITZiubjb5Ow6u9Zp4kyOZx2pnzk/dTk18BKszdk8iz9/VcUOsPh5Ni6enSqsp6bQ2nGyl9xbP6fFpt+mkpayjv8Q1ouH//jmfFrza01QePvLaAN8Xq0bVTtq6WUNkY/LthcLgNAoZDNn6JSj94EpqkeTv3ipEUSgTcP5WGk2bvi34iitOcgtCqq778gwOkCziCnDP/OqHFpTW/ddJIeT/Xt0d+Wvoayns84zE/pRKEO0uC93NcN+qiPgsDZJRxaEWN33fPu98AdIzaAKzhePfR9rC6/CpvY5rhlVscdERB054DHkTX4F1x0ajQcYmfc8D43RvObzZLL85fIu/10J34iZPLbaRM5+o+eKNH9e/rafXz1rATDm8+THtqwXF9jL5GruGcJSirUb5xIHjxje+L7dHBp5mHy6vW8MqtZo5uIXvk6LwPg0khhIs/ZfgGYmT9JNynCd+85fgAVDT3wr3P8XiQCc6d/P1JzTGzHV37V0M7t8Ny0xzd219PndYwrh8HR+vc0+tHLhB1z8Dpl2cEt8ehUDiNyfWGGV655efoF0K0oIHpljaMELJDwH5y/V62wMl0Pxj5w/IvvbK7cosXbpFFQQPTLW0YIWSHgOMV6mM8OMZvM6PVZB76WgX1TZtfs12QuILKCTEDjUu3tGGEkJWC3hqKcwlo8cxr64aeG0Z52B5GgUVKHr1dkDiu4ZMlQePSLW0YIWSloLeGYlcSCs2lPZbawKm3rWkRWYSgV0oSRRty7YLEPe9MNyET0LB0SxtGCFkpAbw1FFuDepC1qaya25I2iHj3rZ5zWe0llwlHoQeYLAgalm5pwwghKwXuJWpTOVuQUbse1cGJlHG6tkfurdlxStW7XZC4xrRXCMkBjUq3tGGEkJWCw3skplO4CUnnSjkKrhNX3yzyXIy2pBUvZdpIyA9+P5AlQaPSLW0YIWSl4MAMXs4IHXixHU3ncHmMb3gUL6LlxvLtgZyyeZSvZNoda+A6PlkMNCjd0oYRQtYKnvyclA1uI48qsJAzi/o5mklmxWZDWlNugI2I/ODoIwuCBqVb2jBCyFrBwbWuwhlBPGW2seQhZxZt5mkomQ+bMLuFBxq+yRpiAvQCk8VAg9ItbRghZK0Icb2uLcqEY/LHd6WHjEmURwO3R5fxfDOHjhazYw0ML0KWAo1Jt7RhhJDV0gvzWWhiOY4B5zhF6xAy8H21fWyuSm3rjLA61sBvCLIUaEy6pQ0jhKwWOUBqmLglXCckBytRQT+Fci1re5jE2K3VTmbHGhqLLiEkHzQk3dKGEULWSy9PadfLyf2ucrm2k1O7eBVBP4O2T2o1sSMxgnQU3dDwiNWxBoYXIQuBhqRb2jBCyHrR3XQZgsLPgXalB+38yZWsDWJyosFAOelHmQivCSELgYakW9owQsiKwUdTM3lHs19QF+Ge2XBiQmcwdCyEk83pWLqCyVKgEemWNowQsmIOvc3ch4ORBG0RVeElyCKYnGiIn4XJpLOwhFsyyVKgEemWNowQsmaONtvB8Y6moJ09uYy1PSxONNjIJqtjDc7EGkIy4YAkhJRgsgrV4vKDrgQpqjBZK73B2HE2puC4hVnwVANZhJl/HoSQvVJ/pu8qxUYNujLaZzWX2GGh/81OsvQGxnzw0lSyDGg8uqUNI4SsnLZyGUp2oQVVGe2T2kos6eoGzheNlTFGxxpMducRkgkaj25pwwgha6duT1yQPRdBU0b7nIYSUyz2oBmeZFGNtCQ81UCWAI1Ht7RhhJDVc6iY/nyibEXR4losWS0GkXUtA7I19ebccHYWEaKFw5EQUs6p0KUSv1X1kWBQBlkl72Vj5hFvaY/Ntak81UAWAA1Ht7RhhJAt0HQF013fpgsOqTLohNsox4IRM374pgYZxRfhqQbyfNBodEsbRgjZBseQOddpFFxKwwVVGWSNGLi9jPW7TXwRnmogzweNRre0YYSQrZDli9MpOFHDhVMzZ3PIvNR7vcxvyO2rTfrgqQayBGg0uqUNI4Rsh8NJt8fp2jltkW/edyGMJtc+dCd1CWSVvNXopJnmJ4NTFh/SpSOEzIQDcGWfEJJD014SDpb3sysr+uet1FiaS5biUq2VLvZGhWqjPniqgRBCyIY5tufoZHgNZ7rPyBcG19039laZBPq1DHhCCCGEPJ+Dc/7Oif4z8kj9dfeG4X3v1HsHPxhymhBCCCH7pTo43DzeLpNAv+9zWEYIIYQQsjz1weH8PIZ19RJullVeQgghhJAVUB0cbq5NZyaBfmdZ5iWEEEIIWZxqpdTOZZlFoF+GiCOEEELILqkODjefSjJxxPECOEIIIYTskerjn+18ttWfmGWIOEIIIYTskurgcLOe/OwNRBxDxBFCCCFkf1TfaeVWbd0HQ8QRQgghZI+ESoVkftn9kL5ewzFEHCGEEEJ2R3UgXTevfdUnLj4YIo4QQggh+6P21MDMbrh6P+HHbCGICSGEEEIWo6/UR25uA129hmOIOEIIIYTsjNp7ti7zmxjqRdxxfisJIYQQQp5I7T1bzfwmGjjieN8WIYQQQvZFXyeOnhI/N1RruOszzCSEEEIIeRa1S6nNM4w0cMTxvi1CCCGE7ImuTho96RqrUK3heN8WIYQQQvZE5Z3yzXOsrPUWcjGVEEIIIbuiMoDu07xbXbWI42IqIYQQQvZDpTZqnmVn9WUSz4iBQgip4eic/6V1jhGBCCFEom4p9YmbzLpqEXd4nrGEkCyO7Tn00x/tNXTeNUsbRwghq6RyKbV5nqX1jrj2ecYSQtQcTxf5W/J68W5pIwkhZHV0VaroqWc9L1WmfnAx9YW4L8hV8eZezXeLesLNV6XretXP93ppX+1plAN/AEsbRggxpW4ptXmmqfUx4jgFvAq+eqz8cg3+lTZloW7wM9XX+D7naXRuJjv2BvwBLG0YIcSSuqXUJ4dcC1XGfnAx9XWw03A3rq8jHVAX+Flqa7rsZ9HTGaeBGo6QlyD/HfpI81xjqx1xXEx9FWw13MfrSAfUfj9DXQUK7sbVv8ajqIIajpCXoGop9ek3H4Qaa2/w5f8imGu4V5EOqPXevKbDufhR9K25NXuDGo6QV6BuKdU929xqR1z7bIvJMsyg4T6lwwtEiUZt99YVvVV9PobG2p6dQQ1HyCvQVb1Hn29vqLH3g4upL8MsGu5z/OzeFYda7m2rOdQeMr+ebA3aG9RwhLwCVd/C7vn2Vjvidj8Hky9m0nAf17274lDDvWktx77+UexfT9dADUfIC1C1lLqAG+7fv/caiz+4mPoqzKXh5guysRKe0uy2LqLRD++vFPMlF2o4Ql6AruYV6pawuK2x+IOLqa/CfBru+Sd5ngpqtTeso/ZH/MuVIg5CDUfIC1DzOfy+jMl9hck3uADzEsyo4fYt4lCjvV0VVhKOIk6AGo6Q/VO1lNouY3PtBLCQ2eS5zKnhdi3iUJu9WQ12Eo4iDkMNR8j+6Srenv1SRvcVRn/se/4lf8yq4fa8J272JltKuE8RR796HGo4QvZPzVJqu5TRpwqjP7kuZTd5JvNquI/9nk5FLfZG5R9NjjPceaeIi0INR8juOVa8Ohdzw/07VE4C+51+yZ2ZNdy1WbqBc4Fa7G2KP/TWj+JsY9jeoIYjZPeU33Wz6GpS5fTMxdRXYGYNt0xgnWeAGuxtiq8N7RuBH2UxqOEI2T19+XtzyW0oh3KzbyznQSTPY24Nt9uzMai93qT0urv94nBLXAxqOEL2Ts1Sql/S8K7C8E94lO0FmF3D7VU5oPZ6i8LtV1JvcDU1AjUcIXunZpprljS8qTD8g6/8l2B2DbfXs6mzNlfzVK7h4m9cQtA+isbCtp1BDUfI3qm4tmrhPWV1m2oWCk5Mnsn8Gm6njjjUXG9QdvI4Un92g149uNNFcYSJW1ynUMMRsnNqvFnNsqa7CtOXt548gfk13E53xKHWeoOyEw8luGiut/QnW2Ng3M5wHrC0YYQQGyrirC1+KC+U2/7JaWnzyewIciGg2e2XLqjC1+zTn4ta6w3KFru1dzBf0yUeBbdHEEJejYoFSbe07XWx3heXoGR2BA3nFdmbVvHz2OXhmJpeSyAeSu3EpWnXi0+CgbsJIS9GRYSOFUTnkF/pKfa5k4k8UKnhPjn4lDdul96fyl6T6IS+TG1pO8iamjHiCCGvRYUrq13a9toLt9qlzSdzU6/hkrphn4up1b2GETSx4lRCJz0KnmoghLwW4itRZA0LF3UXbvGNv3ssNFzyU2GP/lyDXgMIJ5FUl55K5+hXsDRACCFPpFwE+aVNv1FzT9gqVCiZFRsNlxBxe1zBs+i1OEJfOk3+RnplNdXmEULIdqi49GYV3oe6OL+73I1OHjDScPLJn6ySNsJ8bcVdqTxkJAnqtto8QgjZDuV+rJUsRFbF+fVLW09mxkrDic6fy0zGL8l8P5kA+7FVltDjR7HL8yWEEAIQXocJmqVN/6Yqzu8ud6OTB6w0nPixs8cgNTa9llOy3i0uOOL2+CgIIQRQft/9al6WfXETPlayHkzmw0zDSYv2e9xXadNrOSXrr38S4iHxUAMh5IUoj82xmn3cVXF+26WtJ/NipuHE45DZZh2c+74E6c25Jju3guNnBaevGtrP/yrY92nUaxHLDLpReBYlJjXOtV999dlVc3/VHb4efDt7PbPw2VFvv8N2lr3Ev6O2tS///ov4NN4ZF07IUhTfd7+e792q8CIr2dRH5sJOw0mLqTnluFMXxj+m4N+s5vRj6y/j8r/ruHzOjPpyjHptirD5QV2G8FTzjGnefOhHJYTuNNNZp+Pp4fa2fjVfwRqa9jzpqGs4n5xVBcfPCqblt019yZ/6PETmuffg7awnZCHKL2lY0V2jNeFF9rgKRh6w03DSCW5tGc0JH8F5902eQRETJ9PgtJazUi0a9doUCw0nPIsM+eXO8BP2emmtHWWN74178lkc2k74Tg71ileqoD/XFP+GH/E3n7+HWusJWZDidcjripYCqsKLMLrIvrHTcNLhGVUBhzYkBuN7hXA4aG52/UalT4x6bYrQj+rWC+uxTllEc+4T3dTpigIjbLRf+NjFexK3xGsqn5Y6rh3+AFSN++QtPa76c6MtraSCvvDrRvmLuHaUcWSzdKpBHmFVa5A14UX80saTWbHTcMJefM182CSvXb1x9WUq7ih5SiLVdE1pa32RfQ8IGk4/l+IynM6IoOmmoDFIo+GaDvZkjypXnZlHue/LJHUa7nCC9o2a26rKm1bQqipIj9cxut/bD/1pRT4JQjIo3krWLG35IzXhRRhdZN+sRMMdOu2AvOaa9U+rSIakZkWUr8C8kbGCTepCcBlOY4K6v0K6OIWGi8sJ//U3vBOkSTcEevHueWs03CFLB7WKEsfoK+iyVFZUNEuUfjwRsijF4mc1gUW+6Uvb8cHoIjtnHRouZy786F2eXceQUfhj+8WhD3PlGRcxF1t0bWoL19Bk9VdSOyQ13BFsyfLff4U1K7YcIwH48GVaoeHazE/83IH7T+eD++GasQU76/f2az1XVMn2KD4NsLLhXh4hZXVNIbY8RcMlDmm7PnNM5vgcDuVHenppMyjK5PWmZZb88ZQLLw7CiIhyTbwhUhruDekJ//33vqIz0Ib9NmleWsPlSd0fk5u0zeUVBGXpSDQnref3PNkapZFF1hNY5Jua8CKr2tlHrHmKhhPd0iUiS1RXA459ful32vzWeq1l2SXfmP3XWDK/y5I6oeHwsTEv5v9QLBHA01wPOUs13KnonZoSvHUVXFtNwbnuwzv6nx0hq6D4QKdf2vIxXWlL1qdHiSlP0XCS8ih0CrQ6m6oCXIvVoBw+o8fiBMmg93mn0TKP/XsjFClrOEHA++8U+C3clrbm0YNXpuEOxefElCq8sAJF6bl+1kcyJCghK6B4Alidz7n8yrCVHc8gxthpOOGLRyip2Cmgury9Zr76pkVFowyZvRahky3KP4KoRn+yZMRVUJaihpM0o/8pAIr8pGAJIGObNk/WcKWrkTfeNbNDsfs4pEqviRb6wYt7yLYo/dZa4fJjxTunXdp2MiNPiQ+Hv94rdmoqfmVdeel/tKBslD6z1yIkPx2VgdmyOZS/JQQRJ2k4san+pwA4RlIByGGE9kedU6LhjjVX32hEnCuvIFF6rWNaHV+QkBVQ+kNySxs+peKn+4R91GQx7DScIMcalKcrH5YKEVfvhbsB1AlKntlrERRbOPpTU13NhAoJJ4k4QcPJWsgn+yOxsodeeoM3WoGGq5NwChFXJbTE0mvCTH0juVwJWRel432NO8gqTjXwuq09Y6fhuvwfBM6iIiHiql0O34AIiSh5Zq/F6FVmWV9aWnWvsjC3Yw13kBvqf0soXUxF6yitwjxBw9VKuLl9ZULplc/4i351O4UIAZTuHGiXNjxGV/6j5YfXjrHTcHh6QFNt5dacRISw+qn2h3g/5KXOQtsvfae821VDlRfuBgpehzVcop3+twTo4U18LaMBMOi0bA1nMa7EyOnV3x5Y2tbc2KMonpB1UfhSW9NVqXcqTjVkxI4kW8NMwwnXrIMlLwM/mRMMqtUkf8R/0Ch1Xq9FyTkPb3UnebWEg/4fqOFS6xw+3R/i5yUakcPNIbkazqCjPsQTOQYa0YOi61dSv3BSrxOyGkoji6z0M6X81cMNcTvGTMMFWA5YjLeYUITvJZvNcF+0sfJR4rxey+3LKMG76iotPDTxNx/UcCFRnP8rAr67xMPJHcjUasyDGi5ltRKovBsL97Gb1fY1bhYiZEqpm2ClS4/lXg9uiNsxVhou+5ZPk7kKRw9OfIG9n1vXfBvuTufE90105Qslzuo1QIG8DXXb42wUb1SYIA2XfCH5vyJgUnFNsgeZhro/U8NZfRrArw8TN1+8dHEt5vaLcF/JnPNdLxbfSt1OyFoo/DJd6yXxFdtZV6pKiQFGGk7anh4fPkZLnWihvxPyXM/NKHUjXyAZmxFR2pxegxS9e66XYh1XEz/y0YJYRyENF1Kl+b8iYJAQKXglatNoWSFPwxl11AdcrqneI/pNdO2kE6wZd+Tx3OPUdMSRTVCoedql7UYIv+AE3BC3X4w0nDC44q4y2Z/Rd6cvp8Ah6RMAO+klN1z0aigxvG3Mv4TS5vQapNhJ+anjXH51iQOiwb+5mzo8ujcfxJQxYQKedLqF/l4G1LTCqwmpoVZlHtBwiS+P6+e4/e6pNuXcja93yh7Y68U7dxu9zp0SrrJY6bDL45d/tLiGqO2ErIvC7TrrPNFwo/wTkhvi9ouJhhMFkIvlkAbj9TyaUo5S8fHBKQSra0EjhLW9WE/kpM2nasku+Ex/nOT8eW+Hb7RDK4kTZ9gUfy8DPhvhJl5k5ugFnaXh5LaEodZvTr2YOlK+KKbHoZ1F53HEVQZ/cygYCb7va6V7vgl5pNCpveLRXbx6xQ1x+8VCwzlpZMVn2SBUG5lRGmFx0cXK72HyFjajy2oDND/dXxqEDtJwvbT6j0lBUPcxF6RwP1pkJ4mFhsOLqbCVyBM71vw5Gk50j/ZumkG8tz6SXuirSzNNfsj69cLEWPGjnx1nBLIBChXPiveOlZ9qWHGjSB31Gs514thpYnlwIBJ0pzsevDGBhZdShUZhJ8gCGs4gGuu79jKHAIs4xyXSAedoJ4ktNBxeTJ3W9wPyxI4z5Gi4TrD2Eu2qRphGpp/7eNiiy+ZxIJLpghDqQ8HtAH8SnBHI6sFffiJrPdFwo7BJH9wQt2PqNNzBSVufcSEwU3Sv2hdYxLlpYhwVVvJOwSpie7jzGpyPSYjii1PUBHeNIOHwT1Az067Sa7hrOHvvnGu970I/6En4aOA+jwDqGA+ADA0nbrIEZghyd+pD7FDK9wY1Ew8TP06K5GSLyv6H+50zAlk9hU6rVY/trqxN3BC3Y4QZNniZ8DnPpoivpMIfl7QTIWdPVMkeeOkjJ5IYJfVSDTkIQZMzCG2yogCyijdjQv/SpD6lhrtMvIaP/w8fDVrVQxkmIyxDw3XYejxwhZjA466CGlG6mwuKuIlaRaU7XDg8B8EZgayeDv7yRFZ7ouFGcVRVbn/YLYahcCOAyacHyeXNpB2qZao1UAWJ3yecbiNpUVIv1pCDsO0sh+DkauBbQcwH13onilo1wiaxLcZAVZ55CcgkuV7DCesY0sDFm+jGQqgD6eTrVeG3zfh7BaVzUunApjWvNxHyRY9GvMiKTzTcKGvUB7c/7JdZNRw4pI08TImrwOHmnOmvDhkkHGO8AYVCJC1K6uUqcrC68TW2Hf5OALkSSwpQOozfFYoRJhsoVwdeueBRTr9G9RoON0RWNPiM9DAdcsOJ/tB/+AGOlrXhyZVWKhz1u2wSIYtTGIjDLW23TPGEveolYlLBnBoO7eIJIH3qSwHNJxOpCH+9vrAzImkLq8hC2hGfw1X4/SLlkJC7+CmORVVyhAnb7h5AehbEm1Ual/PMe9iARjYdZnQqS1IvX7gEOywe+lvFdVGUK9FkQpZGiC8lsPb41aVXwHL7w26ZUcMhtxoaheLll1/0IGc7Sle2PLg+DWcWtv8jNLk1JF3vqJPHrq7UCEMnkUd0KH80O3L1TuWi+pnjnSg+YbpytbOPJ0ovW3ag+KFgxfaLDwDkcUmrCFmUsou2/NJmpwhFzVq/OCWlzKfhoCRDqiG9lxRNhuNPDHgcoCnsjEhalNQnW5GF61FFeVwdqAD4txS7QgKoaqSTEiMssYD+B3ym0XHWgV6YplQ/c1Ck4uUI9w4OOhk10CW7Bi7CDlJhDad9BIRsCDjeRZqlzU5RHCKuWdpyMg9zabhYxNMf+ngOzV5SNBmOJqHGARLFQ69XJC1K6hXNyEK+ylVPGy0dKQeFcwy9TEYPUh5h+nttUDdE/VR6ZarWcPAxtEnTO5AzKBJpPp+Rx2GgpoUTbTh0CSEbpewEZ3ILyeIURw5tl7aczMM8Gu7qcY1os5pmV5TyDsxS1nUu9Zemy+h5gTZWOChb5XgHL5ORs0seYfrTUsDS6PdlxhjTaji4x1JxaB9+Oj8mAr2p2YqMhPhAskrhQaUNk4RskbJtKO3SZqfpihqm2atENskcGu4auy7rD7DVVBW/Bk2kNufB8ZdbJDFK6k1MGWKk4tpI0X08qer3jqwa6jJxhHl9J8DF1Ij+AO/v2BjTajiYTtEEuA/5IQ0afCqRC/TfUIkjI76Ttpp6CNkKRefBthBFrTRwKOMB7ZQZNNxJXh4L8Vy6YzN9PLPJfk0hGmskNUrqLUyZ2uZBy7NoJ+XWOEXhy8QPUkkjLOu5ZSym9vGUMamv1XABpWsqTH/4pQA7dJMKWkwd2JaY1K5nRpAiu6HsVqqVB4f7pi9q2sqDF5NiZtBw105UACCXV5nbgdxNfU8IEm55Dffvdi9t/ca4yYNB5+9VP3f0mhzuKZFGWJvTAR0qZWIs8nvFxqVWw6Fkqq/bI9if+WB5iBev+7RBi7XtY6IONeGPvmv5nie7oMxbtYnPmNJgBW5pw8kszLMfTliZQWtGTmWuarIqQrwVIZIeJfXVlgg2lh2XvzOJZAYKVPrHgOod+o6EEZbnPoVv5XacMme5Xqnh4Dq7z2oDpqp4JFpVB1+HvHftJiYyQiSKhM424m+UhojzSxtOZmGuc6kw6hfy/DQqc9HaX+V+zebUi62JZEFJfZ0lKd7qvHFjrxFotvJ0liq2nDDC2ry2A2OnviqgLaMLJUoNBwOGurw2IJBGVC1qw8XawePOONAW/BsdcmTL9OrB/oBf2modhaHf13/mlpQwX3y4Nl5hB5J7HSB3xfA8vPnkbyKSDSX15ZYoOfqQ7n3ESOyCVO+6h4HsGAgPYYRl6gRt6Be0xhvVQ0oN1ynrLgVpxE73JHqNdbANUfruRIcc2ShlvqpmabN1lN1AsYkDGySfGe9piO8PDbPUVTQ8nfuUISrnRCQzSupLLMnm7Vx6DZcb9EBhIQkGfYBHWO7tLzC8x0icgQX3+BhRargAUlkd9rK6kGPEQIU1+S7c4J1RAwl5IkWRcLfiqCpdTOU32S6Z877UqIibqa4Ml07jTv4S+pzSM9rhy55DPk3bZbXhh4HoKI75LTMQZ3iEtblN7kFBo4EGNvnFvymUGk511UIFAfZSFU7XVpHLqTFqJCFPoisZ6e3SVmsp3BfdLm03mYM5NVw0PulMVTlNY49v/lLkv8poh695GrkcT5ds30r7kH+mpz/4nsV1NLnNRc6qkYcNpHLRMpUaDqXyuW0AlLpVE3ibWt4Zd4Rsir5kmG9mD2jhtzej/O6SWTVcZNqcafUuqeEObzW7yCIFoqS+/pnkcTzl+eMez17NtII30FRwhOWvf8PF1IHCAOcvwZkznYbTLuMWg8qvxA9rKb6n57P7EmEfCVkP8PcqsYngcF+UBb9jlN99Mq+Gm96GOZeG81Ijy3eP/RAps8iQuWhy/HHuni/UdQvk0TY4wgp2n/SgqMEHZqdIozBvkAoOWxcvNRtUfiXjPj7WnGruGqPGEjIvRbv+rb7HnkBX9gte2mwyB1L0riCgFEWTT5vna7i32qBqH+vXcDfUUUcenkmo75ooj9K95pKqMchvOPCxgW4Aq4GVGq7Jb0SMwg/rJBOdXCXiqOLINih552/p2GbhfVtuabvJDAgazieyHjXuLaevrwpgrM0dVZvQcP9uMk7TmId3VbDonAjuwSj4xAvuWYdLJE0yDQrfqdNw2tscSpnr02bq6zxWuaSv3qjBhMxIyZfKdpZS/5U1sOiVS1ZPhYa70ZwTg2k8icyl4eJxKk7111N9ESkaJdX02nwcEsGKv7h7pIJN90xwDybBJ+7GxivoQVkPLyfgq0P7efet4SLK9VC3CfK9MWoyIXNRtB1uU8d2uqIfb240J7IFKjVcekpo1PVVEdtcVedyeCRSOEqq67UZaftUa+4mBqsOGuEe7DHVcGify8Nu3T6eAr2h963hova5OlfchrYNkdekZDvcNu7Z+qVsMXVbbSQ6qjXc55QgOrtGHuonarjCaNYxIq1GSbW9Nh+HVB/fv8Z6uy4a4B7MMZU/MLrl3w68zKXUV9RwGp0v0Ro1mpB5KNkOt7HAG2UrTDxbvkMMNJy8T3q0U/R5Gq7LLwT6JyKNRknVvTYjx15u5l/CkN9HKtyDMbbyBz2i9jcBUO7wDf2SGu5TxYWKQlujVhMyCyUCZ1NLqaWLqW5ps4k9FhpOduwOl16epuG6/CKanJkaJdX32owcgtjSv3RysnLcgy228gc5V/98i0DkwTf0i2q421bWvrjUjc135LUo2Q63tdhpZW8Mv7TZxB4TDSfGih0uphoucA4Ya7guM//77UKhxTXcwSFyZ01xNaH5TRUye0mLe7DEVv6kFlPB3/FGkJfVcP9u4aELd8b1XJMh66Vkktnckc2+5IfLQw07xEbDHYQBNZw+nxREIecykj74t4PcGZEmo6QZvTYF905uQNyDNDu731RB1UH5uAdLjOUPatePuxc8eLzZpVLDNWWtmIDKryS5ifnwVnTr7qbiMJAXo2Q7XLO00bkUHS/noYYdYqPhRM3UPCZ8ToxfnTO9D2f/5jSdEWmxzpBMcO9ku/qljna/iYKqn/JxD4YYazj0jf2jKsDrG7sxdebB8e3ipWaDyq9EJf2bNv8eE6t2E2JOwXa4rS2lFsZP4aGGHWKk4aSfzWBDHBx5cBVRRzOwJqSG8vu5jUzrK9Zw+YpH6AP3mwY1uKt8Gqp7Gsq6CC2mfp+dAfcdCJ+flfc0zH1f6qnuQeiX4J3PuK6t6KI0Qp5CibrZ3FJq4WKqW9pqYo6VhhM8u8NyUCrDNiVWUq/dG/ga2ZWGEzrB/aZBDbacoa23kgWpUeB0jRA3oFLD+cJWZLXqWRxP2vvaeKyBrJaS7XDN0kbnU7SY6pe2mphjpeHgXvOxIECThDNsVC8M4r7F+das4VxuWcIVnH9loQPFa9ZwSJt+6bQu/jdBcOjMg51ptUk4gPKf7h84nnS7iTYWTou8DgXb4ba3lFq4mMqNrPvDSsMJumm4kBVAKmfXJsEDdRXnxMU1nKCE2+zCcFnuNwnSjJZbX601HJJTXzbHvxCk5ijNQ6msXv7IDG9Ufhaacw7cHU1WSsF2uA0upZYtpm5RrBIZMw0neHYH6br5f0X4O6yXV4AW13CC7sr/gAqwLJesr6oRQ8zDcqDHe4SaVBpbSvMCSqbbJBzi+L8E6Ltjqe/mY3JVtVnIMkJESvxTm9zqX7SYurTRxBwzDSfE+R0IJ7RZwW5tBi8iXhs55/IaDk+c13TmEQGW5f7SoPOIhrudzDUckjsn+FZr6s3rUDKnMRn5V/1fCjTxLHh2IHGVg1vOMkIwBdvhthk2rSjGg1vaamKNmYbTbL+6gQae3WSF1aRL5OxQxkham14bE3AvZp+A7GFRzV8a1GLDe83NNRwaae+oyeL6gdI8ODGovj3QkGzvSax7yQIX789v/JKWEYIo2A7XLm1zGSVXirVLG02sMdNwgmRoB+lQqvmblFyXChm2GfXaCME9ni1ycVH3NPN7RWe44gC9pBvgzLLYAwkXaFT7wtBjfXB3BpDEZXePIYcONZsajqyUAmWzyaXUsjtTeRZpd9hpuKAsCKVzVk2ChjTFOSNpjXpthBQVxeUVhbeF9OlEhltf7TUc6qQWKNLGwjw4M2iWndGStcIOn9k5xnSo2UsbRkiUgu1w21xKTdxTDmBgx91hp+GwC2lY0OyuHzRhpnUJbEFGWl9lu3AwNVdX4efx+MrqQZqmqhmP2Gs4tJh6iT95ud+05sEVGsW4RU/18X2K9hgYqenGx0nlw7foMUoBWSM51yz+0C5tcykli6lL20yssdNwuKRhQeg7SRmsoInGo39MgcxITrZ4S18ksVGvjemhDXbBXh7L6UAa5THh6MNoBklmuC4+b8eL3BSteXBquKYXYlAdgxGJ3seNqksOifsykERMFgzbzUUZskY6NGAxzdI2l1LQ1u02lgDsNJz6vvYeJNPto4/6Wgb6r7g92DUdSVxci0wHbfjIW00VTmc9FoParFPUcT0+FE0zaLi8NYRGLEtrHhb4bdLeHuQcjPgOJNJppbjX9d509OUkd47Ubq+yi5Dngn5smO3GTCtZTHVLG02MWUDDoUU+1Up9vJbBPFc8eDvYgkhilNRrWoERf5VXfciPo+BmHyRE6VpNLfEeawZpZtBwWWsIiTe02jzo/OtTjjjoyhqkQk9e4ef7VFrRHnlsOijdJYvuQU6vMIuQJyPtRgFsMsDvF0IwCIhf2mhijJ2Gw7vJRuIM/sqcopIQzfmobeC4ThaPlUFGa72iEWVGfGSIOLyNabyDtwOpNI64uKAePe45NBwyOkbiDa02D++z8XIN8FmMtlKjJ58o/ov4d1H7kKK48FBhFiFPpmA7XLO0zeUUxFHZ6gEOglhAw8FZIenQQOYOXC3wXFLqc0v49We01ifbICMH377qFpwbdK7jRjtICrsr3RAgToblz6LhctYQGrkovXlYXRfe/tEO08EnnxbuwAf++HsK8SRpqV7lqCXkueRfXrDdpdQixbrl5pIYhhoO6oaxhoMDL3nUDeRsB4lK29PjroikLq0lRWot4KxYWnOiM29UQEDpUtLhEH/g47W/OTRcxmJq6pWlNw//VN6lZ4L3GIxywScvFn8DLJwPfk4dKNwlyi53axPyfKSv1zjbXUotW0xd2mZijKGGC6igyTVRPUqZ2L8NJNxINaDCE/vtpCtaIslRUp/opSSdYMdXa9tEAVJg1o+pUMYHLmURByTc5BnOouFSnXQn9YbWmyeoa2FoNVBuTr5YYKMSIxftfXSPidDwTmlcODw2GheV7JoCUdMsbXMN+ZLV8h5FsgYMNRxemx+nxB5g0ROH3OQj1QALF2cdPNdGGiDU4tMdJZPelNufhJY0PuGjmvyEe5RSFHFH9PZoRgln0XD6xdSxOWMyzOtwLR16IkjpfkQcWcKpIGnotuCBD5Vf6RaDALIpQwER8kzyT2pue22x4HJYw3sUyRow1HC4qEnSHibFsxXe49UoC5caJMy1sQbMqOFUPqZLG+2nQ5vc5Dr16Qh7KvD8joTDVIXPouHUi6nJN3SGeZLMB+udxz7HsoATQzmNva7tMCG0xEndA+cIhvglK0SYzwB+aZOrKDiG65e2mdiyjIYTZMM1rhsO2L00nk0CLBv7lWQJ91wNJ3oE77x3p8dous75TuNYd9MKhWwhkvxmYoA5mnHaeTRcp2jqjeRmlxzzpAkietrkJDzKdppceiGDfZBtjzKMHWVws7fkbsWuwYj5hCxNEH5CcTa+tAh//xAeTN0ZhhoOC7Ppz0RSG71vxsnFBcJxanwyCW4OhwuDP0SyoKS5vRYhyz/+Hj7RJ4/9gPFE/UmYahMnOPum7pl5NJxo8wPJXVs55kkRWyJ6F+urD7AWKR2qu3aTn9FBqmH83IR7JKHQhd5Wbocjq0T4AcXZ+p6A1zqHSyIYajg8rbqMtN/D7PzW/CY9OC8qrImZgpOvj390Se6SLyJ51OYUEBLmlHNtYvV1cp7L6X5pU9N2vZR4Wv48Gk75/Zn+5swyL7Hb5t2735THtpMHlYuVHw/V+0d/bu8D2J3EdfPpmrnkbm2i1gjzA5dSyQrRftrd2fqVcfkt5sHUnbGQhtN8PlyDxsU0DSonbhHomokporvkm0hrUdLcXouhXE0tACxUK+r78vf1qVSR1s+k4XTfn22ynDzz0jE1r6p+QuJSsyX762eRfGLTrxUxllTnxsnlwzGT5IQsT/4Wf7e0ybXkzxUbXz0mI56i4SLKIbEBTU9kG5Jc9OXk7kmT7pJvIq1FSXN7LUrJPXgaUJAKq/piUZpn0nDC0uAD5ffRx83TqF0NcX/ov7JbrGPE3Avy76Lv7k6+lO9bdy8eIU8m+96CSdyrzdHlNpkHU3eGoYbDexFiJUkXemYQ82coPsaCzpnxS6NvbHavRck/XqUBX72Zv6siistpSmUX9Qp7FNt3M80rWLqI0SJzjL5toleeKGzvVb5vfsqTdZI9qWx/T0D+VQ1+aZOJKU/RcNEfSsE1IVOic1XBeesETt/Y7F6L05m3QT6AGCwqiLZ9Lg2nkZ1tuphc80yGrTBz2HzbxJ+0kVLf/iYisk/y3/zb90nlRzXevm4ljzxFw8VXXix8TfG5qjMoeYDTNza71wDmbZAVjYX/J/MxV3aQZjFVcXgy27yupGuGiJdnWaxrg4OmVhsYFBcbE/J88j+wdjCSQ26buRFiX1hqODhDgE0HXe7gm9DGCzZ3xEW+1lDS7F5DdNaNAJ31Q73/B8zsc2k4xWKqJhJSvnldUe88ADfDfVPv6YMf2kYbGLiSSlZJtqN5D7HS8s9xLG0xMcVSwwVYFPja6bJHn9JC6+1kkYqybcqms21Dm6iudn5HK7Wzabj0CzvV5ELzurIO+iVxD229iBMmJpPtfJpuJeT5ZPuZ26UtNkB3uuuRHTgfyR1LDYcnVQdydNnD7xG8rm926vWHSFdkJC2l4C48SFI41Io4WMFsGi797tK8q0rM68q66BvFk6gTceJKrcF2Pq/oVUIWIHssN0tbbEGf22q3tMXEEksNhzUHLKrGYSZtrC7TI1d0ND2ygwCVkd1rAs4sTtx7o6iuRvliZTKbhkt+dasWSorMqxi2IMz0kLeKB3+RlWu1iOOOaLJSsr3M+7iyIHsFuV3aYmKJpYbDPyG8i1K4zadqIJZMVf0RtSByIQsqJLvXJA6hoBkRlOcI8f3pKQSNOJ+GS/kpW00hZeYVi6ygW8c49oXlpyVW5YeBqlMJWYDsTyu/tMUmZJ+C8ktbTCyx1HDCKWecKXVVKSDpzsgXce8HvDw3LR+lzO61RDMMXHG9U1eXvHUsTicok/k0XOroikouFZrXlA1bdVCOQ3a00i+ubbroQtO/y99+LAayW7J/Mzs5nJPbbB5M3RWWGk5Y3JJe/SULU4kFoxu5Iu5rekV/dJPiUcr8XpORLq1UcfU5W1ibUFCDOLHPp+FSF3Koyig2T7yKKk6GmC5z9QXdpFS8FBy/V5WQVZD7i9n+JQ3f5GrXfSwhkx9MNRyWG+J8mq0bdHNh1nrUT5FIFUz7AhU0TVlL0+X0zZjIBbEyiutjRzXIGnFGDScvpraqMsrNa3JfnVliukC9X0FYuIjpIbPozPIJeT7ZIaX2srUz+/Db0gYTS0w1nLAw34gZXcgYgH2rNEe/HnX9bSuaNqdfLqgoP0lZT7GKu2YruE8OWR6mpOtnRg0nv7R1iqnGvKxhW/Aosp57nr81y/SC8gl5NtnbZ/ayMSA7ukiztMXEEFMNJ2yIS33yOK3eUiu4r1JVW38eZieoQidKBSX0GebpOfhe2T+PXXUqnHUPJ21tnUsWNqOGExdTleE768xznbajmqIGNp1ST+crLPUv7oueCo6snOxdJ7sZ0n1mw93SBhNDTDWctDDvUnkbhUy5KjTDkLeQKvPSPiSHKnSiCFBCn2mgmuM53T8P9OeqDbtvnaIK3yhKmlPDSYsIyo/sWvM0w/a9VEx/cmgV3yGDMaymOWlPN1z24rEgOyZ3F8h+tvZ3eQ2/NEsbTAxpHKQxLU2jKI5naVLpu7eSqbARtE/ftaMij8j+cbGGvabmeAq6H+m7rz9xdWhFH5C6Cjgmqi38tBGPN23xBubJwzacmvyGDU0UH/v1Mh7DOUW3XZ8aS2cKOLIN8r5z97O9Mye6yHv1+4gQicObD9Pf4TWc26a80M+ZajLLVha5GO40bcsj/cU7s8qO7TnEq9jNMoQNt2E7Vbzvds/C+UvksYfuVC/Wm8+yI0/58zmH88nVm07I83jT7j7Y064wYRPT6CddtzpDiJaje/O/nEw8NrepqrUucjGOzvsQBpN6CMH7NzdDZQfnTn9P403lUH1R3H2I+Tk8so1zjz8LWx3tHn5zt9Ib09IJeRZKGRcJ3L5ZdPu+O767CSGEELJqNDJOHW97A6QjPl47bokghBBCyAZIyrg9aZrETbEUcIQQQgjZELKMW9o6U4SGcg8cIYQQQjbHGzypup/IIjdQVC+LCAWEEEIIIQtw9NEd//uJLHIjGinzwjAihBBCCNkyTTv1U+3LPzW5drDnFjhCCCGE7IHRquqeIovcGDQuGISNJIQQQghZCc3p7o5LXeC9Nbq/HXC8V4UQQggh+8P9XIzXLm2IMe33Auom7x4ihBBCCFFwePvUcXu7LLChfiOEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEII2SH/AePch+wKZW5kc3RyZWFtCmVuZG9iagoxMSAwIG9iago8PAogIC9OYW1lIC9JbTIKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggMTUgMCBSCiAgL0ZpbHRlciAvRmxhdGVEZWNvZGUKICAvU3VidHlwZSAvSW1hZ2UKICAvV2lkdGggMjUwMAogIC9IZWlnaHQgODg1CiAgL0JpdHNQZXJDb21wb25lbnQgOAogIC9Db2xvclNwYWNlIFsvSUNDQmFzZWQgNSAwIFJdCiAgL1NNYXNrIDEwIDAgUgo+PgpzdHJlYW0KeJzs3U2rZveZ5envk6Me10A4QVm2MyTZenUGslWWwRgNbNwCJ4K2wWBDYzAamKQnSc5SUw1F9qhA4/pObqkiWqEInTjnef/d/72vi/UB7L3ufThbC+L8/e8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDdv/7P//Xt1P9z2It/+x8/eSH1/yIAAAAAAAB4cT+1pXJ7391S7aoAAAAAAABU7plQbanc2P1bqlEVAAAAAACAaztkP7WlcnsHbql2VQAAAAAAAC7r2AnVnMotnTCkGlUBAAAAAAA42Tn7qS2VWzpzSzWqAgAAAAAAcIhLTai2VG7mUluqXRUAAAAAAIDvuviEakvlZq6xpRpVAeB8//DuLyekfgwAAMDG5V89PnwArud6E6o5ldu46pBqVAWAB+X/xcB/bQAAAG4g/37x1QNwS7eZUG2p3MDNtlSjKgD8fdn/euA/NQAAAEfJP0x88gAkbjyh2lK5gdtvqUZVAPYj/8afkLoEAADg6vLvDp88AK1qQrWlcm3hkGpRBWCT8q/4+akrAgAALiD/spiZuhaAW8snVHMq15YPqUZVADYg/1pfN3V1AADAofLPh+VSNwZwXflyakvlNvL91KgKwKLyr/Ltpa4UAAB4Uf6ZsJnUTQJcXr6c2lK5jXw2taUCsJb8A3wnqXsGAID9yj8Htp26XoCLyZdTcyo3kG+mhlQAlpB/a+85dfncIb8KETk/9Q+SQ+UPSpZLfbOwtvwV3lvqwgHOlc+mtlRuIJ9NbakATJZ/Wcu3U58Dz+THICLnp/5Bcqj8Qcn2Uh81TJS/mFKfAMCJ8tnUlsoN5LOpLRWAgfLvaLk/9YHgHRHZQuofJIfKH5TsJ/Wxw63lL53cmfouAI6Tz6a2VK4t30xtqQBMk384y1Gp72W/8upF5PzUP0gOlT8o2XPq84dryV8ueTD1jQAcKp9NzalcW76Z2lIBGCL/UpYzU1/Q7uSNi8j5qX+QHCp/UCLfpH4b4Fz5SyQnpL4agIfls6ktlavKN1NDKgCt/LtYLpv6oHYk71pEzk/9g+RQ+YMSeVnqlwMOlb8scn7qIwK4Tz6b2lK5qnw2taUCUMm/heV6qY9rF/KWReT81D9IDpU/KJFDUr8ocLf81ZDLpj4ogLvls6k5levJN1NbKgCJ/PtXbpb61rYsL1dEzk/9g+RQ+YMSOTb1SwN+cm489X0BvCjfTG2pXE++mdpSAbix/JtXktR3t015rSJyfuofJIfKH5TIyanfHvYoP3u5WepbA3gm30xtqVxPvpkaUgG4jfwjVyakPsOtyQsVkfNT/yA5VP6gRM5P/RqxC/mdS5L67gC+lm+mtlSuJN9MbakA3ED+YSvTUp/kduRVisj5qX+QHCp/UCIXTP0+sUH5VcuE1GcI7F2+mZpTuZJ8M7WlAnBV+cesTE59nluQlygi56f+QXKo/EGJXCP1i8UW5Gcso1LfI7B3+WZqS+Ua8s3UlgrA9eSfsbJE6jtdW16fiJyf+gfJofIHJXLV1G8YS8rvVsamvk1gv/LN1JbKxeWDqS0VgCvJP11ludQ3u6q8OBE5P/UPkkPlD0rkBqnfM5aR36oskfpOgT3KN1NzKheXD6aGVAAuLv9claVT3+968spE5PzUP0gOlT8okVumfuGYKz9OWSv1wQK7kw+mtlQuLt9MbakAXFD+lSrbSH3Ii8n7EpHzU/8gOVT+oERun/q1Y5z8JmXR1JcL7Eg+mNpSubh8M7WlAnAR+ZepbC/1US8jb0pEzk/9g+RQ+YMSqVK/fIyQ36GsnvqEgb3IB1NzKpeVD6a2VAAuIv8mlQ2nvu4F5B2JyPmpf5AcKn9QIm3qV5BMfnuypdTnDOxCPpjaUrmgfDA1pAJwpvw7VPaQ+synywsSkfNT/yA5VP6gRCakfhG5qfzeZJOp7xrYvnwwtaVyQflmaksF4Bz5F6jsKvW9z5VXIyLnp/5Bcqj8QYnMSf06cgv5mcmGU183sHH5YGpL5VLywdSWCsDJ8g9P2Wfqwx8q70VEzk/9g+RQ+YMSGZX6jeSK8uuSnaS+dGCz8sHUnMql5IOpLRWA0+Tfm7Lz1G/AOHkjInJ+6h8kh8oflMjA1O8ll5cflewq9b0D25SvpbZULiUfTA2pABwr/8wUeZL6VZglr0NEzk/9g+RQ+YMSGZv67eQy8kOSfaY+fGCD8rXUlspF5IOpLRWAY+UfmCIvpH4npsiLEJHzU/8gOVT+oEQmp35BOVd+QrLn1OcPbFA+mJpTOV8+mNpSAThc/l0p8rLUL8cIeQsicn7qHySHyh+UyPzUrymnyM9G5B/89AAuLV9LbamcLx9MbakAHCj/ohS5P/Ur0ssrEJHzU/8gOVT+oESWSP2mcpz8YES+nfqFALYjX0ttqZwpX0sNqQAcKP+QFDkw9btSyh++iJyf+gfJofIHJbJQ6veVg+R3IvLd1K8FsBH5WmpO5Uz5YGpLBeBB+fejyLGpX5pM/uRF5PzUP0gOlT8okbVSv7LcJz8PkXtSvx/AFuRTqS2VM+WDqS0VgPvlX44ip6V+dRr5YxeR81P/IDlU/qBElkv91nK3/DBEHkz9lgDLy6dSWyrnyNdSWyoA98u/GUXOTP0O3Vr+wEXk/NQ/SA6VPyiRFVO/uLwoPwmRA1O/K8Dy8rXUnMrJ8rXUkArAPfKvRZGLpH6Tbip/2iJyfuofJIfKH5TIuqlfX57KL0HkqNRvDLC2fCq1pXKyfDC1pQLwMvl3osgFU79Pt5M/ahE5P/UPkkPlD0pk6dRv8N7lByByWupXB1hYPpXaUjlNvpbaUgG4U/55KHKN1C/WjeTPWUTOT/2D5FD5gxJZPfVLvF959SLnpH6BgFXlU6k5ldPka6ktFYDvyj8MRa6X+vW6hfwhi8j5qX+QHCp/UCIbSP0e71FeusiZqd8hYFX5TmpL5TT5WmpLBeAF+VehyLVTv2RXlz9hETk/9Q+SQ+UPSmQbqV/lfcnrFrlI6jcJWFU+ldpSOVY+lRpSAXhB/j0ocpvUr9p15Y9XRM5P/YPkUPmDEtlM6rd5L/KiRS6Y+n0ClpRPpeZUjpWvpbZUAL4t/xIUuXHqd+5a8gcrIuen/kFyqPxBiWwp9Qu9fXnFIhdP/VYB68l3Ulsqx8rXUlsqAN/IvwFFktRv3lXkT1VEzk/9g+RQ+YMS2Vjqd3rL8nJFrpT63QIWk++ktlSOkk+ltlQAvpF//YmEqd+/y8sfqYicn/oHyaHyByWyvdSv9TbltYpcNfUbBqwk30nNqRwln0oNqQA8kX/3ieSp38ILy5+niJyf+gfJofIHJbLJ1G/21uSFilw79UsGLCbfSW2pHC5fS22pAPzdf1gQ+f9Tv4uXlD9METk/9Q+SQ+UPSmSrqV/u7cirFLlN6lcNWEm+k9pSOVA+ldpSAfi7/7Ag8nzqN/Ji8icpIuen/kFyqPxBiWw19cu9EXmPIrdM/cIBy8h3UnMqB8qnUlsqAPmHnsjA1O/lZeSPUUTOT/2D5FD5gxLZcOr3e3l5gyK3T/3aAWvIR1JbKgfKp1JDKsDO5Z94ImNTv50XkD9DETk/9Q+SQ+UPSmTbqV/xheXdiSSp3zxgDflIakvlEPlUaksF2Ln8+05kcuoX9ALyZygi56f+QXKo/EGJbD71W76kvDWRMPX7B6wh30nNqTwon0ptqQB7ln/ZicxP/ZqeK3+AInJ+6h8kh8oflMgeUr/o68krE2lTv4LAAvKR1JbKg/Kp1JAKsFv5N53IKqlf1rPkT09Ezk/9g+RQ+YMS2UPqF30xeV8ieeq3EFhAPpLaUrlfPpXaUgF2K/+gE1kr9St7uvzRicj5qX+QHCp/UCI7Sf2uLyNvSmRI6ncRmC4fSc2p3C+fSm2pAPuUf8qJrJj6xT1R/txE5PzUP0gOlT8okf2kft0XkHckMir1GwlMl4+ktlReJt9JbakAu5V/x4ksmvrdPUX+0ETk/NQ/SA6VPyiR/aR+3afLCxKZlvqlBKbLR1JbKi+T76SGVIB9yj/iRJZO/QYfLX9iInJ+6h8kh8oflMiuUr/xo+XtiAxM/V4Co+UjqTmVl8mnUlsqwA7ln28iG0j9Hh8nf1wicn7qHySHyh+UyK5Sv/Fz5dWIzEz9agKj5QupLZU75TupLRVgh/JvN5FtpH6Vj5M/LhE5P/UPkkPlD0pkb6lf+onyUkQmp35BgbnyhdSWyp3yndSWCrA3+VebyJZSv9BHyJ+ViJyf+gfJofIHJbLD1O/9LHkdIvNTv6bAXPlIak7lu/Kd1JAKsCv595p8O0rcRi77kl5P/qBE5PzUP0gOlT8okR2mfu9nyevYbZS1UC7+3gGbkS+ktlRekO+ktlSAvcm/13Yb5W47N+j3fPlTEpHzU/8gOVT+oET2mfrVnyIvYifR4wZy7RKBReULqTmVF+Q7qS0VYFfyL7VdpW5b3btr/EH5IxKR81P/IDlU/qBE9pn61R8hb2HD0ez20nYKjJXPo7ZUXpDvpLZUgP3IP9P2kLrkl8qfzB5Sl/yw/BGJyPmpf5AcKn9QIrtN/fb38gq2l7rSO+TPZEupywSGyhdSWyrfyEdSQyrAfuQfaBtO3e1x8se17dT1PiB/PiJyfuofJIfKH5TIblO//bH8+W8mdZOHyh/UBlJ3CAyVL6TmVL6R76S2VID9yD/QNpm61bPkT2+rqYu9T/5wROT81D9IDpU/KJE9p/4BkMmf/DZS13ii/Lktnbo9YKJ8HrWl8kQ+ktpSAfYj/zTbWOo+Lyx/nhtL3ed98ocjIuen/kFyqPxBiew59Q+ATP7kl07d3mXkj3HR1L0BE+XzqC2VJ/KR1JYKsBP5d9mWUpd5Rfmz3VLqMl8qfzIicn7qHySHyh+UyM5T/wwI5M983dTVXV7+SJdL3RgwUT6PmlN5Ih9JDakAO5F/l20jdY03kj/nzaRu8m75YxGR81P/IDlU/qBEdp76Z0Agf+Yrpi7tuvLHu1bquoCJ8nnUlko+ktpSAXYi/yLbQOoOA/kz30bqGu+QPxMROT/1D5JD5Q9KZOepfwbcWv7Al0vd2I3kz3mh1F0BE+XzqDmVfCS1pQLsQf45tnrqAmP58189dYF3yJ+JiJyf+gfJofIHJSL1j4Gbyp/2WqnrurX8ga+SuihgnHwbtaWSj6SGVIDNyz/Elk7d3hR5EaunLvBF+QMRkfNT/yA5VP6gRKT+MXA7+aNeKHVXmfzJL5G6JWCcfBu1pe5cPpLaUgH2IP8QWzd1dePkjSydur3n5E9DRM5P/YPkUPmDEpH6x8Dt5I96ldRF9fIKhqfuB5gon0fNqXuWj6S2VIDNy7/CFk3d22h5O4um7o2byu9tQuoSmCI/xTx1A438scsLqS/iFvKHvETqlgbJuxieuh9gnHwbtaXuVr6Q2lIB9iD/BFsxdWkLyDtaNHVv3E5+bBNSl8AU+SnmqRsYJO9iz6nLv4X8Ic9PXdE4eSOTU5cDjJNvo7bU3coXUkMqwObl31/LpW5sJXlZK6YujdvJj21C6hKYIj/FPHUDc+XV7Cp121eXP+H5qSsaKu9lcupygFnybdSculv5SGpLBdi2/MtrudSNLSlvbbnUjXEj+aVNSF0CU+SnmKduYAF5RztJ3fN15Y93cupypssLGpu6GWCcfBu1pe5QvpDaUgE2L//yWit1XQvLu1sudWPcQn5mE1KXwBT5KeapG1hJXta2U9d7RfmznZy6nDXkNc1MXQswTr6NmlN3KF9IDakA25Z/di2UuqstyEtcK3Vd3EJ+ZhNSl8AU+SnmqRtYUt7aJlO3ekX5sx2bupmV5GXNTF0LMEs+jNpS9yZfSG2pANuWf3AtlLqr7cirXCt1XVxdfmMTUpfAFPkp5qkbWFje3fZSV3oV+VMdm7qZ9eSVDUzdCTBLPozaUvcmX0htqQDbln9wrZK6qK3JC10odVdcXX5jE1KXwBT5KeapG1he3uCWUpd5FflTHZu6mSXlrU1LXQgwTr6NmlN3JV9IbakAG5Z/ba2SuqhtymtdKHVXXFd+YBNSl8AU+SnmqRvYiLzHbaSu8fLyRzo2dTMLy7sblboNYJx8GLWl7kc+jxpSAbYt/9paInVLW5aXu1Dqrrii/LompC6BKfJTzFM3sB15lRtI3eHl5Y90Zupa1pbXNy11IcAs+TBqTt2PfCG1pQJsWP6dtUTqlrYvr3iV1EVxRfl1TUhdAlPkp5inbmBr8kJXT13gheXPc2DqTrYgL3FU6jaAWfJV1Ja6E/k8aksF2Lb8O2t+6or2Ii96ldRFcS35aU1IXQJT5KeYp25gg/JOl07d3iXlD3Ng6k62I69yTuoqgHHyYdSWugf5PGpIBdiw/CNrfuqK9iWve4nULXEt+WlNSF0CU+SnmKduYJvyWtdNXd0l5Q9zYOpOtiOvclTqNoBZ8mHUnLoH+UJqSwXYqvzzan7qivYoL32J1C1xFfldTUhdAlPkp5inbmDL8nJXTF3axeRPcmDqTrYmL3RO6iqAWfJV1Ja6efk8aksF2LD882p46n72K69+fuqKuIr8riakLoEp8lPMUzewcXm/y6Vu7GLyJzkwdScblHc6JHUPwDj5MGpO3bZ8HrWlAmxV/m01P3VFu5a3Pz91RVxeflQTUpfAFPkp5qkb2L684uVSN3YZ+WOclrqQbcprHZK6B2CcfBW1pW5Yvo0aUgE2LP+2Gp66H5yoE92d/KgmpC6BKfJTzFM3sAt5y2ulrusC8mc4LXUhW5aXOyF1CcA4+SpqS92wfB61pQJsVf5hNTx1PzyVX8Lw1P1wYflFTUhdAlPkp5inbmAX8pbXSl3XBeTPcFrqQrYsL3dI6h6AWfJV1Jy6Vfk2aksF2LD8q2py6nJ4Jj+G4an74cLyi5qQugSmyE8xT93AXuRFL5S6qwvIn+Go1G1sX17xhNQlAOPkq6gtdZPybdSQCrBV+SfV8NT98Jz8Hoan7odLys9pQuoSmCI/xTx1AzuSd71K6qIuIH+Go1K3sX15xRNSlwCMk6+i5tRNyudRWyrAVuWfVJNTl8Md8quYnLocLik/pwmpS2CK/BTz1A3sS173EqlbOlf+AKelLmQX8pbz1A0A4+STqC11e/Jt1JYKsFX599Tk1OVwt/wwhqfuh4vJb2lC6hKYIj/FPHUD+5LXvUTqls6VP8BRqdvYi7zoPHUDwDj5JGpO3Z58G7WlAmxV/j01NnUz3Cc/j8mpy+Fi8luakLoEpshPMU/dwO7kjS+RuqWz5E9vVOo29iIvekLqEoBx8knUlrol+TBqSAXYsPxjamzqZnhAfiGTU5fDZeSHNCF1CUyRn2KeuoE9ykufn7qi0+WPblrqQnYk7zpP3QAwTj6J2lK3JN9GbakAW5V/SY1N3QwPy49kcupyuIz8kCakLoEp8lPMUzewR3np81NXdLr80Y1K3ca+5HXnqRsAxsknUXPqZuTDqC0VYMPyL6mZqWvhUPmpTE5dDheQX9GE1CUwRX6KeeoGdirvfXjqfk6XP7pRqdvYl7zuPHUDwET5JGpL3YZ8GDWkAmxV/hk1NnUzHCG/lrGpm+EC8iuakLoEpshPMU/dwE7lvQ9P3c/p8kc3KnUbu5M37t6AafJJ1Jy6Dfk2aksF2Kr8M2pm6lo4Tn4wk1OXw7nyE5qQugSmyE8xT93ATuW9D0/dz+nyRzcndRV7lJfu5IBp8j3UlroB+TBqSwXYqvwbamzqZjhafjNjUzfDufITmpC6BKbITzFP3cB+5dVPTl3OifLnNip1G3uUl+7kgIHySdScurp8GDWkAmxV/g01M3UtnCI/m7Gpm+Fc+QlNSF0CU+SnmKduYL/y6ienLudE+XMblbqNncp7d3XANPkeaktdWj6M2lIBtir/ehqbuhlOlF/O2NTNcJb8fiakLoEp8lPMUzewa3n7Y1M3c6L8uY1K3cZO5b27OmCafA+1pS4tH0ZtqQBblX89zUxdC2fJ72dm6lo4S34/E1KXwBT5KeapG9i1vP2xqZs5Uf7cRqVuY6fy3l0dME2+h5pT15WvorZUgA3Lv54Gpu6Ec+UnNDZ1M5wuP54JqUtgivwU89QN7Fre/tjUzZwof26jUrexU3nvrg4YKN9DbamLyldRQyrAVuWfTjNT18IF5Fc0M3UtnC4/ngmpS2CK/BTz1A3sXX4AM1PXcor8oU1LXch+5dW7OmCafA81p64oX0VtqQAbln86DUzdCZeRH9LM1LVwuvx4JqQugSnyU8xTN7B3+QHMTF3LKfKHNi11IfuVV+/qgGnyMdSWuqJ8FbWlAmxV/t00M3UtXEx+SzNT18KJ8suZkLoEpshPMU/dwN7lBzAzdS2nyB/aqNRt7FrevsMDBsr3UHPqcvJV1JAKsFX5d9PM1LVwMfktzUxdCyfKL2dC6hKYIj/FPHUDe5cfwMzUtZwif2ijUrexa3n7Dg8YKB9DbalryVdRWyrAhuXfTQNTd8KF5Rc1M3UtnCI/mwmpS2CK/BTz1A3sXX4AM1PXcor8oY1K3cau5e07PGCgfAw1p64lX0VtqQBblX80zUxdCxeWX9TM1LVwivxsJqQugSnyU8xTN4Aj3MhZ5g9tVOo29i4/AIcHDJSPobbUVeSTqCEVYMPyj6aBqTvh8vKjmpm6Fk6Rn82E1CUwRX6KeeoGcIQbOcv8oY1K3cbe5Qfg8ICB8jHUnLqKfBW1pQJsWP7RNDB1J1xFflczU9fC0fKbmZC6BKbITzFP3QCOcAtnmT+xaakL2bv8ABweMFC+hNpSl5BPorZUgA3Lv5gGpu6Ea8lPa2bqWjhafjMTUpfAFPkp5qkbwBFu4SzzJzYwdSe7lrfv6oCZ8jHUljpfPokaUgE2LP9iGpi6E64ov66BqTvhaPnNTEhdAlPkp5inbgBHuIWzzJ/YwNSd7FrevqsDZsrHUHPqcPkkaksF2Lb8i2la6kK4rvzAZqauhePkBzMhdQlMkZ9inroBHOEWzjJ/YgNTd7JrefuuDpgpX0JtqcPlk6gtFWDD8s+lgak74eryGxuYuhOOkx/MhNQlMEV+innqBnCEWzjL/IkNTN3JruXtuzpgpnwJNadOlu+hhlSAbcs/lwam7oSry29sYOpOOE5+MBNSl8AU+SnmqRvAEW7hLPMnNjB1J7uWt+/wgLHyJdSWOlY+idpSAbYt/1aalroQbiE/s5mpa+EI+bVMSF0CU+SnmKduAEe4hbPMn9jA1J3sXX4ADg+YKV9Czakz5XuoLRVg2/IPpYGpO+FG8ksbmLoTjpBfy4TUJTBFfop56gb4Wn4G01IXcrT8iQ1M3QkA3CGfQW2pM+V7qCEVYNvyL/SBqTvhRvJLG5i6E46QX8uE1CUwRX6KeeoG+Fp+BtNSF3K0/IkNTN0JANwtX0LNqdPke6gtFWDz8i/0aakL4XbyY5uZuhYOlZ/KhNQlMEV+innqBvhafgbTUhdytPyJzUxdCwDcIZ9BbanT5HuoLRVg2/Jv84GpO+Gm8nsbmLoTDpWfyoTUJTBFfop56gb4Wn4Go1K3cYr8oc1MXQsA3CGfQc2po+RjqCEVYPPyb/OBqTvhpvJ7G5i6Ew6Vn8qE1CUwRX6KeeoG+Fp+BqNSt3GK/KHNTF0LANwtn0FtqXPke6gtFWDz8m/zaakL4dbykxuYuhMOlZ/KhNQlMEV+innqBvhafgajUrdxivyhzUxdCwDcLZ9BzalD5GOoLRVg8/IP84GpOyGQX93A1J1wkPxOJqQugSnyU8xTN4Aj3MJN5g9tbOpmAOAO+QZqSx0iH0MNqQCbl3+VD0zdCYH86gam7oSD5HcyIXUJTJGfYp66ARzhFm4yf2hjUzcDAHfLZ1Bzai4fQ22pAHuQf5VPS10IjfzwBqbuhIPkdzIhdQlMkZ9inroBHOEWbjJ/aGNTNwMAd8s3UFtqLh9DbakAm5d/kg9M3QmZ/PYGpu6Eh+VHMiF1CUyRn2KeugEc4RZuMn9ok1OXAwB3y2dQc2ooX0INqQB7kH+PD0zdCZn89gam7oSH5UcyIXUJTJGfYp66ARzhFg4yf26TU5cDAHfLN1BbaigfQ22pAHuQf49PS10Ipfz8BqbuhIflRzIhdQlMkZ9inroBHOEWDjJ/bsNT9wMAd8g3UHNqJV9CbakAO5F/jE9LXQix/AKnpS6Eh+VHMiF1CUyRn2KeugEc4RYOMn9uw1P3AwB3yzdQW2oiX0INqQB7kH+JD0zdCbH8Agem7oQH5BcyIXUJTJGfYp66ARzhFg4yf27zU1cEAHfIN1Bz6u3lS6gtFWAn8s/wgak7IZZf4MDUnfCA/EImpC6BKfJTzFM3gCPcwkHmz21+6ooA4A75AGpLvb18CbWlAuxE/hk+LXUh9PIjHJi6Ex6QX8iE1CUwRX6KeeoG9i4/gFGp2zhd/uiWSN0SANwh30DNqbeUz6CGVID9yL/Bp6UuhBHyO5yWuhAekF/IhNQlMEV+innqBvYuP4BRqds4Xf7olkjdEgDcIR9Abam3lC+htlSAncg/wAem7oQR8jscmLoT7pOfx4TUJTBFfop56gb2Lj+AUanbOF3+6FZJXRQAvCgfQM2pN5PPoLZUgP3Iv74Hpu6EEfI7HJi6E+6Tn8eE1CUwRX6KeeoG9i4/gFGp2zhd/ugWSt0VALwoH0BtqbeRz6CGVID9yD+9p6UuhCnyUxyYuhPuk5/HhNQlMEV+innqBvYuP4A5qas4S/70FkrdFQC8KB9Azak3kM+gtlSAXck/vaelLoRB8muclroQ7pOfx4TUJTBFfop56gZ2LW9/VOo2zpI/vbVS1wUAz8nXT1vqDeQzqC0VYFfy7+5pqQthkPwaB6buhJfKb2NC6hKYIj/FPHUDu5a3Pyp1G2fJn95yqRsDgOfkA6g59aryDdSQCrAr+Rf3wNSdMEh+jQNTd8JL5bcxIXUJTJGfYp66gV3L25+TuooLyJ/hcqkbA4Bn8vXTlnpV+QxqSwXYlfxze1rqQpglP8iBqTvhpfLbmJC6BKbITzFP3cB+5dWPSt3GBeTPcMXUpQHAM/kAak69knwDNaQC7E3+rT0tdSGMk9/ktNSF8FL5bUxIXQJT5KeYp25gv/LqR6Vu4wLyZ7ho6t4A4Kl8/TSnXkk+g9pSAfYm/9CelroQxslvclrqQnip/DYmpC6BKfJTzFM3sF959XNSV3EZ+WNcN3V1APC1fPq0pV5DvoHaUgH2Jv/EHpi6E8bJb3Jg6k64W34YE1KXwBT5KeapG9ipvPdRqdu4jPwxrp66QAAwp25QvoEaUgH2Jv+4Hpi6E8bJb3Jg6k64W34YE1KXwBT5KeapG9ipvPdRqdu4jPwxbiB1hwDsXT592lIvK99AbakAO5R/WU9LXQgT5Wc5MHUn3C0/jAmpS2CK/BTz1A3sUV76qNRtXFL+MDeQukMAdi2fPs2pl5VvoLZUgB3KP6unpS6EofLLnJa6EO6WH8aE1CUwRX6KeeoG9igvfVTqNi4pf5ibSd0kAPuVT5+21EvJB1BDKsA+5R/U01IXwlD5ZU5LXQh3yw9jQuoSmCI/xTx1A7uTNz4qdRsXlj/PjaXuE4A9yqdPc+pF5AOoLRVgn/Lv6IGpO2Go/DIHpu6EO+RXMSF1CUyRn2KeuoHdyRsflbqNC8uf5/ZSVwrAHuXTpy31fPkAakgF2Kf8I3pg6k4YKr/Mgak74Q75VUxIXQJT5KeYp25gX/K6R6Vu4yryp7rJ1K0CsC/59GlOPVM+gNpSAXYr/3wemLoThsovc2DqTrhDfhUTUpfAFPkp5qkb2Je87lGp27iK/KluOHW3AOxFvnvaUs+UD6C2VIDdyj+cp6UuhLny4xyYuhPukF/FhNQlMEV+innqBnYk73pU6jauJX+we0hdMgDbl0+f5tST5eunIRVgz/Lv5WmpC2G0/D6npS6EO+RXMSF1CUyRn2KeuoG9yIuelrqQK8qf7U5S9wzAluW7pzn1ZPkAaksF2LP8S3la6kIYLb/PaakL4Q75VUxIXQJT5KeYp25gF/KWp6Uu5Lryx7u31IUDsE357mlLPUG+ftpSAfYs/zoemLoTRsvvc2DqTnhRfhITUpfAFPkp5qkb2IW85WmpC7mu/PHuNnXzAGxKvnuaU0+Qr5+GVIA9yz+KB6buhNHy+xyYuhNelJ/EhNQlMEV+innqBrYvr3ha6kJuIX/IO0/dPwBbkI+ettRj5eunLRVg5/Jv4YGpO2G0/D4Hpu6EF+UnMSF1CUyRn2KeuoGNy/sdmLqTW8gfsjxJfQgArC3fPc2ph8unT0MqAPkn8LTUhTBdfqIDU3fCi/KTmJC6BKbITzFP3cCW5eUOTN3JjeTPWb6b+igAWE8+etpSD5evn7ZUAPLP3mmpC2EB+ZVOS10IL8pPYkLqEpgiP8U8dQOblTc7M3Utt5M/anlZ6tMAYCX57mlOPUQ+fdpSAfi7/w7g65vj5Vc6LXUhvCg/iQmpS2CK/BTz1A1sU17rzNS13FT+tOXA1JcCwGj56GlOPUQ+fRpSAfi7/w7gc5vj5Vc6LXUhvCg/iQmpS2CK/BTz1A1sUN7pzNS1BPJnLsemPhkAxskXT1vqg/Lp05YKwN/9FwCf2Jwkv9KBqTvhOfk9TEhdAlPkp5inbmBr8kLHpm4mkD9zOSf1+QAwRT56mlPvl0+fhlQA/u6/APis5iT5lQ5M3QnPye9hQuoSmCI/xTx1A9uRVzk5dTmZ/MnLRVLfEQClfPG0pd4jnz5tqQA8kX+3DkzdCQvIr3Rg6k54Tn4PE1KXwBT5KeapG9iIvMfJqcsp5Q9frpH6rAC4tXz0NKfeKd89bakAfCP/UB2YuhMWkF/pwNSd8Jz8HiakLoEp8lPMUzewvLzB4an76eUVyFVT3xcAt5AvnubUO+W7pyEVgG/kH6fTUhfCGvJDHZi6E56T38OE1CUwRX6KeeoG1pbXNz91Rb28ArlZ6lsD4IryxdOW+oJ897SlAvBt+QfptNSFsIz8VqelLoTn5PcwIXUJTJGfYp66gVXlxS2RuqUp8iLk9qmPDoALyxdPc+oL8t3TkArAt+UfodNSF8Iy8ludlroQnpPfw4TUJTBFfop56gbWk1e2SuqiBsm7kDb1AQJwAfncaUv9tnz3tKUC8IL8w3Na6kJYRn6r01IXwnPye5iQugSmyE8xT93AMvKm1kpd1zh5IzIk9SUCcLp88TSnPpGPnrZUAL4r/9iclroQlpHf6rTUhfCc/B4mpC6BKfJTzFM3sIC8o+VSNzZRXopMS32SABwtnzvNqU/ko6chFYAX5B+YA1N3wjLyWx2YuhOeyY9hQuoSmCI/xTx1A3Pl1ayburqh8l5kbOrbBOBQ+dxpS81HT1sqAN+Vf1QOTN0Jy8hvdWDqTngmP4YJqUtgivwU89QNzJLXsYHUHY6WtyPzUx8pAPfJ505zaj56GlIB+K78Q3Jg6k5YRn6rA1N3wjP5MUxIXQJT5KeYp24glj//jaXuc7q8IFkr9cECcId87tzzlpqPnrZUAO6UfzwOTN0Jy8hvdWDqTngmP4YJqUtgivwU89QN3EL+kHeSuuc15DXJoqkvF4Cn8rlzt3NqvnjaUgF4mfyDcWDqTlhGfqsDU3fCM/kxTEhdAlPkpyiyjdSv8krysmTp1PcLsHf51rnbOTVfPA2pALxM/p04MHUnLCO/1YGpO+GZ/BgmpC6BKfJTFNlA6vd4MXlfspnUtwywU/nWucMtNV88bakA3CP/NhyYuhOWkd/qwNSd8Ex+DBNSl8AU+SmKrJ76JV5S3ppsLPVFA+xLvnXucE7NF09DKgD3yD8Jp6UuhJXk5zowdSc8kx/DhNQlMEV+iiJLp36DF5Z3J5tMfdcAe5FvnbvaUvPF05YKwP3yL8FpqQthMfnFTktdCM/kxzAhdQlMkZ+iyLqpX9/l5Q3KhlNfN8DG5VvnfubUfO40pALwoPwDcFrqQlhMfrHTUhfCM/kxTEhdAlPkpyiyYuoXdyPyHmUnqS8dYJvyrXMnc2q+eNpSAXhQ/tE3LXUhLCa/2GmpC+GZ/BgmpC6BKfJTFFku9Vu7KXmbsqvU9w6wKfnQuYctNZ87bakAHCL/1puWuhAWk1/stNSF8Ex+DBNSl8AU+SmKrJX6ld2gvFPZW+qTB9iOfOvc9pyab52GVAAOkX/iDUzdCYvJL3Za6kJ4Jj+GCalLYIr8FEUWSv2+blberOwz9eEDLC8fOrc9p+Zzpy0VgEPkX3YDU3fCYvKLHZi6E57KL2FC6hKYIj9FkSVSv6nbl1cse059/gCrylfODW+p+dZpSAXgQPkH3cDUnbCY/GIHpu6Ep/JLmJC6BKbIT1FkfurXdC/yokXqlwBgPfnQudU5NZ87bakAHCj/jhuYuhMWk1/swNSd8FR+CRNSl8AU+SmKDE/9ju5LXrfIP3jrAY6Rr5ybnFPzrdOQCsDh8i+4gak7YTH5xQ5M3QlP5ZcwIXUJTJGfosjY1G/nTuW9i3yT+m0AWEO+cm5sS823TlsqAEfJP9wGpu6ExeQXOzB1JzyVX8KE1CUwRX6KIjNTv5q7lrcv8u3ULwTAdPnKubE5Nd86bakAHCX/ZBuYuhMWk1/swNSd8FR+CRNSl8AU+SmKTEv9UvK1/AxEXkj9TgCMlq+cm9lS86HTkArAsfKPtYGpO2Ex+cUOTN0JT+WXMCF1CUyRn6LInNSvI8/J70HkztRvBsBE+cq5jTk1HzptqQCcIP9GG5i6ExaTX+zA1J3wVH4JE1KXwBT5KYoMSf0ucof8KkRelvrlABgnXzk3MKfmQ6chFYAT5F9nA1N3wmLyix2YuhOeyi9hQuoSmCI/RZE89VvIffLzELkn9fsBMEg+ca6+peZDpy0VgNPk32UDU3fCYvKLHZi6E57KL2FC6hKYIj9FkTD1+8dB8jsRuT/1KwIwRb5yrjun5iunIRWAk+VfZANTd8Ji8osdmLoTnsovYULqEpgiP0WRJPWbx3HygxF5MPVbAtDLJ85159R86LSlAnCy/FtsYOpOWEx+sQNTd8JT+SVMSF0CU+SnKHLj1O8cp8uPR+TB1G8JQCyfOFfcUvOV05AKwDnyr7CBqTthMfnFDkzdCU/llzAhdQlMkZ+iyM1Sv21cQH5FIoekflEAMvnEudycmq+ctlQAzpR/fw1M3QmLyS92YOpOeCq/hAmpS2CK/BRFrp36JePC8osSOTD1uwLQyCfOtebUfOU0pAJwpvzLa2DqTlhMfrEDU3fCU/klTEhdAlPkpyhyvdSvF1eUX5fIIalfFIBAvm8utKXmK6ctFYDz5Z9dA1N3wmLyix2YuhOeyi9hQuoSmCI/RZGLp36ruJH80kQOTP2uANxaPnEuMafmE6ctFYCLyD+4BqbuhMXkFzswdSc8lV/ChNQlMEV+iiKXSv0yEcivTuTw1K8LwO3k++YSc2o+cRpSAbiI/FNrYOpOWEx+sQNTd8JT+SVMSF0CU+SnKHJm6neIXn6EIgemflcAbiffN4dvqfnEaUsF4FLy76yBqTthMfnFDkzdCU/llzAhdQlMkZ+iyGmpXx1myQ9S5PDUrwvALeT75uQ5Nd83DakAXFD+hTUwdScsJr/Ygak74an8EiakLoEp8lMUOTz168J0+YmKHJj6XQG4hXzfHDun5hOnLRWAC8o/rwam7oTF5Bc7MHUnPJVfwoTUJTBFfooi96d+RVhMfrEih6d+XQCuKx83Z26p+b5pSAXgsvIPq4GpO2Ex+cUOTN0JT+WXMCF1CUyRn6LICanfG6bLT1TkwNTvCsB15fvmtDk13zdtqQBcXP5VNTB1Jywmv9iBqTvhqfwSJqQugSnyUxS5SOo3iYnysxQ5MPW7AnAt+bg5bU7N901DKgAXl39PDUzdCYvJL3Zg6k54Kr+ECalLYIr8FEUunvqtYpD8GkUOTP2uAFxLPm7OmVPzfdOWCsA15B9TA1N3wmLyix2YuhOeyi9hQuoSmCI/RZGrpn7DGCG/Q5FDUr8oAFeRL5tDttR83DSkAnAl+ZfUwNSdsJj8Ygem7oSn8kuYkLoEpshPUeQ2qV81evkRijyY+i0BuIp83Jwwp+b7pi0VgCvJP6MGpu6ExeQXOzB1JzyVX8KE1CUwRX6KIjdO/c4Ryy9Q5MHUbwnAheXLZj6n5uOmIRWA68k/oAam7oTF5Bc7MHUnPJVfwoTUJTBFfooiSeo3j1h+gSL3p35FAC4sXzbDLTUfN22pAFxV/vU0MHUnLCa/2IGpO+Gp/BImpC6BKfJTFGlTv4KU8vMTuSf1+wFwSfmyWc2p+bJpSAXg2vJPp4GpO2Ex+cUOTN0JT+WXMCF1CUyRn6LIhNQvIqX8/ERelvrlALikfNlMko+btlQAri3/bhqYuhMWk1/swNSd8FR+CRNSl8AU+SmKzEn9OlLKz0/kztRvBsDF5LPm7fOrv/0/+bhpSAXg2vKPpoGpO2Ex+cUOTN0JT+WXMCF1CUyRn6LIqNRvJLH8AkW+m/q1ALiYfNy8ZT7+4stXXnv9V2//KJ84bakAXFX+xTQwdScsJr/Ygak74an8EiakLoEp8lMUGZj6vSSWX6DIC6nfCYDLyPfNW+b7P//wv/3373+VPzx+O185DakAXE/+uTQwdScsJr/Ygak74an8EiakLoEp8lMUmZn61aSXH6HIt1O/EACXkU+ct8njP//lyZD6Vf7pn3/46Qfv5VunLRWAK8m/lQam7oTF5Bc7MHUnPJVfwoTUJTBFfooik1O/oIyQ36HIk9SvAsAF5CvnDfLRZ59/M6Q+yU/eeD3fOg2pAFxJ/qE0MHUnLCa/2IGpO+Gp/BImpC6BKfJTFBme+h1livwURf7BTyRgE/Kt86r5+IsvX338/gtb6lf59btv5ounLRWAa8i/kgam7oTF5Bc7MHUnPJVfwoTUJTBFfooi81O/pgySX6NI/RIAnCufO6+at373yXeH1K/yvR/88E/vv5OPnoZUAC4u/0QamLoTFpNf7MDUnfBUfgkTUpfAFPkpiqyS+mVllvwgZc+pzx/gXPnieaV8+G//fueQ+iSPHj3Kd09bKgAXl38fDUzdCYvJL3Za6kJ4Jj+GCalLYIr8FEUWSv2+MlF+lrLP1IcPcJZ89LxGPv7iy1dee/2eLfWr/OLNH+XTpyEVgIvLv4+mpS6ExeQXOy11ITyTH8OE1CUwRX6KImulfmUZKr9M2WHqqwc4Sz59Xjzf//mH9w+pT/LJv7ydD6C2VAAuK/84mpa6EBaTX+y01IXwTH4ME1KXwBT5KYosl/qtZbT8PmU/qY8d4Fz5+nnBvPv7Px4ypD75w6mffvBevoEaUgG4oPzjaFrqQlhMfrHTUhfCM/kxTEhdAlPkpyiyYuoXlwXkVyp7SH3mAGfJB9BL5aPPPj9wSH2SN19/LZ9BbakAXFD+ZTQwdSesJD/XaakL4Zn8GCakLoEp8lMUWTT1u8sy8luVbac+cICz5DPo+fn4iy//8e13jtpSv8qv3l7+D6fWtwPAIPln0cDUnbCS/FynpS6EZ/JjmJC6BKbIT1Fk0dTvLuvJj1a2mvq0AU6XL6Hn59GvPjp2SH2SPzxe+w+n1rcDwCD5N9HA1J2wkvxcp6UuhGfyY5iQugSmyE9RZN3Ury+ryk9XNpb6ogHOko+h5+Txn/9y2pC6+h9Ora8GgFnyb6KBqTthGfmtDkzdCc/kxzAhdQlMkZ+iyNKp32DWlh+wbCb1LQOcLt9DT85Hn33+ymuvn7ylLv2HU+urAWCW/INoYOpOWEZ+qwNTd8Iz+TFMSF0CU+SnKLJ66peYjcgvWVZPfcIAp8tX0RPy8Rdfvvr4/XOG1HX/cGp9LwCMk38NDUzdCcvIb3Vg6k54Jj+GCalLYIr8FEVWT/0SszX5ScuiqS8X4HT5MHpC3vjNb88fUhf9w6n1vQAwTv41NDB1Jywjv9WBqTvhmfwYJqQugSnyUxTZQOr3mM3Kb1vWSn2wAKfLt9Gj8rO//u1SQ+pyfzi1vhQAJso/hQam7oRl5Lc6MHUnPJMfw4TUJTBFfooi20j9KrNx+YXLKqlPFeB0+UJ6YM7/M6lL/+HU+kwAmCj/DhqYuhOWkd/qwNSd8Ex+DBNSl8AU+SmKbCP1q8yO5Ncuk1OfJ8Dp8pH0kFzqz6Qu+odT6xsBYKj8O2hg6k5YRn6r01IXwnPye5iQugSmyE9RZDOp32b2KD97GZj6KgFOl0+lD+aCfyZ1uT+cWl8HAKPl30HTUhfCMvJbnZa6EJ6T38OE1CUwRX6KIptJ/Tazd/krIENSXyLA6fKp9P5c9s+kLveHU+vrAGC0/DtoYOpOWEN+qNNSF8Jz8nuYkLoEpshPUWRLqV9oeCp/F6RNfYAAp8sH05flGn8mdaE/nFrfBQDT5R9BA1N3whryQ52WuhCek9/DhNQlMEV+iiJbSv1Cwx3y90Jun/roAE6Xb6Z35uMvvvzHt9+59pD6JL94c+IfTq3vAoDp8o+ggak7YQ35oU5LXQjPye9hQuoSmCI/RZGNpX6n4QH5OyK3SX1oAKfLl9Pv5tGvPrrNkPokn/zLrD+cWl8EAAvIv4AGpu6ENeSHOi11ITwnv4cJqUtgivwURTaW+p2GI+Tvi1wv9XEBnCUfT7+dx3/+yy2H1P/2v/9w6l9++m4+odpSAThc/gU0MHUnLCC/0oGpO+E5+T1MSF0CU+SnKLK91K81nCh/d+SyqQ8K4HT5fvpNfvkf/3njIfVJHj169OkH7+UrqiEVgAPlnz8DU3fCAvIrHZi6E56T38OE1CUwRX6KeeoGRsvbWTR1b3AZ+askZ6a+IICz5Cvqv/7vP5P6ymuvJ1vqV/npj9/Ih1RbKgAHyj9/BqbuhAXkVzowdSc8J7+HCalLYIr8FPPUDawhr2m51I3BheXvlJyQ+moAzpIPqV/l+z//sBpSn+TX775pSAVgFfkX0LTUhbCA/EqnpS6EF+UnMSF1CUyRn2KeuoHF5H2tkroouKL8/ZLDUx8LwFnaIfWt333SDqlP8qf33zGkArCE/PNnYOpOmC4/0WmpC+FF+UlMSF0CU+SnmKduYEl5a/NTVwQ3kr9rcn/qAwE4Szik/uyvf8tX1Cf53g9+WP3h1Lp/ABaTf/4MTN0J0+UnOi11IbwoP4kJqUtgivwU89QNLCzvbnjqfuDW8pdO7kx9FwBnSYbUjz77PPwzqd/No0ePDKkAzJd/+wxM3QnT5Sc6LXUhvCg/iQmpS2CK/BTz1A2sLa9vcupyoJS/gPJN6lsAONeNh9SPv/jy1cfv5/vpC/nFmz+ypQIwXP7tMzB1J0yXn+i01IXwovwkJqQugSnyU8xTN7C8vMGxqZuBEfI3UeoTADjXjbfUR7/6KF9O78zH771lSAVgsvzbZ2DqThgtv8+BqTvhRflJTEhdAlPkp5inbmAL8hLHpm4GBsnfxz2nLh/gXDcbUt/9/R/zzfRl+d4Pfvin99+xpQIwVv7hMzB1J4yW3+fA1J3wovwkJqQugSnyU8xTN7AReY8zU9cC4+Rv5T5T1w5wrtsMqR/+27/ng+n9+ad//uGnH7xnSAVgrPzbZ1rqQhgtv89pqQvhDvlVTEhdAlPkp5inbmA78ioHpu4E5spfz12lbhvgAq49pH702eevvPZ6vpY+mDdff82QCsBY+bfPwNSdMFd+nNNSF8Id8quYkLoEpshPMU/dwKbkbQ5M3QmMlr+hO0ndM8BlXG9I/fiLL199/H6+kx6YX7z5I1sqADPl3z4DU3fCXPlxTktdCHfIr2JC6hKYIj/FPHUDW5MXOi11IbCG/FXdfOqGAS7gelvqo199lC+kR+Xj994ypAIwUP7hMzB1J8yVH+e01IVwh/wqJqQugSnyU8xTN7BBeaejUrcBK8lf2A2n7hbgMq4xpL77+z/m2+gJ+dP779hSAZgm//AZmLoT5sqPc1rqQrhDfhUTUpfAFPkp5qkb2Ka81jmpq4D15K/tJlO3CnAZFx9SP/y3f89X0dPyvR/88NMP3jOkAjBK/uEzMHUnDJVf5sDUnXCH/CompC6BKfJTzFM3sE15raNStwHryV/b7aWu9AI2838EONMFh9SPPvv8lddez1fRk/Po0aNLzal1q8AU/+//8d+/Sv2/grXl3z4DU3fCRPlZTktdCHfLD2NC6hKYIj/FPHUDm5U3Oyd1FbCq/OXdWOo+z7XJ/1PAaS4ypH78xZevPn4/30PPzE9//IYtFTjNk9n0Zan/17Gw/MNnYOpOmCg/y2mpC+Fu+WFMSF0CU+SnmKduYLPyZuekrgLWlr/Cm0nd5Lk2/38QONxFttTv//zDfAm9SH797puGVOB+98+mtlQuK//wGZi6EybKz3Ja6kK4W34YE1KXwBT5KeapG9iyvNwhqXuA5eVv8TZS13iWvf3/BR505pD61u8+yTfQC+aTf3nblgp844Tl1JzKBeUfPgNTd8JE+VlOS10Id8sPY0LqEpgiP8U8dQNblpc7J3UVsLz8Ld5A6g7Psuf/78DLnDyk/uyvf8vXz8vmez/44Z/ef8eQCrt1qfHUlspF5B8+A1N3wjj5TQ5M3Ql3yw9jQuoSmCI/xTx1AxuX9zskdQ+wEfm7vHTq9k7nOQB3Om1I/eizz/Pp8xr5p3/+4acfvGdIhT240nJqS+VS8g+fmalrYZb8IKelLoSXym9jQuoSmCI/xTx1AxuX9zskdQ+wHfnrvHTq9k7kmQAvc+yQ+pvP/+uV117Pd88r5dGjR7ZU2KSbjafmVC4l//AZmLoTZskPclrqQnip/DYmpC6BKfJTzFM3sH15xRNSlwCbkr/R66au7kSeD/AyRw2pH3/x5auP388Xz6vmpz9+w5AKGxCOp7ZULiL/8BmYuhNmyQ9yWupCeKn8NiakLoEp8lPMUzewfXnFE1KXAFuTv9SLpu7tFJ4VcL/Dt9RHv/oo3zpvkF+/+6YtFZaTb6a2VC4r//AZmLoTZskPclrqQnip/DYmpC6BKfJTzFM3sAt5yxNSlwBbk7/UK6Yu7RT5Q1v0ucGuHDKkvvW7T/KV82b55F/eNqTCcPlIak7lqvJf4Aem7oRB8mscmLoTXiq/jQmpS2CK/BTz1A3sQt7yhNQlwAbl7/VyqRs7Rf7QNvAMYfMeHFJ/9te/5fvmLfO9H/zwT++/Y0iFafJV1JbKLeW/tw9M3QlT5Kc4LXUh3Cc/jwmpS2CK/BTz1A3sQt7yhNQlwDblr/Zaqes6Wv7ENvY8YcPuGVI/+uzzfNxM5tRPP3jPlgq5fAm1pVLJf1cfmLoTpshPcVrqQrhPfh4TUpfAFPkp5qkb2Iu86Dx1A7BZ+du9UOqujpY/sa0+WNiklw2pr7z2er5sJnn06NGdc2pdFGxcPn2aUxki/xV9YOpOmCI/xWmpC+E++XlMSF0CU+SnmKduYC/yovPUDcCW5S/4KqmLOlr+xPbwkGEzvjukfvzFl68+fj/fNMP85I3XbalwA/nWaUtloPzX8oGpO2GK/BSnpS6E++TnMSF1CUyRn2KeuoG9yIuekLoE2Kz87V4ldVHHyR/X3h44bMALW+r3f/5hvmbm+emP3zCkwjXk+6YtleHyX8Vnpq6FXn6E01IXwgPyC5mQugSmyE8xT93AjuRd56kbgC3LX/AlUrd0nPxx7fnhw7q+GVLf+M1v8x1zSD5+7y1DKlxEvmmaU1lL/hv4wNSd0MuPcFrqQnhAfiETUpfAFPkp5qkb2JG86zx1A7Bx+Ts+P3VFx8kflxZgRU+G1Md//ku+YI7Kv/7kLVsqnCzfMSekLoEl5b94D0zdCb38CKelLoQH5BcyIXUJTJGfYp66gR3Ju85TNwAbl7/j81NXdIT8WWkE1vV//uH/yrfLafn5n//vf/2f/6tuBlaSb5fTUhfCkvJftmemroVYfoHTUhfCA/ILmZC6BKbITzFP3cCO5F3nqRs4Xf7ohqTugYflRzI8dT9HyJ+VdmBRT/4x2zdffy2fL+fk+z//8Jt/+rjuB0bL98rhqfthPfkv2DNT10IpP79pqQvhYfmRTEhdAlPkp5inbmBf8rod22nyRzckdQ88LD+S4an7OUL+rNQEK3oypH6Vv/z03e/94If5iDkhr7z2+m8+/69vtlRzKnxXvlGukroolpT/aj0wdSeU8vOblroQHpYfyYTUJTBFfop56gb2Ja/bsZ0mf3RDUvfAQfI7mZy6nEPlD2pO6ipgJd8MqU/y63ffzHfMCXn393/89pBqS4Un8l1yxdSlsaT81+mBqTuhlJ/ftNSF8LD8SCakLoEp8lPMUzewL3ndeeoGTpQ/tyGpe+Ag+Z1MTl3OofIHNTB1J7CAF7ZU/9LvV3n18fsvDKnmVHYunyNXT10g68l/i56ZuhYa+eENTN0JD8uPZELqEpgiP8U8dQP7ktedp27gRPlzG5K6Bw6Vn8rY1M0cKn9Qk1OXA0N9d0j1L/1+lY8++/zOLdWcyt7kE+RmUjfJkvLfnwem7oRGfnjTUhfCQfI7mZC6BKbITzFP3cC+5HXnqRs4Uf7chqTugUPlpzI2dTMHyZ/SQqm7ginuHFL9S7/f/dd9zansSj47bjJ1qywp/515YOpOaOSHNy11IRwkv5MJqUtgivwU89QN7E7euHs7Qf7chqTugUPlpzI2dTMHyZ/SiqlLg9I9Q+qe/6Xfl/3rvuZUNi9fGzefumHWk/+qPDN1LQTyq5uWuhAOkt/JhNQlMEV+innqBnYnb9y9nSB/bkNS98AR8muZmbqWg+RPaenU7cGtPTik7vZf+v3lf/znIVuqOZXNyBfG/aSumvXkvyHPTF0Lt5af3MDUnXCQ/E4mpC6BKfJTzFM3sDt54+7tBPlzG5K6B46QX8vM1LUcJH9Km0ndJFzdIUPqPv+l37d+98mBQ6o5ldXlw+IOU3fOkvJfjAem7oRby09uWupCOFR+KhNSl8AU+SnmqRvYnbxx93aC/LkNSd0DR8ivZWbqWh6WP6JNpm4VruLwIXVv/9LvP779zsdffHnUlmpOZTn5nrjn1OWzpPz34Zmpa+Gm8nublroQDpWfyoTUJTBFfop56gZ2J288T93AKfKHNiR1DxwnP5iBqTt5WP6Itp26XriYY4fUr/LpB+/t5F/6Pfxf9zWnspx8RpQnqQ+B9eS/Bs9MXQu3kx/bwNSdcKj8VCakLoEp8lPMUzewO3njeeoGTpE/tCGpe+A4+cEMTN3Jw/JHtJPUPcNZThhSn+STf3k7HzqvnWP/dV9bKkvIp0N5IfVFsKT8F+CZqWvhRvJLm5a6EI6QX8uE1CUwRX6KeeoG9igv3ckdK39oQ1L3wHHygxmYupMH5M9nh6k7h1OcvKV+lZ+88Xo+d14vp/3rvuZUxsoXQ3lZ6tNgSfnvvTNT18KN5Jc2LXUhHCG/lgmpS2CK/BTz1A3sUV66kztW/tCGpO6B4+QHMzB1Jw/In8+eU5cPhzpnSH3yL/3+0z9v9l/6Pflf9zWnMko+FMohqc+E9eS/7s5MXQu3kJ/ZwNSdcIT8WiakLoEp8lPMUzewR3npTu5Y+UMbkroHjpMfzMDUnTwgfz7yD+OPhJ07c0h9kj883ua/9HvOv+5rTmWCfByUo1LfC+vJf8sdm7oZri6/sWmpC+E4+cFMSF0CU+SnmKduYI/y0p3csfKHNiR1DxwnP5iBqTu5T/5w5IXUFwEvusiQ+iS/ePNH+fR52bz6+P0z/3VfcyqhfBaUE1JfDUvKf7+dmboWris/sIGpO+E4+cFMSF0CU+SnmKduYI/y0p3csfKHNiR1Dxwtv5lpqQu5T/5w5GWpTwO+dsEh9UkePXqUD6AXzEeffX7BIdWcym3ka6Cck/p8WFL+a+3Y1M1wRfl1DUzdCcfJD2ZC6hKYIj/FPHUDe5SX7uSOlT+0Ial74Gj5zUxLXch98ocjD6a+Efbr4kPqV/nT++987wcb+cOp7/7+jxcfUs2pXE8+AsqlUp8S68l/mx2buhmuKL+uaakL4Wj5zUxIXQJT5KeYp25gj/LS89QNHC1/YkNS98DR8puZlrqQ++QPRw5PfSzsyzWG1Cf59btv5jPo+Xn18ftXGlLNqVxcvv3JZVMfFEvKf4+dmboWriU/rYGpO+Fo+c1MSF0CU+SnmKduYI/y0vPUDZwif2hDUvfAcfKDmZa6kJfKn4yclvpw2L7rDalP8pM3Xs/H0HPyymuvX+Nf9zWncln55CdXSn1ZLCn/9XVs6ma4ivyuBqbuhKPlNzMhdQlMkZ9inrqBncp7d3XHyh/akNQ9cJz8YKalLuSl8icjZ6a+ILbp2kPqV/n0g/eW/pd+H//5L9ceUs2pnCxf+uTaqU+MVeW/uM5MXQuXlx/VwNSdcIr8bCakLoEp8lPMUzewU3nvru5Y+UMbkroHjpMfzKjUbdwnfzhykdR3xKbcYEh9kj88fjufRE/L93/+4W2GVHMqx8o3PrlZ6ltjSfmvrGNTN8OF5Rc1MHUnnCI/mwmpS2CK/BTz1A3sVN67qztW/tCGpO6B4+QHMyp1G/fJH45cNvVBsbybDalP8os3f5QPo8fmldde//iLL2+5pZpTeVC+68ntUx8dS8p/Ux2buhkuLL+ogak74RT52UxIXQJT5KeYp25gp/LeXd2x8oc2JHUPHCc/mFGp23ip/MnI9VIfF6u68Zb6VR49epTPo0flw3/79xsPqbZU7pEvelKlPj1Wlf+OOjZ1M1xMfksDU3fCifLLmZC6BKbITzFP3cBO5b27umPlD21O6io4Qn4to1K38VL5k5Frpz4xFnP7IfWr/OWn7y70h1Pf+t0ntx9Szal8Vz7kyYTUZ8iS8t9Ox6ZuhovJb2lg6k44UX45E1KXwBT5KeapG9ipvHdXd6z8oc1JXQVHyK9lVOo2Xip/MnKz1LfGApIh9Uk+fu+tfCQ9JK8+fv/2/7qvOZUX5PudzEl9jCwp/6V0cupyuID8igam7oTT5cczIXUJTJGfYp66gZ3Ke89TN3C0/InNSV0Fh8pPZVrqQl4qfzJy+9RHx1DhkPokP/3xG/lU+mA++uzzcEg1p5IvdzIt9UmyqvzX0bGpm+EC8isamLoTTpcfz4TUJTBFfop56gZ2Ku89T93A0fInNid1FRwqP5VpqQt5qfzJSJX69JglH1K/yqcfvDf8D6c+/vNf8iHVnLpP+WAnM1MfJgvLfxGdnLoczpLfz8zUtXC6/HgmpC6BKfJTzFM3sFN573nqBo6WP7E5qavgUPmpjErdxkHypyRV6tOjl6+o3+RP778z9g+nfv/nH+YTqjl1h/K1Tgamvko2Iv8VdGzqZjhLfj8DU3fCWfL7mZC6BKbITzFP3cB+5dU7vKPkT2xU6jY4SH4no1K3cZz8cUmS+u7I5PvpC5n5h1Nfee319s+kmlN3KB/sZFTqe2SD8l8+J6cuhxPllzMzdS2cJb+fCalLYIr8FPPUDexXXr3DO1b+0OakroKD5HcyKnUbp8sfndw+9dFxU/lyemcG/uHUX/7Hf+bLqTl1J/LNTuakPkY2Lv+dc3LqcjhFfjYzU9fCufITmpC6BKbITzFP3cB+5dU7vGPlD21O6io4SH4no1K3cQH5M5Qbp744biHfTF+WaX849d3f/zHfTM2pe5AvdzIk9SWyI/kvnJNTl8PR8puZmboWzpWf0ITUJTBFfop56gb2K6/e4R0rf2ijUrfBA/ILmZa6kAvLn6fcMvW5cS35YHp/5vzh1Fcfv5+vpebUzcvHO8lT3yA7lf+eOTx1Pxwhv5axqZvhXPkJTUhdAlPkp5inbmC/8uod3rHyhzYqdRs8IL+QaakLuZb8wcrNUt8aF5ZPpYdkwh9OfeW113/z+X/lU6k5dcPyCU/a1AcIfp/3C/BG5NcyM3UtXEB+RRNSl8AU+SnmqRvYr7z6PHUDR8uf2KjUbfCA/EJGpW7jFvKHLLdJfWhcRj6SHp78D6d++G//no+k5tRNyic8CVNfHzwn//VyeOp+OEh+J2NTN8MF5Fc0IXUJTJGfYp66gf3Kq89TN3C0/IlNS10I98nPY1TqNm4tf+Byg9RXxunyefSotH849a3ffZLPo+bU7cmHPKlSnx68VP6L5eTU5XCQ/E5mpq6Fy8gPaULqEpgiP8U8dQP7lVefp27gaPkTm5a6EF4qv41pqQvJ5E9erp36xDhavo2ekOoPpy7xZ1LNqWvJtzy5feqjg4Pkv1IOT90PD8gvZGzqZriM/JAmpC6BKfJTzFM3sF959XnqBk6RP7RpqQvhbvlhTEtdSC+vQK6a+r44VL6KnpxP/uXtGw+pr7z2+sdffJmvoubUzcgXPblx6ouD4+S/TM5PXREvld/G2NTNcDH5LU1IXQJT5KeYp25g1/L23d6x8oc2LXUh3C0/jFGp25glr0Oumvq+uE++h56ZX7z5o1tuqb/8j//M91Bz6jbko57cMvW5wenyXyPnp66Iu+WHMTZ1M1xMfksTUpfAFPkp5qkb2LW8fbd3rPyhTUtdCHfIr2Ja6kKGynuR66U+Lu6QL6EXyc3+cOq7v/9jvoSaUzcg3/XkZqlvDS4g/wVyfuqKuEN+FWNTN8Ml5ec0IXUJTJGfYp66gV3L23d7x8of2sDUnfCi/CSmpS5kurwguVLqy+KZfAO9VD794L0b/OHU7//8w3wDNaeuLp/25DapDw0uLP/tcX7qinhOfg+TU5fDJeXnNCF1CUyRn2KeuoFdy9vPUzdwtPyJDUzdCc/J72Fg6k6WkTclV0p9WXuXD6CXzZ/ef+eqQ+o/vv3O0n8m1Zyay9c9uUHqK4NryX9pXCJ1SzyVX8Lk1OVwYflFTUhdAlPkp5inbmDX8vbz1A2cIn9oA1N3wjP5MUxLXciS8tbkGqnPaqfy6fMa+fW7b15vS/3os8/z6dOcuqJ83ZMbpL4yuIX8N8YlUrfE1/IzmJy6HC4sv6gJqUtgivwU89QN7Frefp66gVPkD21m6lr4Wn4GA1N3sra8Prl46pval3z0vF5++uM3rjGk/uyvf8tHT3PqcvKBT66d+sTgpvLfFZdI3RIO1X3uS35UE1KXwBT5KeapG9i1vP08dQOnyB/azNS18LX8DAam7mQj8h7lsqkPahfyufOq+fSD9x49enTZIfWN3/w2nzvNqWvJNz65aur7gkz+i+ISqVvatbz94an74fLyo5qQugSmyE8xT93AruXt56kbOEX+0Mambmbv8gMYmLqTDco7lQumvqYty7fOG+QvP333ez/44aWG1Fcfv7+9P5NqTr2efOaT66U+LujlvyKukrqoncp7H566H64iv6sJqUtgivwU89QN7Frefp66gVPkD21s6mZ2LW9/ZupatiwvVy6V+pQ2KF85b5Y/PH77IkPqK6+9/pvP/ytfOc2pq8jHPrlG6rOCWfLfD1dJXdTu5I3PT10RV5Hf1YTUJTBFfop56gb2Lj8A53eC/LmNTd3MfuXVz0xdy/blFcsFU1/TRuT75o3z63ffPH9L/eV//Ge+b5pTl5DvfXLx1DcFQ+W/Fi6Uuqsdybuen7oiriU/rQmpS2CK/BTz1A3sXX4AeeoGTpE/tMmpy9mjvPSZqWvZl7xuuVTqU1pbvmwm+emP3zhnSH3857/ky6Y5db588pOLp74pmC7/nXCh1F3tQt7yEqlb4lry05qQugSmyE8xT93A3uUHkKdu4BT5Q5ucupzdyRsfm7qZncp7l4ukvqMl5ZtmlU8/eO/Ro0enDalv/Oa3+aZpTh0un/zksqkPCpaR/za4Vuq6Ni7vd4nULXFF+XVNSF0CU+SnmKduYO/yA8hTN3Ci/LlNTl3OjuRdT05dzt7lByDnpz6ileSDZpu//PTd7/3gh8cOqa8+fv/jL77MB01z6lj56icXTH1NsKT8V8G1Ute1WXmzq6QuiivKr2tC6hKYIj/FPHUDe5cfQJ66gRPlz2146n52IW95cupyeCq/BDk/9REtIJ8yJ+RP779z1JD6ymuv/+bz/8qnzAmp73eifPiTS6U+JVhe/nvgWqnr2qC801VSF8V15Qc2IXUJTJGfYp66gb3LDyBP3cCJ8uc2P3VF25dXPDl1ObwoPwk5M/UFzZWPmHPy8XtvHb6lfvTZ5/mIOSf1FQ+Sb39yqdSnBBuR/wa4XOrGNiVvc6HUXXFd+YFNSF0CU+SnmKduYO/yA8hTN3Ci/LktkbqlLcvLHZ66H+6WH4acmfqCxsnny2n5xZs/OmRI/dlf/5bPl9NS33Iv3/7kIqnvCDYo//VvudSNbUTe40Kpu+Lq8hubkLoEpshPMU/dwN7lB5CnbuB0+aNbInVLG5R3Oj91RTwsPxI5J/X5TJEPlzPz5uuv3T+kvvGb3+bD5czUF53J5z+5SOo7gs3Kf/FbMXVpy8sbXCh1V9xCfmYTUpfAFPkp5qkb2Lv8APLUDZwuf3SrpC5qU/I2l0jdEkfIr0VOTn07sXyyHJtPP3jv0aNHLxtSv//zD/PJcnLqu761fP6T81MfEexC/lvfiqlLW1je3Vqp6+IW8jObkLoEpshPMU/dAI5w1SPMn9tCqbvaiLzHJVK3xCnys5GTU99OI98rh+dP77/zvR/88LtD6quP3//4iy/zvXJ46uu+nXwElDNTXxDsS/4r36Kpe1tM3tdyqRvjRvJLm5C6BKbITzFP3QCOcOEjzB/dQqm7Wl7e4Cqpi+Is+f3IaakP56bypXKJ/OHx2y8Mqa+89vpHn32eL5VLpL7xq8tHQDkn9fnATuW/7K2burpl5E2tmLo0biS/tAmpS2CK/BTz1A3gCBc+wvzRrZW6rlXlxS2UuisuIz8kOS314dxCvlEulI/fe+vbW+ov/+M/841yodSXfi35DijnpD4f2Lv8N711U1e3gLyjFVOXxu3kxzYhdQlMkZ9inroBHOHCR5g/uuVSN7aevLK1UtfFJeXnJKelPpwrytfJ5fKLN3/0ZEj92V//lq+Ty6W+9wvLd0A5OfXtAE/lv+OtnrrAofJeFk3dGzeV39uE1CUwRX6KeeoGcIRrH2H+9JZL3dgy8qaWS90Y15Kflhyb+mSuIt8lF81P3nj9jd/8Nt8lF0199Zfx/7F3fz12XmXa4D/IK3kUFCjsStlV5U4yJiRO/CfmjSHBOAFrAkybhhak1S8KRK9ER5wEqdUaBdEHM7QU9QGIPiKaHCCBNEcjzuc7eRwVchy7qrz/PM+67rWe30/Xce9732s9Re1c7drxKlA2TvruAI+K/47Xe9IHWE78RPpN+uhoKn7fKiR9CFQRv4rxpE8Al7DvSxjfXqdJn1t18QPqMelDY17xCybrJn1lphRvJLtOvJHsPenrv5V4GygbJH1rgNPEf8EbIOkzLCF+Cl0nfXq0Fr9yFZI+BKqIX8V40ieAS9j3JYxvr9+kj66o+Ll0mvS50U78sslaSd+XCcS7yN4T7yIHSPoh2ES8EJQNkr41wJPFf7UbJumTjIlvvvekD5CA+K2rkPQhUEX8KsaTPgFcwu7vYXx7XSd9eoXEz6LrpE+P1uJXTtZK+r5sLl5E9p6jNca7yAGSfRDWEi8EZYOkbw2whvjvdSMlfZhNxbc9RtLHSED81lVI+hCoIn4V40mfAJ+KX4N40iewlfj2ek/6APPiR9B70gdITPzuyVpJ35e1xYvI3vPwMuNd5ABJPQirixeCsm7SVwbYUPyXusGSPs/ZxTc8TNInSUb84lVI+hCoIn4V40mfAJ+KX4N40iewrfgCB0j6DAPiOx8m6ZMkLH4DZa2k78uq4kVk73l8pfEucoC0fxBWF68FZa2k7wuwlfivc0MmfaqziG91pKQPk5j43auQ9CFQRfwqxpM+AT4VvwbxpE9gW/EFDpP0STYS3/NISR8mhcRvo6yY9E15sngR2XtOWmy8ixwgLR+EFcVrQVkr6fsCTCP+69yoSR/sZOKbHC/pIyUmfvcqJH0IVBG/ivGkT4BPxa9BPOkTmEB8hyMlfZhziS92yKRPlXLid1JWTPqmHC/eQg6Q0zcc7yIHSJtnYRXxWlDWSvq+ABOL/y43dtLHu6H43kZN+mBJil+/CkkfAlXEr2I86RPgU/FrEE/6BCYQ3+GQSZ/qNOJrHDjps6Wu+OWUFZO+KZ8TbyEHyCp7jneRA2TuZ2EV8WZQVkz6pgAziv8it4SkD3kl8S2NnfTxEha/gRWSPgSqiF/FeNInwKfi1yCe9AlMIL7DsZM+3rXFN7aQpM+Z6uJXVFZM+qZ8Kt5CjpFVVh0vIsfI3E/EKeLloKyY4CUB2oj/CreopE/7UfGFLCTpcyYvfgkrJH0IVBG/ivGkT4BPxa9BhaQPYQLxHS4h6UM+TXw5S0v6wOlJ/LrKKgnekHgFOUZWX3i8iBwj8z0RJ4mXg7Ji2t8NICX++9sy47iXk9RZU0f8ElZI+hCoIn4V40mfAJ+KX4MKSR/CBOI7XFoc95KTPX06Fb+38sRELka8ghwj6649XkSOkTmeiJPE+0FZJS2vBFBE/Pc3OTfPL7HxNyVzHCvdid/DCkkfAlXEr2I86RPgb+I3IZ70CUwjvsYlx7EuKvMdN8OL3155Ylreh3gFOUY2W368iBwm0z4Uj4v3g7JK5r4GQGXxX95Exkv6saaK+FWskPQhUEX8KsaTPgH+Jn4T4kmfwDTiaxRZQtIPOiOIX2N5Yhpcg3gFOUa2OYJ4CzlMpnooHhHvB2WVzHT6QEfiv7aJDJb0M00h8dtYIelDoIr4VYwnfQL8TfwmxJM+gcnENykydtKPOEOJ32c5PbOefryCHCPbH0S8hRwm25/FI+IVoTwxkx860K/4r20iIyX9QFNI/DZWSPoQqCJ+FeNJnwB/E78J8aRPYErxZYoMnPTzzYDit1pOzxyHHq8gx8hUxxFvIYfJVCcSrwjliZnqrIGRxH9nExkj6UeZWuIXskLSh0AV8asYT/oE+Jv4TaiQ9CFMJr5JkVGTfrgZWfx6y+mZ8KzjFeQYmfBE7qlTK9Wp8ZZQTs/2RwwMLP4Lm0jvST/ElBO/kxWSPgSqiF/FeNInwN/Eb0KFpA9hSvFlioyX9GPNIsTvuZyS7c833j8Ok+3P4nHxFnKYbHwE8ZZQTs+EjxswsPgvbCL9Jv34UlH8WlZI+hCoIn4V40mfAH8TvwkVkj6EKcWXKTJe0o81CxK/7XJKNj7WeP84UiZ83B6IV5AjZd3lx1tCOT1zPHHAwOK/rYn0mPSDS1Hxm1kh6UOgivhVjCd9AvxN/CZUSPoQJhbfp8hIST/QLFH82sspWfc04+XjSJnjcTsSryAHy4prjxeFckrme9yAgcV/TxPpLumnlrril7NC0odAFfGrGE/6BPhM/DLEkz6BicX3KTJM0k8zixa//3JSVj/EePk4UuZ71o7E+8fBcvq240WhnJK5nzVgbPHf00Q6Svp5pbT4/ayQ9CFQRfwqxpM+AT4TvwzxpE9gevGVigyQ9HMMn4o/CHJSnnh28fJxpDR41u6pU1vVqfGuUE5KmwcNGF78lzSRXpJ+WCktfj8rJH0IVBG/ivGkT4DPxC9DhaQPYXrxlYp0nfQTDJ8TfyLkpJx0ZPHycaS0fNbi/eNgeWS98a5QTkrLpwxYgvhvaCL1k35MqS5+RSskfQhUEb+K8aRPgM/EL0OFpA9hevGVinSd9BMMx4g/F3JsHj+pePk4Uto/aPH+cbA8WGy8LpRj0/4RAxYi/huaSOWkH1A6EL+lFZI+BKqIX8V40ifAZ+KXoULShzCL+FZFOk362YXTxB8QOTZHpxNvHgdL6imL94+DJV4XyrFJPV/AcsR/PROpmfSjSR/iF7VC0odAFfGrGE/6BPhM/DJUSPoQ5hJfrEh3ST+1sJL4kyKPJ948DpbsIxbvH4fJj3/xq1985b/He0N5ONmHC1iU+K9nItWSfijpRvyuVkj6EKgifhXjSZ8An4lfhgpJH8KM4rsV6Sjp5xXWE39k5EF2b9554dnn37/9eryCHCPpZ+tT8Ray9/zs47+8ffPON5958X5+vP/Knw7yHaKknypgieK/pInUSfpxpCfx61oh6UOgivhVjCd9AnxO/D5USPoQ5hJfrEgvST+ssKH4syO71289tbP7vzy9cz+vv/jih2+/Ge8iu076kfpMvI7sNz/+xa9uX7x2VKQe5QcXXv7jYb5MXGzSDxOwaPFf1UQqJP0g0pn4ja2Q9CFQRfwqxpM+AT4nfh8qJH0IM4rvVqR+0o8pbCv+EC02u1e+ftSiPsgzu3s/f+NmvJHsNOkn6VHxUrK7PPzPUR/JW3sv/UGdqkUFFin+C5tINulHkP7EL22FpA+BKuJXMZ70CfA58ftQIelDmFd8vSKVk35AYTLxp2lp+fJzLz5SpD7IjUtf8Q9Uey9Sj8TbyY7y+D9HfTy/uXg9Xi8uJ+mnB+Az8V/bRFJJP3x0KX5vKyR9CFQRv4rxpE+Az4nfhwpJH8Ls4hsWqZn0owkTiz9TC8nut+7uXLx0UpF6lC/unPunm1+LF5S9JP3onCbeUdbPKf8c9fF8cHgtXjIOn/RDA3CM+O9vIu2TfuzoVfzqVkj6EKgifhXjSZ8AnxO/D0WSPod5xdcrUjDp5xLmEn+4xs4zb3zv6b3D04vUB3n52ef9A9Wui9Qj8bKycv75w/944j9HfSTvHVz900G+cBwy6WcF4DTx3+JEWib9wNGx+O2tkPQhUEX8KsaTPgE+J34fiiR9DrOLb1ikVNJPJMwu/pQNmd2bd57a2V2xSPUPVMcoUo/EK8uCee/Pf/3+m3+/Vov6ID+48LI6VYsKLFD8dzmRBkk/Z3QvfocrJH0IVBG/ivGkT4DPid+HIkmfQwvxJYsUSfpZhHbij9tI2b3y9XWLVP9AdYwi9Ui8uyyVDf456iN5a++lPxzmK8gBkn4yANYT/41OZNaknzBGEL/GFZI+BKqIX8V40ifAo+JXokLSh9BIfM8i8aSfQgiIP3cD5OxXr23WovoHqmMUqUfiDWaFvPfnv/7DP767TYv6cJ36m4vX411k10k/EwAbiv9qJzJH0g8Wg4jf5ApJHwJVxK9iPOkT4FHxK1Ek6XNoJL5nkWDSzx/ExJ++frP7rbtffu7FLYtU/0B1gCL1SLzKzObd33/87Rdem6RIfZAPDq/FG8kek34UALYV/x1PZNqkHynGEb/MFZI+BKqIX8V40ifAo+JXokjS59BOfNUikaSfPMiLP4bdZfdbd5/eO5yqSPUPVHsvUo/EC81UfvTTf5m2RX2Q9w6u+vpULSqwQPHf9ESmSvphYijx+1wh6UOgivhVjCd9AjwqfiWKJH0OTcW3LdIy6QcOaok/kr1k9+adjb8g1T9QHbVIPRKvNRvnZx//5e2bd2YqUo/ygwsv/9HXpypSgeWJ/74nsn3SjxGjiV/pCkkfAlXEr2I86RPgUfErUSTpc2gtvnCRNkk/alBU/Nksnt0rX5+vSF3yP1BNX/zJxPvNZvnnD//j9sVrsxapD74+9T8PfX2qFhVYnPhvfSIbJ/30MKb4xa6Q9CFQRfwqxpM+AR4VvxJ1kj6K1uILF5k76YcMSos/oWXz5UuvzNqiPpwbl76ynH+gmr7yE4u3nHPnvT//9e73ftKgRX04v7moTtWiAksU//VPZN2kHxqGFb/bFZI+BKqIX8V40ifAMeK3okjS5xAQ37nIfEk/XtCH+KNaKrvfurtz8VKzIvUoz+zu/fyNm/GiU5G6gXjdOV/e/f3H337htcZF6lHeO7gary/rJH3HAdqJ/x4osnrSjwsji1/vCkkfAlXEr2I86RPgGPFbUSTpc8iIr11k8qSfKuhP/LGtkN2bd57eO2xcpD7IWy9fjtedWtQNxEvPOfLjX/wq0qI+yA8uvPyng3yPqUUFaCz+26DIE5N+Shhf/JJXSPoQqCJ+FeNJnwDHiN+KIkmfQ0x88yITJv08Qa/iD282u9dvzf0FqU/M4fn992+/Hq8+FanrilefE+a9P//17Zt3skXqUd7ae+kPh/lCU4sK0F7810KRk5J+OFiE+D2vkPQhUEX8KsaTPgGOEb8VdZI+ipj45kUmSfpJgu7Fn+JIdi9/LduiPsgXd85999rVeAGqSF1XvAOdJD/97e9uX7wWb1EfzgK/PjV9lwFKiP9yKPJ40o8FSxG/6hWSPgSqiF/FeNInwDHit6JO0kcRFt+/yMZJPz0wlPgT3Sy737r75edejFeoj+TlZ5//8O03402oInUt8SZ0y/zop/8Sb06PzXK+PjV9hQFqif+WKPIg6aeBZYlf+ApJHwJVxK9iPOkT4BjxW1En6aPIix+ByAZJPzcwoPhz3SDPvPG94BekPvEfqP78jZvxPlSRupZ4H7pZfvbxX+5cvRXvTE/J8F+fmr65AHXFf10UST8ELE78zldI+hCoIn4V40mfAMeLX4w6SR9FXvwIRFZP+nGBwcWf8flS4QtSn5jXX3wx3ooqUtcSL0bXzT9/+B/V/q7vsRn461PTdxaguvgvjbLYpO8+CxW/+RWSPgSqiF/FeNInwPHiF6NO0kdRQvwURFZJ+kGBpYg/7JPn7FevxXvSFXN4fv9X37kVr0cVqauL16Or5x/+8d14SbpW/u3wWrz61KICRMR/e5SlJX3lWa745a+Q9CFQRfwqxpM+AY4Xvxh1kj6KQuJnIXJS0g8HLE78qZ8qu9+6u3PxUrwhXStf3Dn3Tze/Fi9JFamri5ekT8x7f/5r8b/re1LeO7g6wN/7Td9QgF7Ff5OUJSR9zVm6+CNQIelDoIr4VYwnfQIcL34xSiV9GoXEz0LkkaSfCVi0+E+ALbN7807ZL0h9Ym5c+sqHb78Zb0sVqSuKt6Wn5Ke//V0Xf9f3pPzgwstd/73f9N0E6Fv890kZO+kLDn7KeRL5TPwqxpM+AY4Xvxilkj6NcuInInKU9KMAfCr+o2Cz7F75ev0vSD09h+f337/9erwzVaSuKN6ZHpsf/fRf4mXo9nlr76XfHl6Pt6JaVICU+C+WMl7Slxr+Jv4sVEj6EKgifhXjSZ8Ax4tfjGpJH0g58RORhSf9BACfE/+ZsG6+fOmVeBM6Sb64c+6HN67Hm1NF6orizenDee/Pf3375p14DTph3j+8Gq9HFakAQfHfMGWMpC8yfE78iaiQ9CFQRfwqxpM+AU4Uvxulkj6NouLnIgtM+tYDJ4r/fFglu9+62+/f9T0ppf7eb/oaVhevUI/y7u8//vYLr8Xbz8nz4/1X6n99avoOAows/qumdJ30/YVjxJ+LCkkfAlXEr2I86RPgRPG7USrp06grfjSynKQvO/Bk8R8Up2f3a2/2/nd9T0qRv/ebvoB9iBep73zw63jpOV/e2nvpPwv/vd/07QNYhPjvnNJj0tcWjhd/NCokfQhUEb+K8aRPgBPF70a1pA+ktPjpyNhJX3BgPfEfGsdm9/LX4o3nrIn/vd/0vetJ8O/63v3eT+J1Z4N8cHgtXptqUQGy4r98Si9JX1U4TfwBqZD0IVBF/CrGkz4BThS/G9WSPpAOxM9Ixkv6UgMbiv/0eDi737q7c/FSvOtsk9dffFGR2ovGRerPPv7Lnau34i1ns5T6e7/puwawXPFfRKVy0tcTniz+mFRI+hCoIn4V40mfACeK342CSZ9JB+JnJMMkfZeBCcR/ktzP7s07Xzh3Pl5xtszh+f1ffeeWIrULzYrUn/72d7cvXov3m43z9vmX/3CoRQWgxC+lUirpKwmrij8sFZI+BKqIX8V40ifAieJ3o2DSZ9KN+ElJ10nfX2BK2Z8nw/9d35PyxZ1zP3/jpiK1Cw2K1B/99F/itWYw/5b7e7/pywXA58Q/6kqFpK8hrCf+yFRI+hCoIn4V40mfAKeJX4+CSZ9JT+KHJd0lfWeBubT/ebKov+t7Ut56+bIitQvztajv/fmv33/z7+NtZjz/4+BK47/3m75TAJwo/rFXUklfPdhE/MGpkPQhUEX8KsaTPgFOE78eBZM+k/7Ej0zqJ31JgUaa/VRZ4N/1PSkvP/v8h2+/qUitb44i9d3ff7yoL0g9PW+ff/k/D69rUQE4Ev8ULM2SvmuwlfgTVCHpQ6CK+FWMJ30CnCZ+PWomfSy9ih+cFEz6VgKtNfjBsti/63tSDs/vv3/7dS1qfb4gtUE+mPnv/aYvEQBri38olvmSvlwwgfhzVCHpQ6CK+FWMJ30CnCZ+PWomfSx9ix+fVEj6GgJhM/1s8Xd9T8oXd879082vKVLrm6pI/fEvfhVvLcvmx/uvzPT3ftPXB4DNxT8jy7RJXyiYTPxpqpD0IVBF/CrGkz4BThO/HmWTPpnuxU9QUklfPaCKyX+8+Lu+T8wkX5+avjjj2/4LUu9+7yfxvrJ43tp7adq/95u+NQBMJv6RWbZJ+vrA9OKPVYWkD4Eq4lcxnvQJ8ATxG1Iz6WMZR/wopU3SFw0oaqofMv6u74rZ8utT0/dlKbYpUn1B6up5//CqIhWAk8Q/RMvqSV8WmFH8+aqQ9CFQRfwqxpM+AZ4gfkPKJn0yQ4mfpsyU9M0COrDlzxl/13fdbPz1qembsjjrFqnv/v5jX5C6bn5w4eU/HmpRAThR/DO1nJL07YAW4g9ahaQPgSriVzGe9AnwBPEbUjnpwxlQ/ExlkqTvEdCfzX7a7H7tzad2duPtZHfZ4OtT0xdkoVYvUt/54NeK1M3y1t5Lv7m4yd/7Td8OAJqKf8qWB0nfBWgq/sRVSPoQqCJ+FeNJnwBPEL8hlZM+nJHFD1fWTfrKAN1b98fO2a9ei5eSXee7164qUutbpUj9h398N95I9p73Dq7+6UCLCsBK4p++l5n0sUNG/NGrkPQhUEX8KsaTPgGeIH5DKid9OEsRP2g5JenbAQxlxZ88z7zxvaf3DuNd5AC5cekrT/z61PSl4LQ69b0///Xu934SLyLHyNvnX/7DCn/vN30dACgk/nl8CUkfMgAAdCb+O7wcJX0RgMGd/iNo98rX/V3fCXN4fv+kOjV9EfjMSUXqnau34hXkYPng8JoWFYANxD+nj5T0YQIAwCDiv9svLekDB5bl2B9Eu9+6++XnXoyXj+Plizvn3r/9uiK1uEeK1Hd//7EvSJ0pP95/5Y+P/QPV9PkD0JP45/cekz40AAAYXPx3/iGTPlWAz/1437155wvnzsdrx1HzxZ1zP7xxXZFa31GR+s4Hv1akzpq39l76zcXrWlQAthf/aF826ZMBAIBFi38i6DTpcwM4xtEPqLNfvRZvG5eQ71y9qkit7/9673/Gq8Yl5NsvvPbBf/zn//x//7/0gQMwmvhnf//NAQAAeFz8I0PNpI8F4MmO/pnkWy9fjveMw+fpvcPdb931vw7FHf1Lyd8eXn9r76V42zhwvv/m37/3578++IvK6WMHYHDx/zjgPzgAAACPi3+s8CkG4Ike/vrO92+/fnh+P144jpovP/fiUZHqfzjKeuTrO/9w+Orb51+Od47j5fbFa+988OtHvp1WowpAe/H/jOA/OAAAAMeKfwbx+QXg3udb1Af58O03X3/xxXjtOF6+fOkV/7NS3CNF6lH+dPDqDy6oU6fMnau3fvbxX44tUtWpAFTjPzUAAABl6UkBZnVskfog/3Tza1/cORfvH4fJ7pWv+1+f4o4tUh/kvYOr8QpyjPzop/9ySouqTgUAAAAAALJOb1Ef/geqlw7/Lt5C9p6ndnZ3b97x/8xT3OlF6lH+7fBavIjsOrcvXvvpb3+3SpGqUQUAAAAAACJWLFIf5LvXrsbryH7z9N7hM298z99GKG6VIvUovz28/tbeS/FSssd8/82/f+/Pf12rSFWnAgAAAAAALa1bpB7l/duvP7O7F+8lu8uXn3tx91t3/an54lYvUo/yh0Nfn7p2fvyLX23QompUAQAAAACANjZrUR/+e783Ln0l3k52lLNfvebLu+tbt0g9yp8OXv3x/ivxgrKLfPuF1979/cdbFqnqVAAAAAAAYD5bFqkP8sMb17+4cy5eUxbPp1+QeuXrGxep6tQ2NmtRH877h1fjTWXx3P3eTzb7u74aVQAAAAAAoIGpWtQH+dV3bh2e34/3lWXzhXPnd2/e2bJIVafObfsi9Si/uejrU4/P7YvX3vng19O2qOpUAAAAAABgQpMXqQ/y+osvxlvLgvni/rPrfkGqOrW9qYrUB1+f+vZ5X5/6udy5emuqv+urUQUAAAAAACY3X4v6IP9082v+3u/D+fKlVyZsUdWpM5m2SPX1qY9njr/rq04FAAAAAACm0qBI9fd+H84kX5CqTm1gjiL1QT44vBbvMbOZ9e/6alQBAAAAAIAtNWtR/b3fB5nwC1LVqbOatUg9ym8Pl/v1qW3+rq86FQAAAAAA2EykSF343/ud/AtS1akzaVCkHuWPh6/+4MLivj615d/11agCAAAAAABrCbaoS/57v2e/eq1Ni6pR3VKzIvUofzp49b2Dq/F+s1l+/ItfxVtUdSoAAAAAAHCseIv6cBby934//YLU67faF6nq1A00LlIf5DcXr8dbzrnz7RdeC/5dX40qAAAAAABwinhzemyG/3u/T+8dNviCVHXqJFJF6lH+cPjq2+eH/Xu/b9+8U+Hv+mpUAQAAAACAR8QL09Mz8N/7/fJzLzb7glR16payReqDv/f7Pw6uxHvPyfOjn/5LvCpVpwIAAAAAAI+LV6Ur5salr8Srz2mze+Xr8QpVnbqKeIX6SP7t8Fq8/Zwqty9e++lvfxcvSTWqAAAAAADAI+L16Lr54Y3rY/y93y+cOx//u77q1BXFm9NjM8bf+71z9dbPPv5LvBtVpwIAAAAAAI+IF6Ob5f3brz+zuxcvQ7fJzsVLRf6urzr1ieKd6Snp/e/93v3eT4p/QapGFQAAAAAAFijeh26ZD99+8+Vnn49Xoptl9/LX4m2pOnVF8bZ0lXT6937f+eDX8SZUnQoAAAAAADwi3oROlbdevhwvRtdK2b/rq049VrwkXT19/b3f2xevvfv7j+MdqEYVAAAAAAB4WLz9nDw/f+NmL1+fWvzv+qpTHxGvR9fNnw5efe/garwnfWLuXL3V+9/11agCAAAAAMBg4qXnfPnVd24dnt+PV6Wnp4u/66tOfSBejG6c31y8/tbeS/HC9KTc/d5P4nWnOhUAAAAAAHhYvO6cOx++/eaNS1+JF6bHpq+/66tOvddzkXqUPx6++oMLFf/e7zBfkKpRBQAAAACAMcRbzpb57rWr8eb0kfT4d30XXqfGm9Cp8sHhtXh5+iBDfkGqRhUAAAAAAPoVbzYjef/260W+PvWpnd1+/67vYuvUeAE6bf7z8Prb5/P/QHXsL0hVpwIAAAAAQHfinWYwH779ZvzrU5/eO+z97/ousE6NV59z5E8Hr/6PgyvBInUJX5CqUQUAAAAAgF7Eq8wKyX596pcvvTLG3/VdVJ0aLz1nzW8Pr7+191L7InVRX5CqUQUAAAAAgMriDWa1tP/61E//ru/1W/G6U526rnjX2SB/PHz1x/uvNGtRb1+89tPf/i7eXRZM+rIDAAAAAMASxYvLmvn5GzebfX3qF/efHfifow5cp8Zbzpb5t8NrDYrUO1dv/ezjv8Rby8pJ33oAAAAAAFiKeF9ZPL/6zq0GX5+6e/lr8X5TnbqBeLnZPn84fPUHF16er0j9/pt//96f/xovK7tI+voDAAAAAMDI4jVlL/nw7Tdffvb5mVrUp/cOd2/eiTeb6tQNxGvNYD6Y5x+o/sM/vhsvKLtL+jkAAAAAAIABxQvK7vLWy5cnL1K/fOmV5fxd38Hq1HibGc/k/0D1nQ9+He8lO036aQAAAAAAgHHES8l+88Mb16f6+tSndnZ3v/ZmvMqskPQDsYl4j1knk/wD1dsXr737+4/jjWTvST8WAAAAAADQt3gXOUDev/369nXqzsVLC//nqF3XqfH6slq2/Aeqd67e+tnHf4kXkcMk/XwAAAAAAEB/4hXkSPnw7TcPz+9v/s9Rr9+Kd5cFk35EVhUvLstms3+g+v03//69P/813j+Ol/SDAgAAAAAAfYg3j0Pmw7ffvHHpK+sWqV/cf/aZN74Xby3LJv2sPFm8ryyedf+B6t3v/STeOQ6c9OMCAAAAAADVxTvHsfPWy5fX+Oeol78WLyvrJ/3EnCbeVPaSFf+B6jsf/DreNi4h6ecGAAAAAAAqiveMC8kPb1x/4ten+ueoA9Sp8YKyr5z+D1RvX7z209/+Ll4yLirpBwgAAAAAAKqI14tLy/u3Xz+pTvXPUceoU+PVZKf5t8Nrb+299EiR+u0XXnv39x/Hu8VlJv0kAQAAAABAUrxVXGx+9Z1bh+f3HylSn9479M9Rx6hT46Vkv/nj4as/3n/lQZF65+qt9/7813iluPCknycAAAAAAGgtXibKh2+/eenw7x4UqWe/ei1eR/ae9FP1N/E6coD85uL1t/Zeuvu9nyhS6yT9YAEAAAAAQAvxDlEezo1LX/HtqCPVqfEWcpj83wevxttDeTzpJwwAAAAAAGYUrw7l8cT7x8ESfL7i/eNIOVppvDqUYxN8ygAAAAAAYA7xxlCOzdHpxPvHwRJ5xOLl40h5eLHx3lCOTeQpAwAAAACAycXrQjk2jxxTvH8cLI2fsnj5OFKO3XC8OpRj0/hBAwAAAACACcXrQjkpx55XvH8cLM0etHj5OFJOX3W8OpRj0+ZBAwAAAACAqcS7Qjkppx9cvH8cLA2etXj5OFJWWXi8N5STMvezBgAAAAAA24t3hXJKVjzEeAU5UmZ93OLl40hZa/Px3lBOykzPGgAAAAAAbCleFMopWfc04xXkSJnjcbunSA21qA+L94ZyUiZ80AAAAAAAYEvxolBOz2bHGq8gR8q0T9w9RWqBIvVIvDSUUzLJswYAAAAAABuLt4RyerY833gFOVImeeKOxPvHYTLVicRLQzk9Ux00AAAAAACsKN4SyumZ6qDjFeQwmepE4v3jMJnqRB6IN4ZyeiY/cQAAAAAAeFy8JZQnZtoTj7eQw2SS44hXkGNkkrN4XLwulCdmpqMHAAAAAIB4RShPzExHH28hh8mWBxGvIMfIJA/FKeJ1oTwxc98BAAAAAACWI94PyiqZ+xrEW8hhsvERxCvIMTLhQ3G6eF0oT0yzywAAAAAAwJDi/aCsmGZXIl5EjpENNh+vIMfI5E/E6eJdoaySxrcCAAAAAIABxMtBWTHt70a8iBwja+08XkEOkJkeh1XEu0JZJcEbAgAAAABAR+LloKye1CWJF5FjZMVtx1vIATLr47CieFcoqyR9TQAAAAAAqCveDMrqSV8WdWqjOjXeQg6QBo/D6uJdoayY9E0BAAAAAKCKeC0oayV9Xz4TLyLHyCkbjreQA6TZ47C6eEsoqyd9WQAAAAAASIrXgrJW0vflGPEicoCcst54Edl7mj0IG4i3hLJ60pcFAAAAAIDW4rWgrJv0lTlRvIscIMcuNl5E9p7GD8Jm4i2hrJ70ZQEAAAAAoIV4JyjrJn1lnizeRQ6QR1YaLyJ7T+RB2Fi8JZS1kr4vAAAAAABML14IygZJ35o1xLvIAfJgmfEisvcEH4RtxCtCWSvp+wIAAAAAwDTihaBslvTFWVu8ixwg9xSpSy1Sj8T7QVk36SsDAAAAAMDm4m2gbJb0xdlKvI7sOv/bt74f7yK7Tvr6TyPeD8oGSd8aAAAAAABWFa8CZeOk78404o1kp9m7dff6+f/1k4Pr8Uay06Qv/sTi5aBskPStAQAAAADgNPEqUDZO+u5MLN5L9pgLe8/v/LenLz+9p05VpD4QLwdls6QvDgAAAAAAn4n3gLJN0tdnLvFqsq8c/N3lnf/29FHu7D4bryb7Svqyzy7eDMpmSV8cAAAAAICli/eAsmXSN2he8YKylxxcvvmgSD3KO+cvxQvKXpK+5u3Em0HZOOm7AwAAAACwLPEGULZP+hI1Eq8p62f/tTuPFKlH+eX+i/Gasn7SFzwgXgvKxknfHQAAAACA8cUbQNk+6UvUWrysrJy9W3fPntk5tku9cGbno8Mr8bKybNL3OixeC8o2SV8fAAAAAIDRxOs/mSTpexQTryxrZu/W3We+dOHYIvVBnfrJwfV4a1kw6RtdRbwTlG2Svj4AAAAAACOI138ySdL3KC9eXBbM/v4LpxSpR7n89J46VZF6ungnKFsmfYMAAAAAAPoT7/5kqqSvUiHx7rJUDl648cQi9Sh3dp+N15d1kr7FdcULQdky6RsEAAAAANCBePEn0yZ9ocqJN5hFcnDljRWL1KO8c/5SvMSskPT97UC8EJTtk75EAAAAAAAVxVs/mTbpC1VXvMeMZ/+1O2fP7KzVpd7Pvx5cjleZitRexNtAmSTpewQAAAAAkBev/GTypO9UB+JtZjB7t+4+86UL6xap93PhzM5Hh1fihaYitSPxKlAmSfoeAQAAAAAExPs+mSPpa9WTeKeZyoW95zcoUo/y3FPnPjm4Hq81Fal9iVeBMlXSVwkAAAAAYHbxsk9mSvpmdSlea7bPwfNXNy5Sj3JjZz/ebCpSexTvAWXCpG8TAAAAAMDE4k2fzJf05epbvNxsmf1Xb29ZpB7l7t7z8X5TkdqpeAko0yZ9oQAAAAAAthVv+mS+pC/XIOIVZ5tc+MZ3z57ZmaRLvZ9f7r8YbzkVqf2KN4AyedJ3CgAAAABgPfGaT2ZN+n6NJl50zp29W3ef+dKFqYrU+7lwZuejwyvxrlOR2rV4/SdzJH2tAAAAAABOE+/4ZO6kr9iw4nXnrNnff2HCIvUozz117pOD6/HGU5E6gHj9J3Mkfa0AAAAAAD4TL/ikQdK3bHzxxnOmHFy+OXmRepQbO/vx0lOROox49yczJX2zAAAAAIDlird70ibpi7Yg8d5z8uy/dmemIvUo75y/FK8+FakjiRd/Ml/SlwsAAAAAWIR4ryctk75uSxRvPyfM3q27576wO2uXej//enA5XoAqUgcTb/1k1qTvFwAAAAAwoHipJ42TvnGLFu9Ap8qFvefnLlLv58KZnY8Or8RrUEXqkOKtn8ya9P0CAAAAALoXb/SkfdKXjk/Fa9Dtc/D81QZF6lEuP733ycH1eBmqSB1VvPKTuZO+YgAAAABAZ+J1nkSSvnd8TrwM3Sb7r95uVqQe5c7us/E+VJE6tnjfJw2SvmUAAAAAQGnxLk9SSV89jhevRDfL3q27Z8/sNO5S7+fnF16It6KK1OHFyz5pk/RFAwAAAACqiLd4Ekz69vFk8WJ0ky717MX2RepRevzi1PQVY0Pxsk+aJX3XAAAAAICAeIsn2aQvIGuId6NrpeXXpD6e554619cXp6YvF9uK13zSMunrBgAAAADMK97fSYWkryGbiDekK6b916Q+nm+ePYw3pIrUBYrXfNIy6esGAAAAAEwpXt5JkaRvIluJ96RPTOprUh/PO+cvxXtSReoyxTs+aZ/0pQMAAAAANhGv7aRU0veRacTb0id0qbmvSX08/37wSrwtVaQuVrzdk0jS9w4CPCkAAABAX+KFnVRL+koyvXhhelIOXrgR708fzoUzO2W/ODV9iWgn3u5JKumrB7PwvAAAAACdihd2UjDpW8mM4rXp49l/7U68PH08N3b247WpIpV7GtVlJ337YFseGQAAAKBT8apOyiZ9N2khXp4+nL1bd899YTfenB6bal+cmr44hMV7PckmfQFhDZ4XgJPEf0L2lfRx0RMXD4rwMAJjiFd1UjPpi0lr8Qr1s3+Uuv9CvDM9JR8dXolXqIpUHhb/L1qSTfoCwmniD4hHBqgv/oOxr6SPi564eFCEhxEYQ7yzk2pJX0li4i3q/RxcvhlvS0/Pc0+dq/DFqenLQkXx/7QlkaTvHRwv/mh4cIBexH8k9pX0cdETFw+K8DACY4g3d1In6ctIXrZIvfCN7549sxNvS5+Yb549VKRSWfy/cUnLpK8bPCr+UHh8gL7Efxj2lfRx0RMXD4rwMAJjiPd3Ek/6DlJLsEvdO3sx3pOumJ9feEGRSnHx/9IlDZK+ZfA58SfCcwT0KP5jsK+kj4ueuHhQhIcRGEO8yJNg0rePojJ/3ff5q/GGdK1Evjg1fTXoUvw/ecl8SV8u+Jv4s+BpAvoV/wHYV9LHRU9cPCjCwwgMI97oSeOkbxwdaFyk7r92J96NrpvLT+81/uLU9KWge/H/9iWTJ32nYKgfLOldAgsV/+nXV9LHRU9cPCjCwwgMI17tSbOk7xo9afenfW/dPfeF3Xg3ukHu7D6rSKU78f8CJhMmfZtYuvgj4LECBhD/uddX0sdFT1w8KMLDCAwjXvDJ3ElfMXrV6K/7/t3leCu6cf714LIilU7F/1OYbJn0DWLp4o+AhwsYQ/yHXl9JHxc9cfGgCA8jMIx40yfzJX256FuLIvXKG/E+dJtcOLPzXwfXFKl0Lf7fxGSzpC8OyxW//J4vYCTxn3h9JX1c9MTFgyI8jMBI4pWfTJv0hWIcc/9137NnduJ96Ja5sbOvS2UM8f84JmslfV9YqPjN94gBg4n/uOsr6eOiJy4eFOFhBEYS7/5kkqTvEWOar0u9sPd8vAmdJO+cv6RIZSTx/0omqyR9TVii+LX3oAHjif+g6yvp46InLh4U4WEERhIvAWXLpG8Qg/PXfZ+Yjw6vKFIZTPy/lckpSd8Olih+7T1uwJDiP+X6Svq46ImLB0V4GIGRxKtA2Szpi8OCTPwvUr/x3QH+uu/Dee6pc58cXFekMqT4fzSTx5O+FCxO/M574oBRxX/E9ZX0cdETFw+K8DACg4nXgrJ60peFhZrym1LPXoy3n5Pn7t7zilTGFv+vZ/Ig6bvAssQvfIWkDwEYVvznW19JHxc9cfGgCA8jMJh4PyhPTPqOwDR16sELN+K950z514PLilSWIP6f0SR9BViQ+G2vk/RRAGOK/3DrK+njoicuHhThYQQGEy8K5ZSkbwd8xl/3PSUXzuxs+Zd+08cL64n/97RlJn3sLEj8tpdK+jSAMcV/uPWV9HHRExcPivAwAuOJN4bySNI3Ao7nr/uekm+ePVSkskDx/7C2qKRPm6WIX/WCSZ8JMKD4T7a+kj4ueuLiQREeRmA88epQjpK+CPBk/rrvKfn5hRcUqSxZ/D+yDZ/0CbMI8XteNumTAUYT/7HWV9LHRU9cPCjCwwiMJ94hLjzp84f1+Ou+J+XCmZ3/OrimSIX4f20bMulTZSniV71y0ocDDCX+M62vpI+Lnrh4UISHERhPvExcZtLHDhvy131PyY2dfV0qPBD/z24jJX2YLEL8ntdP+oiAccR/oPWV9HHRExcPivAwAkOKF4vLSfqoYQL+uu8pWf0v/aaPEdqJ//e3AZI+Q8bX0fXuaFSAk8R/tegr6eOiJy4eFOFhBIYUbxiHT/qEYWL+uu9JuXBm56PDK4pUOEn8v8X1mPShsQidXuxOxwaI/3bRV9LHRU9cPCjCwwgMKV41Dpn0qcK8ntyl7j0fbzYjufz0niIVnij+H+U6SvqsGF/vV7r3+YEFiv920VfSx0VPXDwowsMIjCrePA6T9ElCO6f9dd8rb8Q7zWDeOX9JkQoriv/XufpJHxGDG+Yyj/EuACbnJyGL4p5DER5GYFTxCrL3pA8QMo4tUvdu3V3gX/d9JMf+pd/0cUF1zaqQvpI+FgY30jX2VAI8zo9BFsU9hyI8jMCo4l1kp0mfG+T5677H5vG/9Js+KOhJs0KkftJHweCGvMbjvSOAbfgxyKK451CEhxEYWLyX7CXpg4JyHi5S91+9He8xi+Thv/SbPiLoWINapHLS62dwo15gzybAA34GsijuORThYQQGFu8oiyd9PlDag7/ue+4Lu/ESs04e/KXf9PnACBqUIwWT3jojG/v2jv3uAFbnZyCL4p5DER5GYGDxsrJg0mcC3TjqUg/+7nK8viyV/37uoiIV5jB3S1Ik6TUzuOFvrycU4J4ulYVxz6EIDyMwtnh3WSHpQ4Be/R///faFMzvx+rJU9l+7c+6tH6VPBkY2d1eSTXq7jGwhV3chbxPgFH4AsijuORThYQTGFu8x9afQr/9n/9WPDq+oUx/k4PLNB18jmz4cWIRZS5NI0htlZMu5ust5p+sa/g1uw3K2Z4d1+On3iCW8x+31u6U697zTBaZY1wP9Pn2PqPMwzm2MdzEfy2FU8U5ThQqdOvpW0Pv55f6L8RKzQg6ev/qgSNWlQnsTfnBLJb1CRra0q7uoN3uKpb3f1S3zPszBDmta+E+/Bb7lDYx0N7LvpffttTTAZZvESE/fI0Z9a6O+rwnZDMsR7zf1p9CdB0XqUX5+4YV4lZnN/v4LDxep6lQImvCTTuOkN8fIlnZvF/6oLvNdP9HCb8W07LC4ZR6QZ3wVs24ptajI/GOsro1hbto25n70iuxkpLezkCPbkrWwQPGuU38K3XmkS72fO7vPxgvNVJ750oW9W3cf71LVqRDX4BOQTw10YYH3ttpbbvPqflIdq8FagvtpOfmQCxzSoo5m7Ad8Ki231H5XjcfufXUj7arxTdtMgyXU2ckA76L9eXVxjR+X3cncrzLAKfc+f2Xx3lN5Cn15vEg9yo2d/Xit2T7nvrB7UpGqS4VS5v5t36+mlLXYe1vqXc/96n5kPa7xTlL7aTPzwAsc0kIOJfJ011zFKVJbarmuZtOOsbfxdtXmmq2r8QaK7KTr+Zd5ZBuosJMGO+/9fLsevr54E6o/hV6cVKTezycH1y8/vRcvN1vm7Jmd/dfunFSkqlOhrJa///vtlLjFXtpSD+ysL+2n1uMiO4msqMG0Yy9wSMMfR+pOll3IseIrarauBnOOtLQhdzX3HVtLagMV1tLp5PFjqnmTH1dnIQ223fvJdj18ffFWVH8KvTilS72fjw6vXDizE684m+XgyhunF6nqVKgv8onAb6e0tORLW+e9z/TSfnY9Lr6TxvuZddQlLHBIA59F/E7WXMsj4mtpvKu5hxxsaaPuar6NrS7+9uNr6W7m+NHEj2x1pbbRZs/9nukSLmRWvCFVnkIXTi9SH9Sp8YqzUZH6wo1VilRdKnSkzqcDmMrCL22dtz/HS6d+ZJW9DPFVRFY035DxvVW7YB0Z9SDit7HsZh6IbyOyrlnHi29s8qWNvavJ17W6+BuvsJmOpo0fR4UlrCi+h8dX0WbD/R5op2P3Jd6ZKk+hvlW61Pv55f6L8aJz7uzvv7BikapOhU4FPxrAhFzaIhuY/HVb/ozq4krEN5Daz0wTxjdW6nZ1Z7xTiF/C4vs5El9CalfzzRbf1RxLm2Ok+H7mW1fLlQ6wmV5GjR9EkT30tas5pmr83uc8qBknbzZ2X5SnwOlWLFKPcnfv+XjdOV+e+dKFtYpUdSr0ruXnApiWG1vksZ32def+odTXxYi/8ex+5hgvvqtm2xvVYEcQv371V9TRluZY10xTxVc008Ymnye+mVnX1WyfYyxnaUP2fl7d7WrywRpvYM6zGmHsvihPgVOsVaQe5ZtnD+Ol5xw594XdvVt3damwWPN9IoDJTX5de7y0RZYw4evO9I46vRvxtxxf0eSDxVfUbHUDG2n/8YtXf0vxdx1f1xwjxZdTf12VdzXhutosc5j9FJ8wvvZqC+lxXdPO1n4JMx/a9DM3GLhfylPgJBt0qZ8cXL/89F68+pw2Z8/s7L92Z4MiVZ0KQ/LbKcXN8QG2x0tbYQkznUXBzHGCg2215hK6WOm0qxvYGMuP37cuFhV/vxXWNfk88bV0sa7iu5pqXQ02OdJ+Ko8XX3jBnXS6rgnHa7+H+Y9Ol9qO5hQ41gZF6lH+6+DahTM78QJ0whxcvrlxkapLheH51ZRqZvr02p059rDuKmaaoWZmOseRVlpwD11sdcK9jW2A5ccvWxe7ir/TIuuadpj4QnpZV/1dTbKuudc42H7KzhZfdc21DL+uSfbZ3Qn2NW3XNKfAsTbuUu/no8Mr8QJ0siL1+avbFKnqVFgUv51SQeojZzXBT99zz1A2Mx3lSPustopetjrV3sbW++bj16yLdcXfY511xefvaFfWNYn4+yq7opqDxZdc+ciGX9f2y+zrBDsadQxqU+AR2xSpR/nl/ovxGnT7XNh7fvsiVZ0Ki+W3U9oLfuQsKL6KmY6jbGY6x5GWaRvZvY2t683H71gXG4u/u1Lrig/f0a6sa3vxd1R5RQWniq+3+JEtZGNbbnKxxzfrqGPQnAIP275IPcqd3WfjZeg2eeZLF/Zu3dWlApPwqyltZD9yVhNfxUzHUTkdHWXXK4q/i073Nrau1x6/YF0sLf7WSu0qPnxHu7Iu25t1S2OPVCdTLWch69p+k70c37SjzjonwJCm6lLv58bOfrwS3Sxnz+xc+MZ3pypS1akAtBH8vFlQfBtzDFA/XZxj7yuKv4Uelza8ftcev11dLC3+vqqtKz55R7uyLqubdUsDz1Mtk+xnOevaco1dHN/kc840JMCoJixS7+eTg+vPPXUuXoxukP1Xb09bpKpTAWgg+HmzoOwH8PkGqJ8uzrHrFcXn73Fpw+t05/F71cXe4u+o4LriY/eyKOuyt462VGqYmtl+RUvb2DY7LH52HQ0JMKppu9T7+ejwyoUzO/FudK0cvHBjjiJVlwrA3LKfNwsa6QN4Ryl+ghViLe2XNrwedx6/VF1c1/h7qbmr+Ni9LMq67G3uRdUZJr7MXo5saRvbeIFlD26mIWeaEGBUkxepR/nl/ovxenSNf5G6/8JMRao6FYC5ZT9vFjTSB/BtRg2+dLXjq7OrXjZTJ1tfqMH1uPP2l6fH69ps5ocnj7xo5bUUSS+3qEg2XldkacHDqrOoOpNUPrItt5Qa+3+G/vdlmwWWPbuZJpx8PICBzVSkHuWd85fiJekqeeZLF/Zu3dWlAtCj+OfNggb7AD7VbHUmSQ1ZYYyyy1l37OBL87Dudl7htlSYITjh6nMWGaPxSCvOmX1165pjXW3m7G6SBhMWGWP4I6s2Z4NJNt5ewYPraDyAgc3apd7PN88exqvS03P2zM6Fb3x31iJVnQrAfOIfNgvK7mSOV5/wpAqO1GC8AYaZb54t56wzyTL1tfBqN6TUMA0WtfF4deaZb5JtZqsziXVts665ZxtmpMkHqzBDF+e15ZHVHG/ukTabLb6WZuNNPhvAwOYuUu/nk4Prl5/eixemp2T/1dsNilR1KgAziX/YLCi7kzleffIzqjlYtXmqTVX5ahUcaSH6WnjBaRcy0vaDFRlpvuVsv6hq81jXACNVHqzCGDU3Y7BSg208Yan9dDEYwPAadKn389HhlQtnduKd6bE5eOFGsyJVlwrAHCp82Kwmu5M5Xn2OAyo4Xp1Jag5W/2rVnGpsHS288pylZqv8HMUHm2k5U22p2lTLXNfGg5Uapv548RmqLaSLCQuONPdsGw9ZcEWTDzbhVADDa1OkHuVfDy7Ha9PHc2Hv+ZZFqjoVgDlU+LBZTXYnc7x6/Q/j209YZIzK43VxtcoONqqOFl58yCLjzXGg064rO9tM+5lwS6Vms64eJ2k8ZIVh4gPMdF7VhpxjmGmXNtOEm825hC1NOBXA8Fp2qffzzvlL8fL04TzzpQt7t+7qUgHoXYUPmwUFdzLHicx3NHWGrDBD8Qm7uFqVZxtSLws3YWSMmdYVHG+O/Uy+pTrjWVd3Y3Q0p/PqbtQ6kzQessg1K7ifSUYCWILGRepRbuzsxyvUo5w9s7P/2p32Rao6FYDJFfmwWU1wJ3OcyKznUmHULhY17ZzZV591Y/UnHEkv2y4+3uRDbjbnAk9z3SHnWNHkW6ozoXV1NENw2vgY/S6ho2knn2G+pc0xaoWlVVvOJPMALEGkSL2fTw6uP/fUuXiRej8HV95IFanqVACmVeTDZjXBtczx0nMfSnzaZS4q++qzbqyLIcfQxZWoPFupUesf5UyjBlc006KKTGhdvQzQ48DDvHqDI6swbYUZgtNWWFq1zUwyD8ASpLrU+/no8MqFMzvhIvXvLmeLVF0qABMq8mGzmuBaejyR+MC9LGrCUYNbarC0LoYcQxdXovJs84267rT1z3G+aVOvO9+iigxpXZEB5ljRrANvNvMw57WQI4sPkJ1244ErzFBzGICFCBapR/nl/ovBInXv7MV4kapOBWBCdT5slhJcS6cnEpx5sYsKvvTcG+tlzgF0cSvKDjbrtOsOXP8c5xs48qJzL6rCkNYV2dJMK5p17OwA3b33zWTH7m5p0w688cwVZphjmC0nAViOeJd6P3d2n40UqWfP7OzduhtvUXWpAExo8k+aY3y8Cq6l0+MIjt3XoiYceN2ZJz+jWZfWy5y9q38ryg5WbeDKhzj3wJEXnXtRFea0ruIvvY344Y7x0v0eWfCl2yytzswVZqg2CcBCxFvUB7n89F77LnX/1dvxClWdCsC0Jv+kOcbHq+Ba+j2O1NhLXlTqdRtsrKNRuzb5rZh82zWnajPzWmNXPsQ6Axe/7fH9zDrDqOvqZUXVJndeG0gN3+nSioxdZIwJJ9lmBoBFiVeoD/JfB9caf3HqwQs34uWpLhWAyU37+W6YT1jBtfR7FpGNLXxXkRdts7GORu3a5Ldi8m3XnKrNzKuPXfkE24zd/hUb7Co+52LXlbpRs+6n2vCpl3ZkGwzf6dKKjD3eGBvPALAo8f70kfz7wSvNitQLe8/Hm1N1KgBzmPbz3TCfsIJr6fos2g9vUZEXbbC0jkbt2uS3Ytpt15yq4NhlT7DZ2O1fscGi4tPGB6g/bV8rmnX+Xl666yNLDd/pxuqcdYUxKswAsBzx5vTYvHP+UoMi9dwXdut8Tao6FYBpTfsxc5hPWMGddH0W7Ye3qMiLNlhaR6N2bfJbMe22a07VcvLGL9d4V+1n7mtR8WnjA9Sftq8VlZp/aa87FZd8LUUmr7DDCnsAWI54bXpSbuzsz92l7r92J16Y6lIBmMm0H+6G+ZAV3EnXB9F+aZ3uqver1WZjfU3bqWlvxeTbLjhS48lXHL7m8RVU9qrXnDY+QP1pO9rP3POv+xYir9vXlS7yFrpeWpHJ4zsssgeAhYgXpqfkk4Prs35xasGvSVWnAjChaT/cDfMhK7iT3g+i5fxd76rrq9VmY31N26lpb8Xk2y44UuPJVxm+7PEV1Neu4tPGB6g/bUf7mXv+dd9C5HX7utJF3kLXS6szeXaSOnsAWIJ4YXp6Pjq8srSvSdWlAjCVaT8gj/EhK7uT3g+i5fxznFR3iRzNWq+7sb6m7VT2TkbG6y6NtzTh8RXU167i08YHKD5tX/tp8C7qv+4AR9b1PZ97OZWHz969IksAWIJ4VbpKfn7hhaV9Tao6FYBJTPvJbozPWdmd9H4QLfc2x0n1mIJHM4m+pu1U8EJGZusxjRc11fHV1Nei4icbH6D4tH3tp8G7qP+6A5xX+3fR9dLqDD/hJOsOU2cJAEsQ70lXzDfPHi7qa1J1qQBMYtpPdmN8zsrupPeDaLm3OU6qxxQ8mkn0NW2nghcyMluPabmoqc6urL521fgizTrA5MuZddoVB44f0CRSbyHyugOcV/t30fvS6gyf2mSdDQAML96Qrp5PDq4/99S5RX1NqjoVgO1N+LFumI9a2Z30fgot9zbHSfWYgkczib6m7VTwQkZm6zEtFzXV2ZXV164aX6RZB5h8ObNOu+LAfe2nwbtY640s50Un556vpc7wE24ycu233wDA8OIN6VqZ6otTe/maVHUqAJOY9pPdAJ+2sgsZ4Aia7W2Ok+ox7c9l9RfdRl/Tdip4ISOz9ZiWi5rq7Mrqa1eNL9KsA0y+nFmnXXHgvvbT4F2s9UaW86KTc8/XUmr49svs/fgAOhLvRjfI9l+c2tfXpOpSAdjehB+yxvi0lV3IAEfQbG9znFSPaX8uq7/oNvqatlPBCxmZrdM0W9RUZ1dWX7tqeYvmHmDy5cw67YoD97WfBu9irTeynBednHu+llLDt19mqbcPMLZ4MbpZtvzi1L6+JlWdCsD2JvxYN8AHrjm2sdZCBjiCNnub6aR6TPtzWf1Ft9HXtJ0KXsjIbJ2m2ZamOruy+tpV/HCtq9krzr2cgm+k/Yu2vyEzcc/XUmr49pew1NsHGFi8Et0423xxao9fk6pLBWBL036s6/0DV3wbAxxBm9XNcVKdpv25rP6i2+hr2k4FL2Rktk7TbEtTnV1Zfe0qfrjW1ewV515OwTfS/kXb35CZNH4jvS+t2vDODmBI8Up0m/z7wSuL+ppUdSoA25j2I3nvn7niqxhg/21WN9O97THtz2X1F91GX9N2KnghI7N1mmZbmursyuprV/HDta5mrzj3cgq+kfYv2v6GzKTxG+l9adWG7/HspnrvAKOKl6Hb553zl9YqUs+e2en3a1J1qQBsY9qP5L1/7IqvYoD9t1ndTPe2x7Q/l9VfdBt9Tdup4IWMzNZpmm1pqrMrq69dxQ/Xupq94tzLKfhG2r9o+xsyk8ZvpPelVRu+5fFVe+8Ao4o3oZPkxs7+Gl+T+urteAeqTgUgZdqPdf1+7JpjD+uuYoD9t1ndTIfVY9qfy+ovuo2+pu1U8EJGZus0zbY01dmV1deu4odrXc1ece7lFHwj7V+0/Q2ZSeM30vvSCg7fZqUF3zjAkOId6FT55OD6hTM7K31N6vNX4+2nLhWAoGk/lff7yWuOPay7igH232Z1Mx1Wj2l/Lqu/6Db6mrZTwQsZma3TNNvSVGdXVl+7ih+udTV7xbmXU/CNtH/R9jdkJo3fSO9LKzh8m5UWfOMA44kXoNPmXw8uP7FIfeZLF+LVpzoVgKxpP5X3++GrwhIGWH6b7c10aXtM+3NZ/UW30de0nQpeyMhsnabZlqY6u7L62lX8cK2r2SvOvZyCb6T9i7a/ITNp/EZ6X1rN4RtsteYbBxhMvP2cPHf3nj/9a1IvfOO78d5TlwpA1rSfyjv98FVkCQMsv832ZjqvHtP+XFZ/0W30NW2nghcyMlunabalqc6urL52FT9c62r2inMvp+Abaf+i7W/ITBq/kd6XVnP4ubda810DDCbee86Uy0/vnfjXfS/fjJee6lQAKpj2g3mPH8GKbGCAzTfb3kxH1l3an8vqL7qNvqbtVPBCRmbrNM22NNXZldXXruKHa13NXnHu5bR5F2u9keW86OT6veeRvdWcfO6V1nzXAIOJl54z5aPDK8d+ceqFvefjdac6FYAipv2k3ONHsCIbGGDzzbY305F1l/bnsvqLbqOvaTsVvJCR2TpNsy1NdXZl9bWr+OFaV7NXnHs5bd7FWm9kOS86uX7vefu9VZ581tnKvmuAYcQbz1nz8wsvPFKknvvC7t6tu/GuU5cKQBHTflLu7iNYnbc/wOabLXCmU+su7c9l9RfdRl/Tdip4ISOzdZpmi5rq7Mrqa1ctb9HcA0y+nFmnXXHgvvbT4F2s9UaW86KT6/eet99b5clnna3mWwYYSbzunDvfPHv4cJe6/+rteNGpTgWgjmk/KXf3QazOe+997S0XuLRbuqX43Q4O3GDaTk17K6bddsGRarKo1fW1q/iDaV3NXnHu5bR5F2u9keW86OT6veft91Z58vlmK/uWAYYRLzob5JOD6889de5vX5P6/NV4xalLBaCaaT8sd/RBbKY3vtl7733zLRfY+64ai9/t4MANpu3UtLdi2m0XHKkmi1pdX7uKP5jWVe0V55B6C5HXHeC82r+Lru958clnGq/s+wUYRrzobJN/P3hl5789/cyXLsT7TXUqAAVN+2G5l49j1d51fIAttdxh77tqrML1Tg3cYNpOTXsrpt12wZFqqnl8NfW1qPjJWle1V5xD6i1EXneAI4u8hU73Vn/smcYr+34BxhCvOFvmh/tfufCN78bLTV0qADVN+6mzi09k1d5yfIAttdxh77tqrML1Tg3cYNpOTXsrJt92zamqKXt8LYdv/HJtFhU/Weuq9opzSL2FyOsOcGSRt9Dp3roYe/Lxir9fgAHE+83GiTeb6lQAypr2U2f9T2Tzvd+N33J8gC21nL/3XTVW4XqnBm4wbaemvRWTb7vmVNWUPb6Wwzd+uTaLip+sdbV80VmX02D+dd9C5HWD73cqvd/zZqvrZebJJ6z8ZgEGEG82G+f+W47XmrpUAMqa/INn5c9lNd9skTF6Gb7TRUV0d7X6mrZT096Kybddc6pqyh5fy8nLvuI24idrXTVfdELB+Zf2ulOJzD/tPWmzul5mnnzCym8WYADxcrN9l3pPnQoAJ5v8s2fZj2Y132mRMXoZvt9dtdfd1epr2k5Neysm33bNqQoqe4LNxi77ituIH6t11XzRCQXnH+B12x9ZavhpX7fB6voaeMIJ679ZgK7Fm81IkXok3mzqUgGoaY6PnwU/nZV9j3Um6WL4fnfVXndXq69pOzXtrZh82zWnKqjsCTYbu+wrbiN+rNZV80Wnkh0+9dKOrMLe5l7d5NPOOvAc09Z8pwC9i5ebqSL13iK7VHUqACsa/jNa5TdYapj6k/e4qJTu7lVf03Zq8sd28m2XHayUyifYYOz2r9hmS/Fjta7Kr7u97OSpl+73vLLDT/vSs25vjlFnPeuZBi74TgG6Fi83s13qvUXWqe2vGQA9GvtjWvG3Vm2e1OSR151vOfNN3vjlWu6qr2k7Ne2tmGPbZQdrM3yzF1rIA77YFW02sHVVft3tZScf46VbHtkw5zXr9maac+6Dnm/sau8UoF/xcjNbpB6Jl5vqVABqGvWTWv33VXCkyNiRl55vP/NN3vjlOr1UDabt1ORP7uTbrjxbg8kbv9zwD/hiV7TZwNbV/nXb7GrysbMDdPfeNxMfe9oB5tjeHBO2OehZJ6/zNgG6Fu8340XqPV0qAJxgvM9rvbyjmlO1Hzv10vOtaI6x279ip5eqwbSdmvzJnWPblWebe+zGL9dsV6lRe9nP5NNuNrB1tX/dNruafOzsANn33ubIKsw8+QzTbm+m8Zqd8tzzF3mbAJ2K95sVitQj8XJTnQpATSN9auvovZQdrPHMqQFmWtFMM7d/xZaL6mvaTsUf3vZDTj7efDO3f8Vmi0rN2ct+Jp92s4GtK/LSDdZVYeBhXr3BeRUZePJrM+EOZ52tzSk3eAvx9wjQr3jFWadLvbe8OnXu2wXAGMb47Nbdu6g8W7OZswPMsaKZBo68aHdbajNtpyZ/eOfYdvHx5ps58qINdhUcsv5yZpp2s4GtK/LSc6+ryLTZAYosobtpJ5+k1EUKHnHLNxJ8jwCdivebpYrUe8vrUtWpAKyo609wnX4CLT5em4HjM8yxqMmnTb1ugxVNPnCDaTs1+bMz07brTzjHtKnXnXVX2Qkrb2bWaTcb2LpSrz7fxiafc+NRswPU2UNfo84xzMazNRimwfkG31HkPQL0KF5xlipSj8TLTV0qADX1+FGux5nbDD/VkLNOW2GSabc005zBl551RXMM3GDaTk17K+bbdhdDTjtq9tXn21V2trJrmXvazQa2rtSrz7S0OYbceM6RBujryAqOtNaczQaY+3DrvLVmbxCgR/GKs2aXek+dCgDHyX6sW/2TXRdDVngj9UetM8yEu5p8yPiKJl/OrAM3mLZTXTw4M41afMIKM0y+q/hgBXfSZtrNBrau4ACT722O8baZMD5DtYX0MuFMU9XPJGdaebcN3iBAj+IVZ80i9Ui839SlAlBQ/NNr/XS37cpDlppqy0XNN1t8hqk202bgBtN2qvJT09eodQabY1Hb76rIVHUW0njazQa2ruAA065uptm2GW+wGXo5ssqzFc8kq6u82zZvEKAv8YqzcpF6b2FdqjoVgNXFP8BWTqerrjlhzdVtM9Ucg1UYY8udNB64wbSdKvi8NJ52+4GrjTTTlraZqs48FbYRmda62gw87QxTLXD4qSrMMPxUzSYsm0lWV3a3bd4dQHfiLWfxLvXewurUqe4VAMOLf4Atm95XXW22yturM0yF5Ww2Q2rgBtN2qs79TE27zeRFxmi8qE4nmXyeDV49OK11tRl42hm2nKrUMLOOV2SM4Y+s5agFM+H2Cu622bsD6Ei84qxfpB6JV5zqVAAKin+GLZjB9hyfp6PtBWcospyNx4gM3GDaTpW6oqmB13oXwZfuZUvZA2q2mS3OJzDtZgNbV3yMDSaMD9B+UUXGKH5e2x9ZauwimXB71Xbb7K0B9CXecnZRpN7TpQLACeIfY0vFkmuuNP4uym6pyBiRgRtM26lSVzQ1cKlY1KyLig+Qmnazga0rPkbZlDqvOpNUzvZHtsy9zbfAOott9tYAOhJvOTvqUu+pUwHgBPFPskViw5VXGn8vNbdUZ5L2AzeYtlPVbmlq5jqxqFm3VGGGyLSbDWxdFSapmVLnVWqYmtl+RcvcW4MdVlhsy7cG0It4y9lRkXokXnHqUgGoKf5htkKst/I+42+n5qLqTNJ+4AbTdqraLQ2OXSG2NPeWiozRftrNBrauIsNUS7XzKjVMzWy/osWursEOs1tt+b4AehFvObsrUu8tqUtVpwKwrvjn2YE/Tcff3Rgrjb+jglsqNUzjgRtM26mCFzU4eTa21GBRRcZoP+1mA1tXnXnqZPvNTL6favNUyyT76XR1E4439xpTK235vgB6ES86e+xS7y2pTp1jewCMLf7pOBKL7Wir8fdVbUvV5mk5cINpO1XzrqYmz8aiGmypziSNp91sYOuqM0+RbL+WOfZTcKQ6mWo5Pa5u2tnabLL9Shu/L4AuxIvOHovUI/GWU50KQFnxz8iNY6vdbTX+7kptqeBIzQZuMG2nyl7X1PCpWFSbLZUapuW0mw1sXaVGimeSncyxnJpTVciEm+ludZMP1nKZzfbZ+E0BdCFedPZbpN7TpQLAqeKflJvFSjvdavw91tlSzanaDNxg2k5VvrGp+dvHopptqdo8zabdbGDrqjZVMFMtZI7NlB1ssCPraHVzTDXkPtu/KYD64l1n113qPXUqADxJ/CPzSJ804292vMXG32aRLdWcqs3ADabtVOUbG3wLLWNRLbdUcKQ20242sHUVHCySCbcxx1oqzzbSkfWyuplGGm+Z7d8RQH3xorP3IvWeLhUAVhD/4DzMJ81pJ49vr8hi42+2wpbKDtZg4AbTdqr4pQ2+izaxqMZbqjlVg2k3G9i6as7WONOuYo6dFB9vmCPrYnXzzTPeJtu/I4D64l3nAF3qPXUqAKwg+9l5mM+Yk88fX2OR3cbfcnxFxcebdeAG03aqi6sbfC+zxpbab6nsYHNPu9nA1lV5wjaZYw+Tb6P+hGMc2VrqvPGuF7uEqwJQR7zoHKNIPRJvOXWpAHSh/WfnwT5gzvEW4sussNhqe2i/pfoTzjdwg2k71cvtDb6dmWJLkS1Vnm3WaTcb2LqKDzl3ZlrC5KvoZc6uz2szFd541+td1G0BiIt3ncMUqfd0qQCwstR/Qxjj0+VMbyS+1Qq7PRJfQmpLXQw508ANpu1URxc4+I5G2s8D8T1EtlR/wpmm3Wxg66o/50yZ7+3PsYeORu36yDaWfdddb3iZFwYgIt51Dtal3lOnAsA64v9VodPPlfO9Het9IL6KyIo6GnXygRtM26nurvGK4s9y5eU8EN9G+y11MeQc0242sHX1Mm1f733yDXQ3cI/nNYnIW+59z64NQBvxrnOwIvVIvOjUpQLQl/h/YejuE+Xcb2rh631Y/NY13lJf0047cINpO9XjTV5d/KGuuZZHxDfTcksdjTrttJsNbF19zdzLu578vfc4c3fvfXLN3mnvq3ZtANqI153jFan3ltGlqlMBmFz8PzV09HGywVtb+IYfEb+BzVbU3cx9Tdupfu/z6hbygG9pIVvqa+D4hq2rjWknr/9+J3/X/U7e0bvuV+8Ld3kAGojXnaN2qfeWUadmNwzAwOL/5aH+B8lmb3CxGz7WEm5gd8P3NW2nBrjYK1rCM7694bfU19jxPVtXS9POX/mdTv5+B3gL9d9sv3rfvCsE0EC87hy1SD0S7zrVqQD0LvLfH7r4CNn4nS5zyacY+BJ29xb6mrZTw1zv1Y36gE9r1C31NX984dYVMe0bKfgGJ3+bw7yRsu+xa70fgbsEMLd43Tl2kXpPlwoA0/GfIB6RetdL2/MqFnsJYQmW/D80a7EliPAzqjuOrKDez8KlAphbvPEcvku9p04FgHn4qFhkA2MveTMLuYGwWB7wVdgSpPg9pDvOK6vIp6oib8EdA3hcvO5cQpF6T5cKAMzD52UAAIBtDPCRSpcKMKt447mQLvWeOhUAmIHPywAAANvo/SPVtEWqz4YAj4s3ngspUo/Eu05dKgAMxudlAACgju4+oXQ38KxvwQdDgMfFG89FFan3dKkAwNR8ZAYAAOro7hNKdwPPN78PhgDHipeeS+tS76lTAYBJ+cgMAADU0V2v19e0s87vgyHA4+KN5wKL1CPxulOXCgDD8JEZAACoo69er6NR557fp0KAY8VLT13qqEkvGAAWxKdmAACgjo7avV7mbDC8T4UAx4o3nostUo/E605dKgCMwadmAACgjo7avSJzrvV/cKYK1UdCgGPFS88lF6n3Ru9S1akA0IwPzgAAQClddHx1Jpy1Ho3vGaBr8d5z4V3qvdHr1PR2AWApfHAGAABKqV/zlRovXqH6SAhwrHjpqUg9Em88dakA0DsfnAEAgFKKN33VZotXqD4PAhwr3nvqUo/EG091KgD0zmdnAACgmpqVX8GRZt2Vz4MAG4uXnorUh8UbT10qAHTNZ2cAAKCaasVfnUna78qHQYANxHtPRerD4o2nOhUAuubjMwAAUFC8CuylhWy5KB8GAVYUrz51qY+IN566VADol4/PAABAQfF+sJcKcox3ATCSeO+pSD1WvPRUpwJAp3yCBgAAaoq3hF20kGO8C4CRxKtPXeqx4o2nLhUAOuUTNAAAUFO8JeyighzjXQAMI957KlJPES89dakA0CMfogEAgLLijWf9CnKYNwIwhnj1qUg9Rbz0VKcCQI98iAYAACqL957F+8dh3gjAGOLtpy71dPHSU5cKAN3xORoAACgu3n5W/tw0zBsBGEC8+lSkriLee6pTAaAvPkoDAAD1xTvQsh+ahnkjAAOIt5+61FXES09dKgD0xadpAACgC/EmtOYnpmHeCEDv4tWnInV18d5TlwoAHfGBGgAA6EW8Dy34WWmk9wLQtXj7qUtdXbz3VKcCQEd8pgYAAPoS70ZLfVAa6b0AdC3efipS1xLvPXWpANALH6sBAIDuxBvSOh+RRnovAP2Kt5+K1HXFe091KgD0wodrAACgU/G2tMKHo5HeC0C/4gWoLnUD8d5TlwoAXfARGwAA6Fq8Oc1+LBrpvQD0K16AKlI3E68+dakAUJ8P2gAAwAAW2KLO8cZT7wKga/ECVJe6sXj1qU4FgPp86AYAAEaykAp1df1ODtCLeAGqSN1GvPrUpQIAAAAAEYvtTwFoJl6A6lK3FK8+1akAAAAAQAWaUwAmFy9AFanbi1efulQAAAAAAADGE+9Adanbi1efulQAAAAAAAAGEy9AFalTibef6lQAAAAAAABGEu9AdalTiVefulQAAAAAAABGEu9AFakTirefulQAAAAAAADGEO9AFanTiref6lQAAAAAAADGEK9BdamTi7efulQAAAAAAAB6F+9AFakziReg6lQAAAAAAAC6Fq9BdakzibefulQAAAAAAAC6Fq9BFanziRegulQAAAAAAAA6Fa9Bdamziheg6lQAAAAAAAA6Fa9BFalzixegulQAAAAAAAB6FG9CdalzixegulQAAAAAAAC6E69BFaltxDtQdSoAAAAAAAB9iTehutQ24gWoLhUAAAAAAIC+xJtQRWoz8Q5UlwoAAAAAAEAv4k2oLrWleAeqTgUAAAAAAKAX8SZUkdpYvAPVpQIAAAAAANCFeBmqS20s3oHqUgEAAAAAAKgv3oQqUiPiNag6FQAAAAAAgOLiZaguNSLegepSAQDgdP/n//6dtZKeF/7/9uwox47cSgLo/lftgeFBW1arpaqXJCMu8xzwU8C7DDJLAAMAAOBC8TJUkZoSr0HVqQAA8JfvNqcKVgAAANgtXobqUoPiHaguFQCAl9vUn+pVAQAAYIl4GapIzYrXoLpUgNc6XB9oK+AzvotN4n+mnAik+IoBAGCWeB+qS82K16DqVIDXipcI2gr4Ct/CWvG/SM4F4ny/AAAwSLwMVaQ2iNegulSAd4rXBwoL+AqfwCrxP0EOCEr4bAEAYJB4H6pLbRCvQXWpAO8Ubw0UFvAVbv5z8b85jgmq+GABAGCQeB+qSC0Rb0LVqQAvFO8L4it9AvAl7vwT8b8zTgoK+VoBAGCKeB+qS+0Rr0F1qQAvFC8LGlb6EODPXPiPxf/COC/o5DsFAIAp4n2oIrVKvAnVpQK8Tbwm6Fnpo4DfcdU/EP+r4sigmY8UAACmiFeiutQq8SZUnQrwNvGOoGqlTwP+kXv+XfG/J/5AQTmfJwAAjBDvQxWpheJNqC4V4FXi7UDbSh8I/JpL/i3xvyT+QEE/3yYAAIwQr0R1qYXiTaguFeBV4tVA4UqfCfyCG/518b8h/kDBCD5MAAAYIV6JKlI7xctQdSrAe8R7gc6VPhb4mev9RfG/Hv5AwRS+SgAA6BevRHWpteJNqC4V4D3ipUDtSp8M/A93+yvifzf8gYJBfJIAANAvXokqUpvFy1BdKsBLxBuB5pU+HPgvF/uP4n8x/IGCWXyPAADQL96K6lKbxctQXSrAS8TrgPKVPh/4f27178X/VvgDBeP4GAEAoFy8ElWklouXoepUgJeIdwH9K31E8G+u9G/E/0r46wQT+RgBAKBcvBXVpfaLl6G6VIA3iHcB/St9RPBvrvRvxP9K+AMFE/kSAQCgXLwV1aX2i5ehulSAN4gXASNW+pTAm/8/iv99iK/0CcBUPkMAAGgWr0QVqVPE+1B1KsD14i3AlJU+KN7OZf6l+F+GhpU+BJjKZwgAAM3iragudYp4GapLBbhevAWYstIHxdu5zL8U/8tQstLnACP5BgEAoFm8FVWkDhLvQ3WpAHeLVwCDVvqseDU3+e8K/wL46wSD+AYBAKBWvBXVpc4S70PVqQB3S738T1zps+LV3OS/6//q/YGCZj5AAACoFW9FFanjxPtQXSrAxU4+9U9f6bPi1dzkv5vyvfsDBQAAAN8SL0Z1qePE+1BdKsDFRj/pn2kotBU0cI1/Mu5L99cJAAAAviLeiipSh4pXoupUgFvd8aS/u6TQVhDnGv9k4jfuDxQAAAD8UbwY1aUOFe9DdakAt7rpPX93T6GqIMg1/sncD9wfKAAAAPiNeDGqSB0q3ofqUgFudd97/r6eomF3vJY7/KPpX/f0+QEAAGCfeDeqS50rXonqUgGudOV7/qaeomR3vJM7/KPpn7Y/UAAAAPBL8WJUlzpavBJVpwJc6dbHfFUFl3GHf3TBd+0PFAAAAPxdvBhVpE4Xr0R1qQD3ufUxf1NPUbI7Xsgd/tEd37U/UAAAAPCTeDeqS50uXonqUgHuc/Fj/o6t9eyOt3GHf3THd+0PFAAAAPwoXowqUu8Qb0XVqQCXufgxf8fWenbH27jDP7rjo/YHCgAAAH4U70Z1qXeIV6K6VIDL3P2Yf/fu/jJ38mOmH/G/dKk/uOmjvmkvf3TBFuLkxgd8en8kn5/c8Z8OADBUvBtVpN4hXonqUgEus/wlv+pd5dbd3bSX5XYcekNc12zkuZtO9qa9/OS+HaWIi2+58u/JWvL50fL/hq5JBgCIiHejutSbxFtRXSrATe5+Qrlpdzv2Et/UKlvDKQlt7uTLTT/KrXuJn+9NH12WiPi6rd/dHVdLOD86cGHmhgMAZMW7UV3qTeKtqDoV4CZ3P5tcsLuT711VZ/dHh5OJhzZu4H3mHuLFe7nvi1u+tTO/uGPySPJnxh4azqYtlO/0Y8L5y/nbMigcAKBEvBtVpF4m3orqUgGucf1rydzdee/6J8FkgqENGnW3icd3cjvT52/b5smBl//K0MzXTh7/lR3Wnmz/fj8gnL/Eb0t5PgBAlXg9qku9TLwV1aUCXOP6R5KJu4s/c7Ud4l/isQRzGzHkGbMO7vx25k7eudljo+74lYmBLx/7zA+dSWZ5OFN2/V3xZErCiYdQng8A0CbejSpSrxQvRtWpAHe4/nlk3O7ir1udRxmPIp5b+XgnDTq1W8U/sZNnd2DIfVHMivpAIKkfKkxm3N6/KJ5GTzLx7ZfnAwAUitejutQrxVtRXSrAHa5/Gxm0u/ijVueBxrdfElrzbOeNOLIrxb+s88e3e8LdOUzJedPMJT9UlcmmtTuBuRGJoi0fAKBWvB5VpF4p3orqUgHucP2ryIjdxR+yas80vvGe0GoHixhxZPeJf1ORE9w624EERoS8b+BjvzUok31rawijIxJFTz4AQK14PapLvVi8GNWlAlzg+ieR/t3Fn7BqjzW+5arQOqdKmXJqN4l/Tanj2zfYme33J7xv4KrfiqdxZm3K4YKIpNGQDwDQLF6P6lIvFi9G1akAF7j7PaR/d/HHq9qTjW+2LbTCkYIGHdwF4h9R9uw2TXVy783xbp226reyURxeO9K4IyJpNFwbAKBTvB5VpN4tXozqUgGmu/sxpHx38Wer2sONb7MwtLZ5smad3Wjxzyd+cDtGOrzx2mzjozbHsu+SnFnLA7kmImlkrw0AUCvekOpS7xYvRnWpANPd/RLSvLv4g1U8gfuS2Rpa1TBxE09woviH03Bky+c5v+vabLeOWvhzkRyCa20mN0UkjZPhAAAjxOtRRer14sWoLhVgurufQWq3Fn+qKsnhvmT2JVY1TIO5RzlF/KspOay1w6S2XBjs7jkLf+58CPG1MJbLIpLGmXAAgCniDaku9Q3i3ag6FWC0u99AOrcWf6TqieLKZDYl1jNJifiBXpPkL8Wz7TmjtZOk9tuW6oE5C3/u8EgNa1Us90UkkDPhAABTxBtSXeobxItRXSrAaBe/gXRuLf5CVZXGxeEsT6xkjB7x07wv0r/E86w6nYVjBDfbluruIWt/8dg8PWtJMldGJJDd4QAAU8TrUUXqe8S7UV0qwFwXP4AU7iv+NlWYycXhrI2rZIwq8QO9Nd54hlUnsnCM7GarUt09Ye0vHpunai0J58p8ZLIvGQBgkHhDqkt9j3g3qksFmOvWB5DCfcUfpgoziYTT89OpiJ6MUeXk2b0n6nhobQcRH37VTnsiPTBh7S+eGaZwPc/n1oj6A0mdwpNkAIBZ4g2pIvU94t2oOhVgritfPzpfdY69Ph1ezUf2wYS1cTXMUCh17W+NPZ5SYf7xyVdtsyfS3eOV/+juSTrXw3wujqgwk4YZHiYDAMwSL0l1qa8S70Z1qQBDXfn6UbipfW9N/zTnsV9sDsdIO86rysl7fv0RRBLozzx+WxZusyTS3bOV/+juSb4+6skffRjR3fn0xNJ2Rk/mAQCmiDekutS3iXejulSAoS57+ih86do61bcGa5jh2GAPRyocrGGGTvsu9pmVzu+/GrbZMMPJkQ7vsSHPA7OV/+jWMZ7MVjLG4cEaxiiJ5bMxykcCAPrFG1JF6gvF61FdKsBEPY9CnXtZsqOqqaqG2TTSk2FqZ2uYodamW31+3Zdh1Tw9k6SuUEmkWwcb8bubZlg11UvmmT5MfIADgy2cCgCoFS9JdakvFK9H1akAE5W8CBXuYtWO2ubZNNUFk5SP1zBDreXHFF93ZHjHSPHLsHaD8Tx3TzXidzfNsPB0ekYqGaNwqqpA9oWzdjYAoE28IVWkvlO8G9WlAkzU8BzUM/mO7bTN0zZYyRjHJmwYY2E4PZZfpIY1N73a2eIDxO9MPM/dU4343R0DLD+XktniA9QOVpjJiNkAgCrxklSX+lrxelSXCjDO8regy1ZVvEtOvG28hhlGTNgwQ7m1J9WzxkV32XiDTv8r/77wrO843Pje1x5KyXjN4cTHq41l7Xg7ZgMAesRLUl3qa8XrUV0qwDjLH4IuWz3xLjnurRN+NmR8gMNDjp6h39rrVLWmhHbfhJcd9/IdVc0z6KfX/vq+m5OdsDyc7IQvSWbHbABAj3hJqkh9s3hDqk4FmGX5K9lNqyrbJcddOGR/RCVDNswwwtor3bbKE9sx3vIhvzvnBUe8dUc982SjyP761suTGnJEOGvnvCmc5tkAgBLxklSX+nLxelSXCjDL2teYm1ZVts+HOTPnd0dtO7IDc46eYYq196pt1Wa1drCeUYee7LFN9QwzLodBVygy54hkLghnUz7l4wEADeIlqSL15eL1qC4VYJa1rzHXrKpgnw9TO23bqR2Yc/QMs6y9XW2rMKVVI7WNOutAI5sqmWTWr8+6QpFRRySzdtTz4WxNqXk2AKBBvCfVpRJvSHWpAIMsf42ZvgqDXTVS4bSdZ7d1ztEzjLP2grWtqoiWDHNs2m8NPOUov6Vn/uwMwRB6jqBz2kHhRKZdeyLHggIA+FG8J9WlEm9I1akAg+x4jZm7CoNdONKZgb81c+fZdc7ZMMNQC6NrWz3JLDmpzoHLD/FjJVvIzhAMYdwtOjztoGTWDnw4n1RcAADxklSRyr90qQB8x6bXmHGrNtW1g1028zEN4TTMMNeOPxolqyGWVcfUOXPt8T3UsJHXDtAQ/ncdHnhWOAsHPpxPMDEA4OXiPakulf+IN6S6VIAp9r3GDFq1qS4f7MDMh8c+oOSyNcww3Y6/Hg0rHsjCMzo289fHLjy4JRr2Ek8ylUBD+N91cuBx4awd+/DPxXMDAN4p3pMqUvmPeEOqSwWYYutTTP8qT3XTeJeNvVXPlWuY4Q47/pLEVzaH5WdUNXbPkS0X3048zFQCQ+/SsZnHJbN27C9OvvYWlWQIALxEvCfVpfKjeEmqTgUY4cxTTPNqTnXHbAfGPj/5JlX3rWGGy+w43+AKbn/H6fSMXXJeO7iBqRka9v6BY2NPDGfh2F+cfOHPdeYJAFws3pPqUvlRvCHVpQKMcP4ppnN1Rrpwqrsn36HtpjXMcKtNZ31+RXa96VB6Jo+f1D7ZTTWEGdn+lXdpraHhHD7WtRepPFsA4DLxnlSRyo/iDakuFWCE7FNM22qLdMk8b5h8odo71jDD9XafftXtmnudDicWP6mtgptqCDOy/Vvv0iqjwzk5+dqLNC5qAGC0eFWqS+Un8ZJUlwrQL/780rZEWhLjSSOSaZjhPeJf0IHDjY/asFJBfXox10ttqiTMyBgle6+144sbt0ZntfV6AAAXiPekulT+Ll6S6lIB+sWfXAqXSOMZbjU0mYYZ3in+Ne043/iQJSuS1bP7uFhqayVhjt57211aZfkXN3TdkdXu2wIATBTvSRWp/F28JFWnAvSLP7N0LpFmM3wuvv3lsTTM8HLxy7PwfONDlqxIVs+u4XqRrZWEOXrvhXdpieVf3NB1X1xbrw0AMEi8KtWl8kvxklSXClAu/rRSu0SaCvDuzBv2uDD514pfpIdHHJ+wZEXO+vHtWyyytZIwR++98C4tsfyLG7ouTmzf5QEARohXpbpUfilekupSAcrFX1SalzwPp/eGnBu2vPAg+FflbZw4c2dQy7N6fN3Wmxtp1d7P/2LndXpubURz1xsS23eLAIBa8Z5Ukco/iZekulSAcvGHlPIlz2PRvSTehr0vPBF+Er9gXzzl+Hgl6/yZrrhl6w2NdNzG1/5i7XV6aG1Ec9d7Qtt0kQCATvGqVJfKb8R7Ul0qQLP4E0r5kuex6F6SakMIC4+G32i+afEPoWcdPsdFl2uxwxvsCfP8yb7hOj2xNp/R623R7bhOAECheFWqSOU34j2pOhWg2bj3kPLnnfhjVM+aeNbNsTTMwGcKb1r8Q+hZh49v0Z1a7OQeq5I8f7LX36WH1l7F0euF6S2/TgBAoXhbqkvl9+I9qS4VoNbox5DCt534S1TPGnG4g2JpmIEnqi5b/EPoWYcPbt2FWuzYHquSPH+yb7hLT6z93Eav1wa49kYBAFXiVakulT+K96S6VIBaFzyDVD3sxN+gelbzgb48lo9nYImGyxb/EHrW4fNad48WO7bHqiTPn+wb7tITaz+30evNMa66TgBAm3hVqkjlj+I9qS4VoNY1byAlrzrxB6ieVXiODeuzWNYm8/EMrBK/bPEPoWedPKx1N2i9M6m2JXn+cF9ynT629h6OXi8P8/n2AYBC8bZUl8pXxKtSdSpAp5seQBqedOKvTz2r6gR71gexLA/n4xlYK3jZ4h9Czzp5TOvuzhYHdtqW5PnDfc91+szCfKYvka5KAADoEW9Ldal8Rbwn1aUCdLrs9SP+pBN/eupZPWdXtb4by458Pp6B5VKXLf4h9KyTZ7Tu4mxxYKdtSZ4/3Pdcp88szGf6EuzyEACArHhVqkjli+I9qS4VoNN9Tx/Z95z4u1PPaji1VbtIxbIpoo9nCMrez912X+CTvzhunTydpbdmvd3BFsZ4/nDfc50+s/YSjl4S3poDAHBevC3VpfJ18apUlwpQ6L53j+xjTvzRqWfFj2zh8JFYCmcICt7PA47d5AO/OG6dPJ2lt2aLrZstjPH84R6+vROtjWjukvOZHACAY+JtqS6Vr4tXpbpUgEJXvnsE33Pij049K3tYa0c9H0vnDEGp+3nM4bu96ecmrpNHs/TKbLF1s4Uxnj/cw7d3orURzV0yj0QBAOwTb0sVqXxdvCpVpwIUuvXRI7Wv+ItTzwqe1POp9g352QAlMwSV3IStTl74Hb81dJ08l6X3ZYt9m+3M8PzhHr69E62NaO5yBA1RAACrxNtSXSrfFa9KdakAbW599Aju66YYd5vyCtcwTMMMQYW3YrmTl//uJNd6W1ab9tuZ4fnDXfiLU27Ud8mnytob6ygB4LXibakule+KV6W6VIA2t754BPd1WZJbTXl2axisYYag/kvy3Mk9Xhzjcm/LatN+OzM8f7gLf3HKjfou+dRae3sdJQC8SrwtVaTyXfGqVJcK0ObiF4/Uvu5LcpNBD24N4zXMEDTlqjx0bI93x7jW27LatN/OACOH+7Yb9V3yGWHhMTlKAHiDeGGqS+UD8bZUlwpQ5eIXj9S+7ktyk0F3r2HChhmyptyWJ07u8eIY17r7yv3S8i3XBhg53IU/ev5SHRh7bjjvtPY+O00AuFK8LdWl8pl4W6pLBahy8XNHamv3JbnDrIvXMGTDDFmDLszHTu7x7iQXemFQy7dcG2DkcBf+6OFLdWbsoeGw9mI7TQC4SbwtVaTymXhbqk4FqHLxc0dqa/clucOsW9cwZ8MMWcvvTGEUJzd4cYxrvTCo5VuuTS9yuAt/9PClOjb2xHD4j7XX22kCwB3ihakulY/F21JdKkCPu587Ulu7L8nlZl25hlEbZsha/jkXRnFydxfHuNY7g9rxuRWmFxmvP5YDk5f8EDss//YdJQBMFy9Mdal8LN6W6lIBetz93JHa2pVhrjXryjWM2jBD1vLPuS2Nw1u7MsMd3hnUps+tLb3UeP3JbB372A+dDIefjPgLAAAcEG9LFak8EW9LdakAPZa/dVQ9d6S2dmWYa82KqGHahhmyln/ObWmc39qVMS73zpQ2fW5t0aUmHBHOvpmrfmucKcmsveRXHiUAvES8MNWl8lC8MNWlApRY/tZR9dyR2troMM/MPCiikq+jYYa4tWfRFsj5fY3O8NjMo1N6YtPnVhVdasIp+WyaufDnFto986BYxl1yAGCHeGGqS+WheGGqTgUosfaho+25I7i1uXmeGXhQPiVfR8MMcWvPoiqTyKbmBnhy5rkpPbTjTrZFl5pwSj6bZi78uYV2zzwomXGXHADYIV6YKlJ5KN6W6lIBSqx96Gh77ghubWiexwYelE/J19EwQ9zas+iJJbidoQGK6IwdN7Mqt+CQg1JaO20kn63hLB/7zK+ciWXiIQIAC8ULU10qz8XbUl0qQIm1r1WFzx2prQ2N9My0s8IpmbZhhgZrj6MhmexeJqZ3eNqJEa2y6XL25BYc8p0pfWvOEeHsmPnMr5yJZeIhAgALxQtTXSpLxAtTXSpAg7VPZIXPHcGtjUv12JyDkun5OhpmaLD8RLLhxDcyLr3zo87KZ61997Mkt+yQU4JKDTkinB0D9/xQTyZnpgUAlosXpopUlogXprpUgAZrn6oKnzuCW5uV6uE5pyTT83U0zNBg+YkEIyrZwqDopuezL5l9tt7SeGjZOUfEFZywP5wd0x5OZkQmB0YFADaJd6a6VJaIF6a6VIAGy5+q2p47slubEuz5Id8Wy/NpG2YoseNcDqdUNfyU6C7IZ1MyW+2+q9nQsnP2xxUfrzmcTXMW/lxDLLtHBQB2iBemulQWinem6lSAuLUPHYXPHdmtjcg2Mt6rYlkyasMMJTYdzZm4OmeOD3B4wtRPL4/lgDM3NhVafM7m0BoGa5jh5JCRWJYHEkwGAKgSL0wVqSwUL0x1qQBxI96pnohvrTnh4GCdgexL5vmoDTP02HdAm3Irn7NkjDPjBX99YSYnnby9hxOLj1obXc9IPZMcmC3106sCmTUhALBbvDPVpbJQvDDVpQLENT9SLRHf2o6En4ccH6ktkN3hPJ+zYYYeW89oSYy1gx0e+LNhtk4VnOFhGinjLnNkaw0zlI9UNczz25Wdpy2NWeMBAGfEO1NdKmvFO1NdKkBW4fPUWg272xHyx/OUTBIf4Hw+D4dsmKHK7pMaujrz7JknO8kHv95g4n0+v7WGGZ4PVjLGyYh6homP8d0oJs4GAJwU70wVqawV70x1qQBZ1794NOxuR8jfmi3404dH+uB0yoPaMdvDlHocOK9xa0SewQGysTw4nLBjd+NwXCXTZvPsP82GK1eYT88kzSMBACnxzlSXynLxzlSXCpB1/aNHye42vS/1rKpAmg/og9mWT/jxDG0OX/L+Jc8d+cQHaDDovFL76pmkcFWdVOdqy2T0MABAg3hnqktlh3htqk4FCLr+0aNkd1tfmeKrNpP4AKuyWjvtxzMUihxi55LnpojiAzQYdF6pffVMUrjaDqttlWfS+esAQLl4Z6pIZYd4Z6pLBQh6w7tHye7OPDqdXwI5k1h8gFrxAy1Z8tyUT8MMDaacV2pTVcNUrefJ3J3Pk4jikzeHAwBkxWtTXSo7xDtTXSpA0BvePXp2F3+Sqjru+OSzEosP0Cx+pvElz335lIwRN+jIIptqm6dkLYnl4nyeRxSfvzkcACAl3pnqUtkk3pnqUgGC3vD0UbW7+MOUNOIrntXDU+sUP9ZxN+o9YfakseR0Umad2vlNFY7UsFbFIp+XBLI8HwAgIt6Z6lLZJ16b6lIBUt7w9NG2u/jblCgm5hYfoF/8ZAddp1eF2RPFkqMJmnJkkR11TpVdCzORzxsC2ZQPAHBevDNVpLJPvDbVpQKkvOH1o3CD8ReqhhCuieJMdPEBRogf7oi79Kowq3J4PkzWoFM7v6PawVJrbSDyuT6QrfkAAIfFa1NdKvvEa1N1KkDKGx5AOjcYf6eKJ3BBDifTiw8wRfx8yy/Sq8JsC2HJPEGzDu7wjppnO7+Wp3FZPi7M4XAAgMPitakula3itakuFSDiDW8gtRuMv1aVnG98RyMCjA8wSPyIa2/Rq8IsTGDVSEGDDu7wdsrHO7l2RHFTPvsiiu+rORwA4Jh4Z6pIZbd4bapLBYh4wzNI8wbjb1YlhxvfV3+G8QFmiZ9y2/15W5id2184Vcqsszu5nf4Jz6xNOcjn1kCy9wcA2CFem+pS2S1em+pSASLe8BJSvsH4y1XJycZ39/uNx2OMDzBR/ObsuIrCPJxS7WAR447v2HZGDHnNwU3M51hE8W2W5wMA7BavTXWpHBBvTnWpAOe95DGkf4/xJ6yGY43v8fe7zoY56yh7xK/QTQcXTyASUfl45407wTN7GTTqBQc3Lp/zEcX3W54PALBPvDZVpHJAvDnVpQKc95L3kBF7jD9kNRxofLO/2Xg20qEHWiJ+l246sngah1Pqn/CwiYd4YC+zph19av8knkNbPvGNl+cDAOwQr011qZwRb051qQDnveRVZNA2449a8aOM7/qfNp4NdvqxNojfq2sOKx7LyZSmzHnM3KPcupeJMw/a9dfFM2mLKJ5AeT4AwFrx2lSXyhnx5lSdCnDeSx5Gxm3T61bh3rMJ33S4WcGrddkxxSM6k9Ksac+Ye5r7NjJ38hH7/a54Pm0RxdMozwcAWCVem+pSOSbenOpSAQ57z/PIxJ163araeDbnW484KPJ9XXk6dwc1cebdpp/pjo2cH37t/OU7/Yx8fhIJZFA+AMBz8dpUkcox8eZUlwpw2HveSUbv9OUPXD0bD6b9hoNOOfN9XX8otwY1evhN7jjZtRuJzL9jI50bfOhAPrMiOhPI0HAAgOfi/akulQPizakWFQB+4+WvW6/dOMd4W15CVhDhu/sjEf3E/3EAwD7xIlWXyj7x/lSFCgDf8uZ3rddunGM8LC8hKEjx6f2ev06/5D84AGAtRSpXUqECAAAAAACwii6Vm6hQAQAAAAAAWE6XygVUqAAAAAAAAOyjSGU0FSoAAAAAAAC76VKZSIUKAAAAAADAMbpUBlGhAgAAAAAAcJ4ulX76UwAAAAAAALIUqdRSoQIAAAAAANBAl0ob/SkAAAAAAABtdKk0UKECAAAAAABQS5dKkP4UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIOX/AI2jFTUKZW5kc3RyZWFtCmVuZG9iagoxMiAwIG9iagoyNTkyCmVuZG9iagoxMyAwIG9iago4NTgKZW5kb2JqCjE0IDAgb2JqCjQ4MzIzCmVuZG9iagoxNSAwIG9iago1MzAzNgplbmRvYmoKMTYgMCBvYmoKPDwgL0xlbmd0aCAxNyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczVJNSyRBDL33r8gf2DJJfQZkwPkSvYkNexBPiruHnRVP/n2Trsy07YCwt50hVOcleXlJ1dtAgPr/YUcVhqfD8OYYQWWIxaC7JVgSh0J5mYwgLbTmqGKBMxym4B9gLiElROQz19K+IAagn7/h5/BX6a6Hh0cFnyf4feY/p7pXuZ8F94zv1FEOKGXx2alO3r8oWlKcqUkUsm71v1rWl/ut/g4ior8OLIFEfxVa0gFrYMzGomkXNweG7atyIPwa1uNwsaeiY+p4rBUwvsxvjLR/zQ0xcgRuFJQRUbjBeICHSxWmLdEEKjsWNQ2j5qOoXamt/dx4nqweYbydO7AqrVxFSosQM4WWs7Sa86nDdgVEMUiNCczfqe07y6SceCG5plBNCanI2GwN0/7SkY/UI3KVdOT/RG2latGH0Goyy72EjLrO5dT6kCQev3J8vYLcWQ3deMZpDZ617RW083Pfccbeacr/bn0kJUQuFoygLyVkiSKJTuMy+cVs+gwTK/nFHS9HFTKfMedQLDmWAqkkvfooreG8SNXO0VarZtth9/17ipfOuhunR/sBwl3xggplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKPDwKICAvUmVzb3VyY2VzIDMgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDEgMCBSCiAgL0NvbnRlbnRzIDE2IDAgUgo+PgoKZW5kb2JqCjE3IDAgb2JqCjQyOQplbmRvYmoKMTkgMCBvYmoKPDwKICAvTmFtZSAvSW0zCiAgL1R5cGUgL1hPYmplY3QKICAvTGVuZ3RoIDIxIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCiAgL1N1YnR5cGUgL0ltYWdlCiAgL1dpZHRoIDQ1MAogIC9IZWlnaHQgNDUwCiAgL0JpdHNQZXJDb21wb25lbnQgOAogIC9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Cj4+CnN0cmVhbQp4nO2d6arjMAyFh0IolFIopVBKoRRC3v8Rp8tdusSSLB85yz3f/7npWJEsHcnOv3+EEEIIIYQQQgghhHzSbI7ttt7jzu1x29R73OxZHy7dlWO1By5uj+suh/Wi2iPnS7M9dl+01R66+X5kR1csY7k9d08saz338PzUM43oZLm/dK9U2wjfH3zZV3t5ZsOn+a6caj3889HdhZ6YQbPtMd+NSs/f9j+d4dRM/wJeWdd5/in1/HrZ8MQ5p1ZwX+Xxi+QbtKvy/BmQ9IFLlcevkxZcVXn+DNgll7DKRnRIPr7G02fBJrmEVeqJNvX0c42nz4JV0oI1Uom+WuJBnW14DqRTiRpxbJ98+KbC02dCMo7VqCeSmXCdXXgeJJPR7hD+7Cb57HrK+vRJB7L4eiIhyHSs53NIr2J8f+KYfHTFDvPkSSej4bKIkEWxP2FHWMbomixdi7KezyGdjEYnhOkgWqu3NQ/SyWjwbiR4P2XtHNLKaHAYFYIoZe0chIXsQufH0kGU22AWaW0yVtsSgii3wTwEC0YW1oLvcxvMQ0hlIsOoEES5DeaR7rJGhlEhiHIbzETQ1QLDqBBEuQ1mIqUycWFUCKLcBnORLBgVRqUgym0wFymViSrqpSo06JEzJt0i7MK00XR3nttgPpI/BGmj6e48t0EH0nIGhVEp/+U2mI/QYApqtiaO29zgiIwDIbOPmdyUChiOyDiQYlrIwJMkA3FExoEwK9OFzI1KYZsjMh5EC+LnRqXkt86Zqdkh1fQBypq078bPGc8SYdKiwytrYvXCAxMu5I0QXRKK7wsvBvIhWhCtrAnFIM8NepE3QmxJmD553VFScyNvhFiZRNQPWEs4kTdCaHoh5jGU1NzIFkQ2fER3Zy3hRgxt0FxGymNYS/gRpVFkLiPmMawl/IjjTsj9Scx6WUsUIAY3XHgT8xjWEiVIDR+gd4gzOawlShCHZTrU7MNCHAdgX6IEaYDzBibPl98T1hJFCPN/dyAFhbzbVrrTdK4o9QQky5BLCY76lqHUE5CCQhbQOeNUiFJPAAoKuZSgIFOKnOgjMkWlYqEgU4iySZUXFIoLUpApRqzVuvIOhdyE5KBoOUqQK5VM5GqeV4oC0GSZwopbcUEG0XI0WabQTZRcl6o2AKXNW+aEmodT1QaghtESJ1RckKo2Aj2M+kOd9nbw8wQQ1DDauqtuTfFhEIWgh1GvE2p/mUEUgx5GvU6ouSCDKAg1jDqdUJkoZhCFoYdRnxPKbSUGUSCaNupzQvXFoCYKQ9VGXU6o7YLURHGoLSaPE6ouSE0UiOouDidU/yaDKBCtU9/lq6N6esTuPBClkX4nc9dSXZAjTlC0udFsJ9TGGDniBEaPeXn1t9aa58FdNLqyljcxo7TmOw7bw9FLwpyxtUbXCKiogVE1zC6ngNPfBypqcPSS0J58GFJbFoNw9OTx6jjGEk6TtDsqagFYchmjtmaIyCwGA7DkMq3JdQwBmYcGA7DkMibfMcRj5jEhWHIZQ0WhF/McrwjCossYKgpLNGYeE4LFefQyQDsVfIOf6AnC4j1qo9BQSTCPicLSY9IETUsoZh4ThsV/5GTGFIl5YCkMU0EhJjOGZj/zmEhMBYXgQ5Y0hn2lSEwFhaDMGFr9/FBdLKaCIqnMWNRxDhnGovfW7/SXA4a+bsf5mGBsVX2iKNRP0HScjwnHVNX3C5uGye+OpUQ4tqq+Lx0xui9LiWiMTvjZrjeVgiwl4rE64Xs0tKkBHFGrgE1ae7fFwiYGsCtRAaMzvdV1thjKar4KVid8jqNGs7MrUQWrEz7FUWMMZTVfCasT/sZRYwylC1bC7IT7zH/AQe1aWJ3wKzGxxlD/7V4kE7MTPup6YwyloFYRsxPe4qjV3nTBipidsFtb9VC6YF3MTtguTD2lji5YGdPAyx3TYMUNumBdjC0KO3TBylhbFGbogrUBOyFdsDq2sSUzdMH6GMfWbNAFB8Bc51mgCw6BaX7XBl1wGIyCtQG64DDYBkANsC84FGZtTYGt+aGwa2siPOsyHJiyngNqwwGpKDgjOiSIsp5j2oNSXlHwpMSw2Lv1CVjMD421BZ+CxfzQFPYoWMwPT1kywwu4RkBJMsNKYgyUJDNzPHO9OG6nplH4k5mJpTGL1XanR437tUmn/XpCSbZbmbHejT88y/Xu8KXjqzL8z3zl5bCZilrh7fVOIY1ZrH5s90Bzwtcpvva4nYQVfW2msacxzXp36gkvyt79ec6nPe1GvzH62kwjTmOuntdnvDvK5p1IzU+7cfuipygcaxqz3B7EAkkWIYSXedwRNb8oHKUaI7jeL6IZlMOS7WEz0tCTXxSObmu4Ws/2y8WvYRhe5cs4Kw3rQd1vxtVUWm4zkjEpelgzgtP4AmruwEU7mv9BszlkFrTCT894kS+HUblifkk4jnJ+uTcfcPxFyMEy84HTdiy7ou0C7lfOQ5twsc51vu9fnvyTjkN5l/0YMoKlayUG/chgsynoTScdx6dOXRPUgd9mnwEHzGaarSN2PpHURv0z0Mch46n1xp9PBinqS83XpaOH6UOpSc5DGXFRsCDV5+0B5uvS17l70oEXhjFi0emJqiZcbFAnPRLJB2KGvb4Ry351xbJwXTpW90RClgGdx6trxNLXrpIJl3vouf/+egJ0EujGsVp2Wn6Qt4IJF5DN74Xe9QWear5yqNIAL966u3hxZgW/vahLjBcAw/Sdyz48miIMGCvOLLa4s+LP9G6E2Ata7pxjo2nxoYnvnxn1K5cR7vf4yX2P82isOoc41c0rxXwSY8JNyILeuBwSVVCzOQY44mUb84rjDBgx9NTsApbyRqvpX6sIV4xwRKQB4RJpVPg826bOmi06qbk6InpHxBoQa8I1Snp5oc2q0dytK+EHHJCpqV/NTgEz4SYi+3R18dby0JuDE6xGLFGzU0BMuNgF2O/sH2pZ7sG/BxRMIwyIMOEiIH0pbtyhjdjuyoNpjAGLTRhgP5A8iTZi6YYYZcAyEzbwzAGqLoMTm1NJdRFnwAITNujy4Yyvoksmcz45uVurkQb0mhAdPy9BDTpsk+Tis2GsAV0mBNuv3Uf2uxrkluixYbQB800Itt8xviuHHBbItmG8AXNNuEHaL0pCfqcB9rzybFjDgNc92r6MSP2lPdQ8ygHsO2fYEK2FprA2m1ZA/TO4ldpDg5OPrDasZUCjCRug/aq63y84Cf5iqQ/rGdBiwkXugcU0tXa/PnA6hF7jOw3obJSfFafYwl4nnNzvAzfJc5SL2LVvybbe7EccQlzBdhBoy80LbJR8LwQT51TarTJw3l+ZNiFsA2x3Qx9h/AaVmbbJs0ROAz7O+Djjb9ufYC1Qn+xyilJBoDbES/+m4Fy073zE+3GYviVegwLo0NvfJyhx6dQTvJwu/juM7Z0M3r7/ElQALWrOhIEaMPjYDp0GfN7IvJHvTWEDBdDAGdpSMCLT6wbkVdJeMxHvTn14ep1AGego0s80GBs+VWNuKfRtn/Ga8Ke2X2DStZHb7wbGht+h1C3EfGQh3h3s621y1qNvTMB+NyA2fITSFcyAfme+heMG0lI7TcN+NyBNs+v/1326rO9wlt+EG4iGNs78MwWktmjdO09/k7ZOdzHBeVL2uxEx/Gol1WXHj+pbGZf+YgU+gGclPSZRs0H1RFotHDvIHqgdac5lEBNKiv3oWdXfeuT77uqbcEIJaD/QWS4DWne9sglN0wcjB9aNMaGPR9Q0YfshjU8TTDlswjKiVM+EhylvgK/gphJkbGOClUw4vQpQpEp1aJ3zXFZ4oeYSQH+pEErtQStenTnOJ4D+gppPSJFz3iHYhHPIQPuIzUrzDqyEmnA0I2h4lnHrln1oLOynaMPCEwc36/xK/sFNUM/9nfllMO/EaKUu6T/ChJPX0Cxg5hVecPZu4CacvwM+WIALi8RwtQHMDbM//AkHfAB1w5KLspEm/CsO+ADohmU3neMUtj/kgA9Qblh6PS/IhH/LAR9g3DDj1oLU70AUhjOvAVMAakPEjZKAV2myczClFNeGoJUrrCrmqoJaKPzcQAtautK68A/ugQ8A10EgxjABUfTP5aEPIDK3+G12E5BMxi8qTBjUacrCn4Hq18+ypSuB6zOVFYS4ir4d3cH4UJC93nPBJgSV9/6QG4IbvX5dDaxs/xk3hA9beE0INmD3R9wwZNJiNB3eP6CPBk07OUwYdDhu5rVh3PB2tgnDTjdO97SgDvBOzk8yC8PI46kzm7f/JWBA5pkRTfxO+9BnivgDvXYTxk/dz1Bmq3GK0GrCKpda9F3xN2EqHT+zmbDWrSQzCqX1joBaTFjvWpm5hNKqx7B1E1a9F2gWWWnIZ2nTaIcIa1/spFwAP36Qn0WxIXvhADdzTfos2iDXOokmHOJqteluh0NdrSaYcKCLwhIXwI+dqKOCOkkTDnXT29SuprxTOYF5JWFCtwER/5eJ2RBy60G7wV4w6v1r130Msh9M5IrmG5gE9CZpuJsZPVOIW+efuk8AYFTdidgQY7+vUXb3IMRH/uf9S9+HWjCXqUzAhqAC8KeIcrek3kzoNuBPNQfSlkZuQ5D9nnV9zPcKls4/8jK6tMT870ZsQ9B37N6mhRrAR1+8r8F7RgS6l+o4zrwUVT98KJvl3+1ZOA34mQ+hZPrx1Rawb4H2qfne00Xt17vgfQV61TBUq2xc1983KP0sNW7pLOW+0hBncE8tMUqtH/ILyq8sYWJVujXkfMTJ/2+lEXrUhtHux5DUwD7DK+8N/g/x+nYueZIfJ9oPndSgvhrZ6fuC04Q7379Tj2LgZl8vm+GCKS58Wj4L7TShy1ksZ2lwzc+BguliA+yWmi5YrndJvfF6GGAD+1Q9M12CPn79+PnGV7CWCe3HgoFDJFUdEep+OcVtHRNmnetGDgLVcsQVtNOdV9jWMGHuwXykDdt9+KR3s4f23rOFiXgTOm5WgA7knSPr/MUWfADecdIuelzQdzUGMCu/coyJposN+mpe3yBlrAndd5tgByvbA3y6bY0e83La71+sCUsup4GJww8uyC1xjSwd7vjt9y/0UxFlWxCsQfMFxogLvPnK7PcvzoSl9wVfgdZZXbkR4Xvf/UeVJ1sxJgQY8MoKvWR+IzbbiFMrmMZmhAkxBvx3q7jgm44jsVlh675vYKoD3oQwA/5Di1YPjhktjGZzjKmbkb0wtAkv4Doaq1w9OO8s8XS1D0oTWvCQHVadKftqRS/A3ukvl8NaetWW27AD7xf8OUikCQMMeGMdsp7nXSKWBYXOGzGiO/B21zA9GV0ifv/gY9/DogyIDp+/oEwYZ8AbK3xBffXDvifFRNBz5BQIyITRbbkFbhrsm94b4r2nswTaQ3C7C3LHa42+agNOa3rrQ+/hkCSh7vcFwIS1JlSWyEK/f2XB0nqdsY9iE5Z/scIOTGM+9f99YA2Kb28lKTyKgvj2Vg4YIyZa46iLw3P0HwBFL15vVh4MwIiJ9GJR+ndvnLfVp1cLTIgUQ3MoNGKb+rvFetoA5vtXIpEOZcAb64M/O02G/rJ6Yhjz3Sg/IjoMS68GnUyfC+qJ42bIc1S+M7pDG/BG45Ki06HD59ftYcDTNw9c4sxILjvLn2NJ1BI3HCeqzvFTxhYcXxMd0yno5S4nngrflckMo+2wsfOF7FKodiGosdiYXVFa9IwwejI1jOuRu5+MJIa+sDSNJvX2Jb4xhtFTqsc4HNlhtB16706wVhNU8eNchjA6QuvdyM/Lh5BjbFwDqhQM5Z1LDKOX43ZckfMXjzo6xjj6Q5O0ohhEhTB62q1Hk7V80niqCfR4Gpx+KypfOOwJo+1pvxmr633j64HXbCx5+bSi9t697Cfn46g974e1y4BdN8od/ZPFc3ajbt/bH9ttJvL/u/4PvRqxsqWMitXuMUyo7t7Nab9bjT1ovuFv8k7sc53LzX68GXQBjduAXTuFPWL+lIzyzfKVnhoOUfuJyWz2M6ZsEHP0ReH8KR1UnlgyMz+8V2j/wGRmYMqv+WQyMygFlcQPTGaGBHEo6DL0f+IvU1ZJfKOo/SQQ0EdmWFEMBeqkxxTaTPMEdqqSFcUwoFyQFcVAFBfzT7CiGALQZ8juCIPsJAqkC45rBv+vgHRBlvUDgHVBOmF9sC7Isr46aBdko7A2Zhc0W5pOWBWzCx7t4jedsCZWF7w6lrkHTCesiNkFVzk3XdAJ62F1wXvTwXy2nE5YDasLfo0SmrMedplqYZ0w/NarzXGUXaZKGPuCPy5lvm6GO2EdjH3Bp3Fsq9NyJ6yD0QWfe37WgRo6YQ2MJ3Zf0hLrQXs6YQ1s/vR2pMUaR+mE8Rhlsve5CWMcpRPGY7vS96O0s9b1dMJobCcleo4FGut6NuujsQnVfTc+GOt6NutjsQlqvfOfxg2UThiLqZpPnOo09plGfd/a9DFV84nDSMabgzg7GokpEiavajJqARO7EGlamG7yTVvAdhHw2C5wnhOmUkLo8hnFNTaZwrDkIqKqYisKWdWHYXEhuZ4zJTPJ7xqRQiylhJJJ2opCVvVBWFQVLZE0yapTunh0SljEaXVYyZbMsKAIweA+huaQKZlhQRGBRRK1XA1jSmbYJgzAkMeY9i9TMsNbggIwdNltFxpY2vXsUOAx6DFGTdqk7PB2CzgGPcaqhlmkHeYycPQ8xrzopjYxcxkwemcoY8zMUlEwlwGjN4Zy9GhDRUFdBssC6YI2hZW6DBR95jpPjTZIrMxloKgrnlnAGcp69piQ6CVcbkPIUNZzaA2IWsFl5x0GJ+Sto0DU3DFfQjE4IUtCGGpn0DHjaeg2slUPQw2iHhVTbzeyJIShqWCuMWuDwM2xQxCqouZrJOhOSGUNhLbUzpMOuhMyjILQgqi3l6c7IcMoBC2Iug8b6U7IMApBcxV/O11teDCMQlCCaMF5P12YYRgFoAXRkrpbFWYYRgEoQbRoqkx1QoZRAEoQLZO+VCdkGC1G0S8LBztVsYBhtBhFEy1dYa3rwXsRipGXuPgeNHVihi2mQpQgWn5gWhN82GIqRBlxKk80tNlRDjwVIo84AZZXm2PkwFMZinSJmOmME+3IPy3RgCSKmr7Nr1AUIWvPmHlApaqnLFOEuLagY5paVU9ZpgB5cVF6iVLVs54oQMwyYLeaKxULJ38LEL0DVqkpBQXrCT+yIIPbn5SCgufQ3IjhDag5h0t3fxYxz0cmGLLyw/6EF3F/gu5OSocC+ag/hVhLQKUS5XYLCmtOxAQDW2fLuQyFNSdSLQHem+RchsKaD3FV0UKJnMuAH/ZXkGoJeJUt6zLcCF1IfQn4ziTrMqwIXUhLiu8XiLkMK0IP0jx1QGoht0Hwz/sDSIOiEQ0fUUXnRuhAyg4jhjjF0WKObucjpRYhE4Bi8cIeYT7SvhRzX5bk9Lx3Ox8hqAUtp1gSclgmGyGxCJIpxbFDXpOXi7ScUT1zqR1JcTsXoWMXtidJXULW9LkIEklYZi8qa1EPnS3CNhiXVEhKLMed8hC2wcBmnRRGOfebh7CWgfKIFEaZyuQhbIORlZkQRpnK5JHeBkNXUgqjkc+dH8I2GLofSWGUqkwOgi/E3i0hhFGqMjmkt8HgJoHw6nDSIod0myA4qRfCKBtMGQjrGL0bpd8dNpgySPcGw2dvhRZT9KPnRLo3GD7tIGTBnJWxk27zxKf06UqUupqd5CJWOMCQ9n8mo2bSk6IVFjE98ERdzUz6sroaLZ7kUUKeYDKTFEaqJPRpNaHG0+dB0guqdHjSsgybvEbSCX0VaTItJ7CcMJJ0gkpX8yRlGSajRpL5fCVlMplIsU1vJFnPVyqpk/UEywkjy31CF6nVY+3PpC579njtrA49q1itHuupJ9oD05hc1h9GrLYNvadS7YH9eR+r13BazQteypnLnuYrYbn7ye0rXvP588zzllV8Oc3meI+nFacc7vXM5bDhF3tgLHenmu25dXuk8xFCCCGEEEIIIYQQif/EcnVmCmVuZHN0cmVhbQplbmRvYmoKMjAgMCBvYmoKPDwKICAvTmFtZSAvSW00CiAgL1R5cGUgL1hPYmplY3QKICAvTGVuZ3RoIDIyIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCiAgL1N1YnR5cGUgL0ltYWdlCiAgL1dpZHRoIDQ1MAogIC9IZWlnaHQgNDUwCiAgL0JpdHNQZXJDb21wb25lbnQgOAogIC9Db2xvclNwYWNlIFsvSUNDQmFzZWQgNSAwIFJdCiAgL1NNYXNrIDE5IDAgUgo+PgpzdHJlYW0KeJzt3WtvXdWdx/EXMlJGoIDJxfHxCSEyacjVcYhzwbEDzuRSTKEQRoQSmAqGMuqQioFRWqoRaqUOlVpBpZGQ8gCpqHk0gsfzns6csNDu0bnss/del9+6fD/6P8de2/qy9jWDAQAAAAAAAAAAAAAAAAAAAAAAAAAA3f38f/9vdNQ/Tto++/ELo6P+cQB4NBZPKmpvLKEUFcjPrHJSUSfqK0pOgXQ1iSchtdewouQUSEXbeFJRS20rSk6BOHWOJxW10Tmh5BSIhH08qagNJxUlp4CQw4oS0g6oKJA6KirkNqFUFJCgokJUFMiA24oS0lZIKJABKipERYEMUFEVTueBPFBRFSoKZIOQSlBRIBtUNDwSCuSEioZHRYGcOK8oIZ2LigI5oaKBOU8oFQW0qGhgJBTIDyENiYoC+aGiwXA6D2SJigZDRYEs+agoIZ2KhAJZoqJhsBEFMkZFA6CiQMbYjgZARYGMUVHfSCiQNyrqGxUF8uapooS0QkWB7FFRf3wklIoCsaGi/pBQoASc1PtDRYESUFFPOJ0HCkFFPaGiQDkIqQ8kFCgHFXWOjShQFCrqHBUFiuKvosWGlIoCpaGiDpFQoEBsRx2iokCBqKgrnhJKRYHIUVFXqChQLELqBAkFikVF7bERBUpGRe1RUaBkXitaQkhJKAAqaoOKAmA7aoOKAqCinflLKBUFEkJFOyOhAAxC2gEbUQAVKtoBFQVQ8V3R/EJKQgGMoqJtUVEAYwhpK1QUwBgq2hwJBTCJijZHRQFMRUib8JpQKgokjYo2QUUBzBKgoqmHlIQCqEdF61FRAPXYjtbwnVAqCmSAitYgoQDmClPRRENKRQE0QUWn4nQeQENsR6cioQAaoqKT2IgCaIWQjqGiAFqhoqNIKIC2glU0iZBSUQAdUFEjQEKpKJAltqMGCQXQGRVlIwrABttRKgrARuEVJaEA7JUcUioKwF6xFQ2TUCoKZC9kRaMKKQkF4EqBFWUjCsCh0rajJBSAW1SUigKwVE5IgyWUigJFoaIkFIClEkLKRhSAP4ErKgkpFQXgT/YVJaEAfMs7pFQUgG8ZV5SEAggjy5CGTCgVBQpHRakoABvhK+o7pCQUQGCZhZSKAggsp4qSUAASeYQ0cEKpKIAKFaWiACylHlISCkBLUlGHIaWiAOTSrSgJBRCDRLej4RNKRQFMpaqoZUhJKIB4JFdRNqIAopLWdlSSUCoKoF5CISWhACKUSkXZiAKIVvwhJaEAYkZFqSgASzGHlIQCiJ+wovUhVSWUigJoi4qSUAA2ItyOshEFkJaoQipMKBUF0I22omMhJaEAUhRJRdmIAkhUDNtREgogafKQUlEASdMm9PWP/5OEAkidKqG37//tmfMX3riyQUUBJE1V0bUXd54+s3b87LN3r22RUABJC5/QK7/45TChZtbX139z83kqCiBdgRP6yh+/rBJq5qWNSyQUQNKCJfTON9+d2Nwaq+hw3t3epKIA0hWsouuv3ppMqLlA+sn1KyQUQLoCJPTqrz6ZmtDqAikVBZA0rwm99Zf7z5y/UFPR4by66fcCqXqBAWTOX0LvfPPd6avX6hNq5oOrvi6QqlcXQBE8VfTi7Z81SajXC6TqpQVQBB8JvXHvvxom1N8FUvW6AihI+Muhk+P8CVL1ogIoiNvLoVOfDm0yDp8gVa8ogOK4quisp0MbXiB19Yq9ejkBlMg+ofVPhza8QGr/ir16IQEUyjKhky/Ld5vrz12kogAS1Tmh5tuhTio6HJtvkKqXEEDROle04QP2zafbo/jq9QOALiFt/oB9qztNHR7FVy8eADzUKqFtH7BvPm3vNKmXDQB+EP6O0qxpdadJvWwo1N4rr1Sj/lkQkfB3lGZNw48+qRcMsXjQOzM6Af6LoxUdmwD/dURrbkKbf7LJfpq806ReMGiMNXPq+P4ZaipKUQsX/o7SrJn7TpN6qRBIk2YGrmjDhFLUYs1K6Og/6BlmVs89O+tOk3qR4FG3bIYMabeKUtRyBL4pXz+zbtmrFwkuucpmQhWlqNkbS2i3r965mslb9urlgQOeyhmgom4TSlEzFvimfP2M3rJXLwy6C1DOACH1WlGKmpPwN+Xr587zl6loisKXM5uKUtQM/Nzuw6HO599fvqleEjSiLafXikoSSk7TNdz4rZ57Vh5PM8+cv3Dnm2+HYVevCqaTBzNMSOUVpagJMafPH1zdlPfTzM5n/11dqlWvDf5OHsmSK0pOYzZ6Q/yljUvyhK6/emvssQH1ChVNHkZVReW1JKepGHus6Dc3n9ee139/Lv8dFZWT91AeUnkkKWoSpr4opD2vv/qrT6a+CKBeqlLIG0hFyWlCal5af3VTc16/9uJOzXv96gXLmTx9sVVUHkNyGr+5H1BaX18Pfy5/+/7f6j+Qol623MiLR0XJabrmVvTuta1IzuUJqXPy0MUfUnn6yGnkGn5Y/o0rG8ESOnlfnpD6IO8bFY1h7NencA0Tambjwvkw5/KT9+UJqUPyrKVVUXnlyGnMWiXUPPh0/Kz3B59Gn7EnpA7Ja5ZoSOVxo6XRaptQM+9u+33w6eLtn3VIKCGtJ4+YfGxWT541chqnbgn1/ULTic2ttufyhLSGvF3xjM0yymsmH1d/kDmxSajXB59u/eW+TUIJaUVerdjGZjHlEYtkXP1xZsA+oebBJ+cXSK/84pf2CSWk8l7FOfYLK49YPGO/mElzklAzd56/7DCh9a8pUdG55JmKczyttrxjMYyntY2cw4Sauf7cRScJ7fBoEyGtyEsV24RcfHnKYpiQC67lPKGfff/gk5MLpK/88Uu3CS0kpPJeRTXaYyFPmXy06x+Aj4S6ukB6+V/e9ZHQvEMqT1Ykoz4O08mDRkud85dQ+wukbi+HZh9SebUiGfVxaEreNHLqhO+Emun2BKmPy6G5hlQerhhGfRC6kzeNlnYWJqFmOlwg9XQ5NLOQytslH/URcEmeNVraSsiEftb+FfuGH74rOaTyfBFPf+Rlo6VzBU6omebfIG314bsCQyovGPEMRh43WjqVJKFmmtxpOn31WpjLoSmGVB4x4ikhjxstHSVMqJn6R/GfOX/Bycvy+YVU3jHiGQN532ipPKFmau40dft2aN4hlaeMeEZInrgyWyqPZzWz/hV7h98bySak8qDRz5jJE1dUS+XlHJvJd5psPr+cZUvlQSOeCZFXLvuWyps5dUa/iq+9oxRbSOVNo5+Jklcu15bKa1kz5p8NDfaOUvwhlTeNeOZBHrqcWirv5Nx58YUt+U35GEIqzxr9zI88dBm0VF7IhiMvpDyk8rIRz4zJQ5duS+VtbDjDH1WeR2FI5XGjn+WQty6tlsrb2DyhhjyP4UMqjxv9LJO8dUmEVN7Gtgk15HkMFlJ53Ign5LmLuaXyNnau6KCMkMoTRz9RkecuwpbKw2iTUEOeR38hlSeOfmIqee7iaak8jPYJNeR59BFSeeXoJ+aSF08YUnkVHSbUkOfRYUvllaOfaEUevfAtlVfReUINeRvtQyqvHP1EZ/LoBWupvIqeEmrI22gTUnno6CfsyaPnO6TyKnpN6CC1ilYhlYeOfsItefc8tVReRd8JNeRhbDvy1tFP+CCPnvN5euWoPIwBEmrIw9hw7nz1zbX17Y/7p+XRo5/wRJ4+V/PEU0f/cfdC/0Dv/c2L8kL6TqghL+Tcee29u5sHTz+3/+hw3lk+Ja8f/YQ/8gbazL7LO7sX+8OEVnPx6NF717bkqfSaUEPeyfotqOlnNa/1Tny9rC8h/YQ/8h52Sej69lhCzezft/j2pXV5ML0m1JAHc3LeuPf7ags6Ni8tHf+ir08iCYVX8jC2SOjZrUcW9k0mNNpNqadDJs9mNe/89dubWy9O7Wc1Vxaf+by/Kg8j/YRv8kLOT+jJ8zX9jHNT6u94yfs5nDd/96dZW9DJ+fRg7CH1d7BQDnkna8bcS2o+MWxKfR8vbUJ/8tO3GvazmmjvN/k+UiiNPJjjW9DLO4/1DrVKaLUpFd6+D3OwJP18689fbZ/aaJvQ6jJpbPebwhwpFEgezx8Sur796N4DHRJazZXjx3JNqBE4oa9/+OvmZ/GzLpNGcr8p5GFCscQJPXm+/l5Sw+kf6N19YSPLhBph+tnkRlLz0V4mDX+MUDJVQp9YOWHfz2oeW9j78tpqlgk1ApzFP3/knKuEai+Tqo4RChd0C9r1QujcWVt52t8tJ/Uh8hjS196767afqsuk6kOE0gVKqPWFUMktJ/XB+UHkZ/GzLpOGeZpUfXCAH/hNqKMLoXPn+ulT+SXUiPwsftZ4/XqJ+pgAU/hIaNsnQi3n+KHDTs7u1YdiCicJtb8X33ZuL590fnavPhRAHYf93H/pxtRX432P/feg1Aehjk1Cd27cCtnPaq4dcPnSvfoIAI04OItf3QhzFj91bO7dq9d+vm4XQjs/UR/P2b164YF2rM7inT7O1HnWVp7OL6FG2wuhgc/ifZzdq5cc6CiVs/hZMzy7b36ZVL3Y7TS/ECqP5+h0OLtXrzRgK5Wz+FkzPLtvcplUvcxdRHshdO40P7tXrzHgzJx+Xt6J5Cx+1tRfJlWvbnc1F0Inv1Ef1cz9YL56aQH3ZiZ0xmfqY5tZl0nV62pL+0SozdQ8ma9eVMCj8YQeOxvhWfysWek/OXqZVL2WzowmtNU3lmOY9/un6CdKU53FLxxckYex7VRPk6pX0b0I7yU1nJeWjv/PMglFWYYVeuHUKXkSu83B1YvD/wuol9C9YYU+PbgqT2KH2blx652/fjv8v4B6CYEQRq8oDjd1+/ctyqvYfB5Z2Ldvfbu6HKFeS2dGz4g/769eWXxGHsaGs3nw9Bv3fj92XVe9nIBHk7dm7l3bWlt5Wp7HJrN7sb//0o2x67rqFXVg8tbMF/0zw3NkeSHnzvapjTtffTP1GQP1ogJe1Dwp9M/rZx9b2CvvZM0sHFzZd3ln6jMG6nW1Musxoa+Xz7zWOyHvZM288ua/zn3eVb26gDNNXvy5+8JG/0BPXsups+dHp+e+MqBe4y7mPrL+fv+UvJaTMzyLf/N3f2r47pV6jQEHWr2HfuX4MXkzR+fhhdCT5xu+e6Ve6XYavvvz6cG4LpNeW982N5JajXqxgY66fRPp7UvrkZzdP7r3wOi9pJxC2uo99C/6Z64diOIyaZOzeEKKbHRLaHXLaaX/pDahj/UOzboQmnpIO3wQ6evlM7eXTwr72eosnpYidTb9jOTsvsmF0ERD2iGh1XzY17zT1O0snpAiUa4Sqjq7f3ghdHXDJqExh9QmoaqnSX/y07dc9ZOWInJu+zl6dh/s3v3UJ0KzCal9QgM/BDX1iXpCiix56ufoXDzq/d+we+Kpo676GWFIXSU02Nn99qmNt/78lb+E0lLEI0BCzby8turp7L7V40zJhdR5PwOc3VfvxQcb9VFCoYL1sxof790Pz+LbPs6UUEj9JbQ6u3d+7/619+6G7CchhUr4hJq5d23r+KHDzs7iV0547ac2pL4TWs3H/dNONqWuHmeipYicqp+jY/8QlKt78dGGNFhCzdh/wCTYhVBaCiF5PEfH5jLpY71DDu/FRxjSwAmtpvN79ze3Xgx8IZSQIjB5M6dOt8uklk/Uxx9SVULNfN5fbfu6qKcnQmkp4iGvZc20elc0wI0keUu1CTXz9XKLTenrH/5ankpaCn/kkWw4Tb7z/MTKiW7vxSdUUXk/W21KNw+ejudCKC2Fc/Iwtp2X11Zn9fPhp5nObsnLGSCk8nI235TWfKY+5vFx1JAfeQ87z9SX7mu+US8ftwdO3szmm9II7yXRUrgiL6HljN5vCv8skzCk8lQ235Tu3LglzyAthQ/yALoa8/WSmLegzkMqj2TD+aJ/5s6//Ye8frQUzsm753w+uvlP8jYGC6m8ja1m+APLu0dL4ZA8d57G/HbyNgYIqbyKbRNqyKNHS2FPHjqv/azI2+g1pPIqdktoRR49Wopu5KELllBD3kZPIZVX0TKhhrx4tBStyCsXuJ8VeRudh1ReRScJrciLR0sxl7xyqn5W5G10GFJ5FR32c5S8eLQUU8krF0NCDXkbnYRUHkZPCTXkuaOlqMj7FlU/K/I2WoZUHkavCa3Ic0dLCyfvW5z9HCXPY+eQytsYIKEVee7IaYHkfUsioYY8jx0qKm9jyIRW5K2jpYWQxy2hflbkhWwVUnkbJQk15KGjpRmTly3RflbkhWw48jYKE1qRh46cZkZetgwSasgLOXd657bf6/1IXkhtQivyytHS1MmbllM/K/JO1szShet7di0s/MPuP/RPyjspT2hFXjlamiJ507LsZ0Vey6mzuLGz//GlYUKHs7Rr4cvl0/JaxpDQirxy5DQJ8qBl38+KvJmT0+sdMQk1c2z34v3lVXkzI0loRZ44WhotedDK6WdFns3RWT58ajShZp7b05dnM6qEVuSJI6fxkNeszH5W5PH8IaEnL00m1MzO4mF5PGNLaEXeN3IqJE8Z/azIE9o7t23uKM2aD3pHSWgNedxoaUjyjpHQqYQJHb2jNGuWdi1ob9mrj08j8riRU9/kEaOf9VQVXVo8XJ9QM089sld1p0l9ZNqRl42cOicvGP1sLnxCp95RmjVrCz0S2pA8a+TUkrxdMYz6IHQUMqG9M5vNEyq506Q+Gg7Is0ZOW5GHK5JRHwdbYRK6uLFTf0dp1ny0fIyEtiVvGjmtJ69WJKM+Di6FqOiegx0SGuxOk/oIeCEPGjkdI69WPKM+FF54TWiry6GT4/udJvXa+yWvWQwjXH95r2Ib4bEIIJ7LoZOzve8QCbUkT1kME2y15bGKcIItvlY8l0Mnx8ej+Or1FpB3LJ5xvrbyTEU7zpc6cpFcDg1wgVS90mLyiMUz9ospz1ScY7+w6YrkcqjXC6TqNY6FvGDxjM0yynsV27j6+0yag8uh57bdJtThBVL16sZIHjH52KyevFrxjKs/yDxYXg7d++g+HxVdsH6CVL2uUZOnjIomOq7+AvPT/Vz+yWOeErpg91V89YomQ940KprKuPqTy1iXhM7+dqjDC6QkNAx53JKo6KC8kDr56ypH23N5V4821c/rB1ZIaEjyysWc0EExFbVfqGI1r2jDD985md8unyCh4cmLR0XpZ6IiOZcfnYbfIFWvXLbk6aOixDM5kZzLj06TB5/Uy5Y/eQPlCTXkxSOe8YvnXH506h98Uq9ZWeQ9pKLEM36RnMuPztKuhVnn9erVKpc8jFSUeMYsknP50Zn6r9ir1wkPyQsZsqKD1ELq8BdHW5Gcy9ec16tXCOPkqQyQ0EEKFXX7+8JGDOfys87r1WuDOeTlLLCibn9NuOL7ffm2Y87r1auCFuQJdV7RQUwhdf6rwYeN5SPyeP59O7p4eBh29ZKgozwSOlBX1MdvBH/M6fP2vkPyfg5n/+NLDzfG319kUC8MbFFRylmI6lbOsd2L2oTu2bVQJZSK5iTFig6ChNTTT46QRm+I319eFYZ0mNDeue2xxwbUywP3UknowFtF/f3ACG/y4cw/9E8uiR4ZXT62PvVFAPUiwaNCKurvJ4Tc1BeFfrt8QpDQw6dmvU6lXiQEEmFFB11D6vVHQjxqXlr/oHc0ZEJ7vSP1r/arlwqhRZLQQbOK+v4ZEKe5H1AKdst+9KY8FcVUUVXU938RqWjySeS1hZ7vhO7ZtbB04XqTT56qFwyxCJlQYJaGH5a/v7z61CN7/Z7LT9yUJ6QA4tewor5v2c+6KU9FAcSseUK93mmae0eJkAKIU9uKDmfH9Rfz9j++1CGhhBSAXIeEOr/T1PyOEhUFEJXOCXV7p6l3ZrNzQgkpACGbirq607R8ZM0yoVQUgIRlQp3caTIfDnUy6uUEUBwnFX1g8U7T3kf3zX1HiYoCiJOrhJrp8PW8qV+9I6QAUuG2ol8un257gbTtA/aEFEA83CbUzEfLx1rclO/0gD0VBRAJHxV90PhR/CafbCKkAKLlKaENL5D6uBxKRQEE4zWhTS6QOnk6lJACUPFd0foLpA6fDqWiAMILkNAHsy+Qun06lJACCC9YRR9Mu0Bq/7I8FQUgFDKhDyZesa/5Bz0JKYAkBK7ocN5eOmISurjnYPiEElIADoVPqJnn9vQtvx1KRQHEQFXR+8urPzp+XpVQQgrACVVCzWgTSkUB2NNWdPgDEFIA6ZIndEBFAaRMnlCDkAJIUQwb0QoVBZCceBJqEFIAaYkqoQMqCiApsW1EDUIKIBURJtSgogDiF21CB2xHAaQg5ooO2I4CiFvkCTUIKYBoxZ/QARUFEKskNqIGFQUQoVQSahBSAFFJK6EDKgogMslVdEBIAcQkuYQOqCiAaKSYUIOQAohBuhUdiELq8OcHkLqkEzpgOwpALfWKDtiOApBKPaEGFQUgkUdCB2xHAYhkU9EB21EAweWU0AHbUQDBZVbRAdtRAAHll1CDkAIII8uEDqgogFByreggeEgD/3YAYpBxQgdsRwH4l3dFB2xHAXiWd0IHbEcB+JT9RtSgogA8KSGhBhUF4FwhG1GD7SgA58pJqEFFAbhVVEIHVBSAU6VtRA1CCsCVAhM6oKIA3CmzogNCCsCFYhM6oKIAXCi5ooOAIVX/ogB8KTmhA7ajAOwUvhE1qCiAzkjogIoCsEBFDUIKoAMSWqGiADqgoqOoKIC2SOgotqMAWmEjOomKAmiOhE6iogCao6JTEVIATZDQWagogCaoaA0qCmAuKlqD7SiAeiR0LioKoAYVnYuKAqhBQueiogBmYSPaECEFMBUJbYiKApiKijZHRQFMIqHNsR0FMIaNaFtUFMAoKtoWFQUwioS2RUUBVNiIdkNIARgktBsqCsCgop1RUQAk1AYVBUBFbXBSD4CKWqKiQOFIqCUqCpSMjagTVBQoFgl1gu0oUCwq6gQVBYpFRV2hokCBSKhDVBQoEBV1i5ACpaGiblFRoCgk1DkqChSFivpARYFykFAf2I4C5aCiPlBRoBCczvtDRYESkFB/qChQAirqDxUFSkBFvSKkQN5IqG9UFMgbFfWNigJ5o6IBUFEgYyQ0ACoK5IqNaBic1AO5oqLBUFEgSyQ0GCoKZImKBkNFgfxwOh8YFQUyQ0IDo6JAZqhoYJzUA5mhouFRUSAnJDQ8Kgpkg42oBBUFskFFVagokAcSqkJFgTxQURVO6oEMcDovREWBDJBQLSoKpI6KalFRIHVUVIuKAqmjonJUFMgDCVUhnkBmqGhgxBPIFRUNg3gC2SOhvhFPoBBU1BPiCRSIijpEOQEAAAAAAAAAAAAAAAAAAAAAAAAAXv0/v++nRwplbmRzdHJlYW0KZW5kb2JqCjIxIDAgb2JqCjU5NjgKZW5kb2JqCjIyIDAgb2JqCjY5NTUKZW5kb2JqCjIzIDAgb2JqCjw8IC9VUkkgKGh0dHBzOi8vcG9ydGFsLm90cnMuY29tL290cnMvY3VzdG9tZXIucGwjU2lnbnVwKQovUyAvVVJJID4+CmVuZG9iagoyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAyNTUuODIgNTk5LjgwNSAzMTguMTUgNjA5Ljc5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNiAwIG9iago8PCAvTGVuZ3RoIDI3IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzNV0tvHDcMvs+v0B/oRKQeIwHBAtmst2hvRhfIIcgpbdJDNoVz6d8vKVGj19RJboZtaCRS5MePjxk/LaA0/fzCyxZRfbwvT3IGakNlvBw5r4xeg/Nag7qrtIcVdNp/IfVht+vKzheZWNr3f6t3y9dFq1+X9x9I9U+lV6f+XfTsrjH5x/LY4GSpfrE4W6QG8AUjfVo2m8sB/QrRxRhVQIXbiqTz8a5e/XZHdfknBfXYF4q3uHpwfQFpFcMagpzS2YqOfLPwi0JyYq3WGqctqw0nLoWd1/8NUOzPpsY8ZI3n0IFbdfTdYza1734GUW+C0Wj1eTnflldX4gy0un2qnQhrQCTuI0mA7jmOZFO3u3r/mp7OlDDNf6cP6vb78nDrI7OwOuraF0V8Ki3kMrE+UKkE9e0v9U59pWPrdI6bHwIoj1xpC1WaLZXW1dmWZlRlzyv6bdkjPbNuDoi/4HfS3hBhbwlYYCppJRI18xoyiUdpCMps6xYt2YGdfUPtgiiXOQ1vTyqCIgngSZEePxmRsVNyCFd6fqB1q/dSBkH06BxtfjaYfZgggFnudst8+5Kt8A0olkK1AHRb25PCjCo0FXPNK2uin30/Fwvb0UXP5nuMZOfCVnu84kUQ0r1kQmJnDMl34eFabSUsMa+JG9aJOUFNVlycsgIXsQCnPLsYOo/DZDpI+Ftei6tCZE5DcxEKi65i7nhDyacfPbaEtIIfY2OwVGguidZF0Y7Wowgu2XrBjaNisuYb4eUo+nDgwhoJGcYSGsz3pny+xQB39sOgVBCnKLrb4kfjVAIbTCVQspmgN5nnMyvF+TxRJfRS+ugb/lngat20TTe2cSpp6KshRV5aJFQuky22Yyp6Prd+tlGbOu18xducQpXu9RIqZpS5x9lAwQkF+/lgPJR7Bd/cjtEct6NUB9gVE5tXwfswnGP1XtqgyMxZ9F3D1sR81e+5KPmrGZ0HYHNXmK6DucqgYBf8hY3SQ51u0z77mf4JPqzuBk+HUfpJ27EyZn9o+xqRmjbHNWwHdNy5++uqHcetzib3/VQToN1cFAUU9/jmKusQhsOdlkn7O53TW/FNMmTkwzZaLO+BH7oZ5fxSG5XP0gumQGkNle+APVetsCuAEfz8GdDi4/E1gu6nz0haPySal9/MxpQenW3g5aSM221cJPYO2Jmqw/Q57OQp5LlaYP7OKm/LnJyjMaG/+91UeZJhJ7itfKOYcFL0T0AzLvbmb18mkAHnL9Bvn5vv9GDoS51xUMyHQRxPbmg7s+4HLVfcNh7R0ruRfEQTDx2W8Zz+J3hc/gMh4B29CmVuZHN0cmVhbQplbmRvYmoKMjUgMCBvYmoKWwoyNCAwIFIKXQplbmRvYmoKMTggMCBvYmoKPDwKICAvUmVzb3VyY2VzIDMgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDEgMCBSCiAgL0Fubm90cyAyNSAwIFIKICAvQ29udGVudHMgMjYgMCBSCj4+CgplbmRvYmoKMjcgMCBvYmoKOTg0CmVuZG9iagoyOSAwIG9iago8PCAvTGVuZ3RoIDMwIDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzNWkuPIzcOvvtX1B+Yit4qAUED47a92NwGaSCHIKfs65DOYvaSvx+JIilKKpc9szkMZox2qSiJpPjxJX8+6UXlfx/Kn5jM8uv76TOO6SWaxQYc8mGxat18UEov7ws861UreP4tkw9PTItPgd7hSvz8n+Wn0+8ntfzt9PMvmfQfi1r98sdJzduJJX88fRJ8lrfqm+VTcmq1+YY5/XyKrpqDCatOPqW0bGYxcTWZ5tf35bu/v5vl8l8Q6lNvKMGZNWjfG5Ba0rZuG47msdX4vHd5+dti8ibOKaXM9FjIhhEPYte/dwXE9eelxnOoFEfcab+qFLqvdSl++hKO+iUKN2r59+n8dvrulnWm1fL2r4ZEt9qwZe6VXbTO83yRJC5v78vP3+ev55dflrcfTte3XiKnV5/R+k0pHEzKFPNwYcsmsi3/++fy0/J7HnZeVXnLl00vwZCFObKwzr4i+KamtbDk/1Jrmc6u0etstFsgZZmsR62L0vL3/FEf86eMvWbtXvJYZlp/rN/V5WVxavm+UiiiDpUaxvJKJuW/+VmXvx/rUVR2zMCO9Wu0mZ0tGxqxM2yntYP9rvlzw/WLFl8rt7qcvGv761febzKabfHbGmPmVqWN9tMoorrUTYomyvfyF9RRNtAv2fPn80T+VMTNC02ozzRHb0gj5gB9YfI2jBfFlbk+yxnLSBEHVk30Ztjd1tV0wI+qKwMXgq5woYaxwqExdU1YZ1zboPSoUpDKvSzZ6vDAJQWYjJhtVdMd0U16EBx0468vS4JdtGFN2EEih9pBnYGEjTviWa7qxWmxPqt5CJuIarIJWC1WGQ0Z3dPnLuRk/oDba50Fb/SoDbQOXJF4Ji6AJh1BKWUxtEkpNigV0yYomfK5VnGKZunZ6oapotqCW8C0e4QlDb4k82cjK85+rOxOZulXs2sAOF641OeKYuIanq8DHYKIQbqJY0eaIiGpu9t7a0Acx4GnKHj2z/ENAEZDrGZLAIVDvNzXRAdQWi2iNDgP/Fkc4CZoO5dC6xLsaO4VaUaNa9RIDyE/6wdAYJDjwpmeIKSNn0yhHQ0yhYoh9QIDhxatnV9DgpDZTPr6MDqAxGTFr7iZR42kQ4sOOTzYTBZ8Yldw4Jo+ZLWs8dmTa9Sjq+zfQtDB9cixgEzTOtLOiBqcxhXHdncH5wke4CXHXz75jsZh/C9YKgcHngHxVp7Lexf2ZilLWuqdnwxoxyuADxDWOzrY+zNtyBIpQgHMwx0P+L0Jr2Bmy97UZBJgwdfemtsG9buJ4nh8pSNEFKVO9NecWCWOWuike9cCjk/Pc8HYL/1+u/z0UBfUGjkCvXWOpc3ec5F13hGG86Q1RF/E8RwkzFMYBvyWz1lYckSvleq7YzwbkyOU3lJyujmQc97QNheMQeKD3vajRHsR8QRuOy8YhchfURalWJRcMhJ5IgWwbvDI33RbHrgbNnWaABHfNGL2Ov2KnX2Mr8kvgRho3mOayhNk9tcJLKNor3RyccLNyKxuXvoiCCgZ29D8RwXQqnqbIG5KETJYiaPNU7VHMPjUbJNTMifeY/FA0VZjZtVUUf0ovEdoHucPUC4ehkjjc4gs7Qnf6jkwUoLXFc9HYIbxldCv61oDAi9EQ+k/uRddbYjXoPgQGz4fx1cTc3wti5lsZg8yRp9Wu2czPH6AE6Ihc5KuTr4fM0Vee/ABvB7lUWx58tT4nEdO70jwlB1bBLRrNj3NF2P3cM687Ej1jCaPHM6occ4V0fbIYbLW0848zOnhxOYobEpxMxgO1YEgEkHuRjAt0Derq1Ld5735ZCTeTc3opTxJIHLjVncMricgCxqXbrEAByG4T1bCNocYLbK4ceo9f058YC6lSXnyJVW4DMvJydMmIqmZdqccYQ5/wzbA6j01Tyc5LtsTUC9nNiGrzGRCh8hDM3IBo84TVkS0jELqrPlhrTtmwu/VvOZoOTQuDYfGwBq6ltJz1sNr7hqPfKuxLTHuLHF8F6CDpOSPpETy+Jk2SK6oGqXII1PZbrXD1GI2E+1mT6P7bbpiBJ1yMKveK8vl+CPzYVrq/4Q+0x7XG+eBu8BEhDBLe9ER9/yMR9xJ8US6R/TyGKUU8hhpHLRDvTLzpcfKO96R84GM8bEWIc3xuGqhP0zArHVrsCEl69heTJlNbTdyj5FqMNWaE2d0ESRrSbJsHbdlzityQG32V1wLE1GNfURDa1Czw95Zm12CgmJZQTuNOAK4HqZv1sc1bCqlFDnZtKE/5XrEXWeB4gtrd7+qZRJF/Tfyjtc9U+WHucM7rrcJ1MuIdZknNhG+oMvP5k7esNmWdPCT6927ZXjaWWgqmfeS5ya3gEY5Fc19o4OGeDbn6Zz3jvTwNI9Rs+Ud8sRc+fOdnY0CNXiBBCWKzUcfWCAsWCweqk2KQ/bjhoDLiUIIOm3RPtXfy9XV9uyBNOKxg0AvZOLLg9yNc6OSudHAC8sckeejk2QQjrtS881S0OM27khIdaHsD0gNzJIKdQzdRNyA63Ce8peru0tAabDUTeBu0aDsDavp8aAYx3SXRr29OYN0xk3GMyBZ3gFRFUENz8eocM6tPm0Zd8rIXmN3+Zo48aa2tlFckhuKLDslvqK2g4wSGrFcdIjXL1XJhygKOQ4UDXsbH7XVzBp3MUHjIkul3i0bqehid3Pi8Ey9F3K4huZNGfCwikzUaNyeVbsGBrvu33My2CcXEjNEqXbkHUsb1oMolJTaiXdEaehGfkP3S7i4qe7mirl4eKk40H/lQXZFwYydmCaT6fpouraFSzphRc9Jk8snz0ZgQ9BTj62vRDEVLtUiQoea2yMN7Lm1973eKe0d4f0ElFNafSy/svCx63QhP1qxluFG4IxYdJimUJvxq66xvMlRLi9lrLgKNuLMksGuyyaSDycqco9pcEcsWjvEosw5mHCycXpRrmd0SLSzniaeaxbQDYLrpDr6siOACpzWkLcd5eS6flMcQ8jy4Apj5ORw0wGb24Be2VHh9WTTYjDlLtRLjjvvtM/ZhDNfypHh6J/lV3ixnWseuho6jMuHmPA+h7egUnTayB/7gEgUp8/VDGrip1oSGBG/WPIUL+UdwYchIigtXXpVRf21F8U+5gioXNpUy191u8jlAtU3L8WpAUWpRsr1oavufUJWJYPgLh6xwtv7kQHxgF19udfxdfbT2Ze505Lh3uHtmKu9jBW3H65Xhi3v3J13AffwUmWs3oTUUBPJzEO8ZoZnzJViZjAGyiI4LBLHaHrtZI6O5P9FXAbb6p1OyejUIc4JxCnEDRZSHSAEnr4KQwhF3ILrNlUVxFXkGV0P/ZyPfsp3iMFgzeo3n2Osf3S5q/avdlXfg+zu9C79zAPUqOeuZAWpk5dFRHbdx4zkce8HND0DMmRIvp68nXb7ihFDFMAoO1CiCY1C7xeCcllRsNH8Pu2iX/ipXUHbrd0ExVAqqMEmHsXe8Yp2SkOT+C3xp9Of8DVqjgplbmRzdHJlYW0KZW5kb2JqCjI4IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAzIDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxIDAgUgogIC9Db250ZW50cyAyOSAwIFIKPj4KCmVuZG9iagozMCAwIG9iagoyNjAyCmVuZG9iagozMiAwIG9iago8PCAvVVJJIChodHRwOi8vbG9jYWxob3N0L290cnMvaW5kZXgucGw/QWN0aW9uPUFkbWluRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0xKQovUyAvVVJJID4+CmVuZG9iagozMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDkuOCAzMTMuMTg3IDQ2Ni4yMSAzMjMuMTc3IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1IDAgb2JqCjw8IC9VUkkgKGh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy9pbmRleC5wbD9BY3Rpb249QWRtaW5GQVFFeHBsb3JlcjtDYXRlZ29yeT1NaXNjKQovUyAvVVJJID4+CmVuZG9iagozNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA5Ni41NiAyOTEuNzQxIDQ1OC4wNSAzMDEuNzMxIF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3IDAgb2JqCjw8IC9VUkkgKGh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy9pbmRleC5wbD9BY3Rpb249QWRtaW5GQVFFeHBsb3JlcjtDYXRlZ29yeT1NeSUyMENhdGVnb3J5KQovUyAvVVJJID4+CmVuZG9iagozOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDI0OC44NDkgNDk4LjYzIDI1OC44MzkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzkgMCBvYmoKPDwgL1VSSSAoaHR0cDovL2xvY2FsaG9zdC9vdHJzL2luZGV4LnBsP0FjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO0NhdGVnb3J5PUdyYW5QYXJlbnQ6OlBhcmVudDo6U29uKQovUyAvVVJJID4+CmVuZG9iago0MCAwIG9iago8PCAvVHlw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IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi4zMzggNjY3LjYyOSA1NDIuNjk4IDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKNzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjU1LjYyOSAxODMuNjg5IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM2LjQ3NiA2NTUuNjI5IDU0Mi44MzYgNjY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MyAwIFIKL0ggL0kKCj4+CmVuZG9iago3NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDY0NS44MTkgbnVsbF0KPj4KZW5kb2JqCjc3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY0My42MjkgMjAwLjkwMSA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi4xMjggNjQzLjYyOSA1NDIuNDg4IDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA1OTAuODM4IG51bGxdCj4+CmVuZG9iago4MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzEuNjI5IDE3OS4xNjMgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3OSAwIFIKL0ggL0kKCj4+CmVuZG9iago4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMyA2MzEuNjI5IDU0Mi42NiA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNTM1Ljg1NyBudWxsXQo+PgplbmRvYmoKODMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjE5LjYyOSAyMDUuNDk0IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM2LjA5IDYxOS42MjkgNTQyLjQ1IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKODUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA0ODAuODc2IG51bGxdCj4+CmVuZG9iago4NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MDcuNjI5IDI3Ny41MzggNjE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NSAwIFIKL0ggL0kKCj4+CmVuZG9iago4NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNTIyIDYwNy42MjkgNTQxLjg4MiA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNDAxLjg5NSBudWxsXQo+PgplbmRvYmoKODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTk1LjYyOSAzNDQuOTMxIDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODggMCBSCi9IIC9JCgo+PgplbmRvYmoKOTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1Ljg0MiA1OTUuNjI5IDU0Mi4yMDIgNjA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OCAwIFIKL0ggL0kKCj4+CmVuZG9iago5MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDM0Ni45MTQgbnVsbF0KPj4KZW5kb2JqCjkyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU4My42MjkgMTkyLjc2NSA1OTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi4xOTIgNTgzLjYyOSA1NDIuNTUyIDU5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCAyOTEuOTMzIG51bGxdCj4+CmVuZG9iago5NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NzEuNjI5IDI1Mi44NjkgNTgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NCAwIFIKL0ggL0kKCj4+CmVuZG9iago5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNzE0IDU3MS42MjkgNTQyLjA3NCA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgMjM2Ljk1MiBudWxsXQo+PgplbmRvYmoKOTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTU5LjYyOSAxOTMuNjkzIDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM2LjE4NiA1NTkuNjI5IDU0Mi41NDYgNTY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCAxODEuOTcxIG51bGxdCj4+CmVuZG9iagoxMDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTQ3LjYyOSAyODcuNjcyIDU1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMzUyIDU0Ny42MjkgNTQyLjcxMiA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCAxMjYuOTkgbnVsbF0KPj4KZW5kb2JqCjEwNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MzUuNjI5IDMxNi43NDkgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS4yMSA1MzUuNjI5IDU0MS41NyA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTA3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUyMy42MjkgMjEzLjU0MSA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM2LjAyOCA1MjMuNjI5IDU0Mi4zODggNTMzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNjg0LjE1NCBudWxsXQo+PgplbmRvYmoKMTEwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUxMS42MjkgMjk0LjYzNSA1MjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjM4NCA1MTEuNjI5IDU0MS43NDQgNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNjMwLjY0IG51bGxdCj4+CmVuZG9iagoxMTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDk5LjYyOSAyMjQuOTUyIDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMTA4IDQ5OS42MjkgNTQyLjQ2OCA1MDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA1NzcuMTI2IG51bGxdCj4+CmVuZG9iagoxMTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDg3LjYyOSAzMjMuOTk3IDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuMTUyIDQ4Ny42MjkgNTQxLjUxMiA0OTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCAxODAuOTUyIG51bGxdCj4+CmVuZG9iagoxMTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDc1LjYyOSAzODkuODQ5IDQ4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuNjMgNDc1LjYyOSA1NDAuOTkgNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjEyMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDQ2My42MjkgMjA0LjkyOSA0NzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1Ljk1NiA0NjMuNjI5IDU0Mi4zMTYgNDczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjEyNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NTEuNjI5IDE3My4zODMgNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi4zNDQgNDUxLjYyOSA1NDIuNzA0IDQ2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NyAwIFIgL1hZWiA3Mi4wIDYyNi40IG51bGxdCj4+CmVuZG9iagoxMjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDM5LjYyOSAxNjQuODg4IDQ0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuNTgzIDQzOS42MjkgNTQyLjk0MyA0NDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDcgMCBSIC9YWVogNzIuMCA1NTguMCBudWxsXQo+PgplbmRvYmoKMTMxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQyNy42MjkgMjA5LjUwMyA0MzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM2LjA2IDQyNy42MjkgNTQyLjQyIDQzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTMwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NyAwIFIgL1hZWiA3Mi4wIDQ4OS42IG51bGxdCj4+CmVuZG9iagoxMzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDE1LjYyOSAyMjEuNzE5IDQyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTMzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuOTYyIDQxNS42MjkgNTQyLjMyMiA0MjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTAgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTM3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDAzLjYyOSAxNDkuMzY3IDQxMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMzcyIDQwMy42MjkgNTQyLjczMiA0MTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTAgMCBSIC9YWVogNzIuMCA2NDQuOCBudWxsXQo+PgplbmRvYmoKMTQwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM5MS42MjkgMTk4Ljk1NiA0MDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM2LjE0MiAzOTEuNjI5IDU0Mi41MDIgNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUwIDAgUiAvWFlaIDcyLjAgNTY4LjQgbnVsbF0KPj4KZW5kb2JqCjE0MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNzkuNjI5IDE5NC41OTEgMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi4xNzggMzc5LjYyOSA1NDIuNTM4IDM4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxNDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAzNjcuNjI5IDE2MS43NiAzNzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM2LjI3OCAzNjcuNjI5IDU0Mi42MzggMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjE0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNTUuNjI5IDE1Ny40ODYgMzY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNi40NyAzNTUuNjI5IDU0Mi44MyAzNjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCA2NDUuMzUxIG51bGxdCj4+CmVuZG9iagoxNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzQzLjYyOSAyNzEuNDI3IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTUxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNjkyIDM0My42MjkgNTQyLjA1MiAzNTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCA1ODEuNjQ2IG51bGxdCj4+CmVuZG9iagoxNTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzMxLjYyOSAyOTAuMTM4IDM0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNTM0IDMzMS42MjkgNTQxLjg5NCAzNDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCA1MTcuOTQxIG51bGxdCj4+CmVuZG9iagoxNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzE5LjYyOSAyNzEuNDA3IDMyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNjkyIDMxOS42MjkgNTQyLjA1MiAzMjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCA0NTQuMjM2IG51bGxdCj4+CmVuZG9iagoxNjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzA3LjYyOSAzMjEuMzE2IDMxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTYwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuMjcgMzA3LjYyOSA1NDEuNjMgMzE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgMzkwLjUzMSBudWxsXQo+PgplbmRvYmoKMTY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI5NS42MjkgMzQwLjcxNSAzMDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjEwOCAyOTUuNjI5IDU0MS40NjggMzA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgMzI2LjgyNiBudWxsXQo+PgplbmRvYmoKMTY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI4My42MjkgMjc2LjM1NiAyOTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjY1IDI4My42MjkgNTQyLjAxIDI5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NiAwIFIgL1hZWiA3Mi4wIDI2My4xMjEgbnVsbF0KPj4KZW5kb2JqCjE3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNzEuNjI5IDI3NC4yODUgMjgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS42NjggMjcxLjYyOSA1NDIuMDI4IDI4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NiAwIFIgL1hZWiA3Mi4wIDE5OS40MTYgbnVsbF0KPj4KZW5kb2JqCjE3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNTkuNjI5IDI4My4zNDYgMjY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS41OSAyNTkuNjI5IDU0MS45NSAyNjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCAxMzUuNzExIG51bGxdCj4+CmVuZG9iagoxNzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjQ3LjYyOSA0MDkuOTMzIDI1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuNTIzIDI0Ny42MjkgNTQwLjg4MyAyNTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTc5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIzNS42MjkgMzc1LjIxOSAyNDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjgxNiAyMzUuNjI5IDU0MS4xNzYgMjQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTgxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU5IDAgUiAvWFlaIDcyLjAgNjY0LjQ0NCBudWxsXQo+PgplbmRvYmoKMTgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIyMy42MjkgMzExLjk1NiAyMzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjM1IDIyMy42MjkgNTQxLjcxIDIzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDYwMy4wMjEgbnVsbF0KPj4KZW5kb2JqCjE4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMTEuNjI5IDMzMC4xMjkgMjIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS4xOTYgMjExLjYyOSA1NDEuNTU2IDIyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDU0MS41OTggbnVsbF0KPj4KZW5kb2JqCjE4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxOTkuNjI5IDMyNi42MjQgMjA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS4yMjYgMTk5LjYyOSA1NDEuNTg2IDIwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDQ4MC4xNzUgbnVsbF0KPj4KZW5kb2JqCjE5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxODcuNjI5IDQxOS43NDEgMTk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTkyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC40NCAxODcuNjI5IDU0MC44IDE5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTkwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDQxOC43NTIgbnVsbF0KPj4KZW5kb2JqCjE5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNzUuNjI5IDMyNS4zNTkgMTg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS4yMzYgMTc1LjYyOSA1NDEuNTk2IDE4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTkzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDM1Ny4zMjkgbnVsbF0KPj4KZW5kb2JqCjE5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNjMuNjI5IDMyMS42MTUgMTczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS4yNjggMTYzLjYyOSA1NDEuNjI4IDE3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDI5NS45MDYgbnVsbF0KPj4KZW5kb2JqCjIwMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNTEuNjI5IDQxNC43MzMgMTYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC40ODMgMTUxLjYyOSA1NDAuODQzIDE2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDIzNC40ODMgbnVsbF0KPj4KZW5kb2JqCjIwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMzkuNjI5IDMyMC4zNSAxNDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjI3OCAxMzkuNjI5IDU0MS42MzggMTQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjA1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU5IDAgUiAvWFlaIDcyLjAgMTczLjA2IG51bGxdCj4+CmVuZG9iagoyMDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTI3LjYyOSAyOTcuMjY4IDEzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNDc0IDEyNy42MjkgNTQxLjgzNCAxMzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCAxMTEuNjM3IG51bGxdCj4+CmVuZG9iagoyMDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTE1LjYyOSAyOTYuMDAzIDEyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNDg0IDExNS42MjkgNTQxLjg0NCAxMjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjIgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKMjEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEwMy42MjkgMzkwLjM4NSAxMTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIxMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjY4OCAxMDMuNjI5IDU0MS4wNDggMTEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjE0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgNjQ0LjQwMSBudWxsXQo+PgplbmRvYmoKMjE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDkxLjYyOSAyMzEuOTUzIDEwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzYuMDI0IDkxLjYyOSA1NDIuMzg0IDEwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDU4MC44MDIgbnVsbF0KPj4KZW5kb2JqCjIxOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA3OS42MjkgMjU2LjYyOSA4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjE3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuODE2IDc5LjYyOSA1NDIuMTc2IDg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjIwIDAgb2JqCjw8IC9MZW5ndGggMjIxIDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzUvcuuLVmSHDavr7g/oOB6PwAigerKLEGaEWqAA4Ij6jVgU6Am+n25rXgsv2fHuWVGdYElNLIr895lOyJ2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TM9kz0w2phZMyWRja/gok41p+KhlsjENH/VENrZmjzLZmJ7JnplsTC2YksnG1IK5tIu1//MO/7cdNFvuWz7v6G7BfH5/fMXrB1YSYiEKZW5kc3RyZWFtCmVuZG9iago2OCAwIG9iagpbCjY3IDAgUgo2OSAwIFIKNzEgMCBSCjcyIDAgUgo3NCAwIFIKNzUgMCBSCjc3IDAgUgo3OCAwIFIKODAgMCBSCjgxIDAgUgo4MyAwIFIKODQgMCBSCjg2IDAgUgo4NyAwIFIKODkgMCBSCjkwIDAgUgo5MiAwIFIKOTMgMCBSCjk1IDAgUgo5NiAwIFIKOTggMCBSCjk5IDAgUgoxMDEgMCBSCjEwMiAwIFIKMTA0IDAgUgoxMDUgMCBSCjEwNyAwIFIKMTA4IDAgUgoxMTAgMCBSCjExMSAwIFIKMTEzIDAgUgoxMTQgMCBSCjExNiAwIFIKMTE3IDAgUgoxMTkgMCBSCjEyMCAwIFIKMTIyIDAgUgoxMjMgMCBSCjEyNSAwIFIKMTI2IDAgUgoxMjggMCBSCjEyOSAwIFIKMTMxIDAgUgoxMzIgMCBSCjEzNCAwIFIKMTM1IDAgUgoxMzcgMCBSCjEzOCAwIFIKMTQwIDAgUgoxNDEgMCBSCjE0MyAwIFIKMTQ0IDAgUgoxNDYgMCBSCjE0NyAwIFIKMTQ5IDAgUgoxNTAgMCBSCjE1MiAwIFIKMTUzIDAgUgoxNTUgMCBSCjE1NiAwIFIKMTU4IDAgUgoxNTkgMCBSCjE2MSAwIFIKMTYyIDAgUgoxNjQgMCBSCjE2NSAwIFIKMTY3IDAgUgoxNjggMCBSCjE3MCAwIFIKMTcxIDAgUgoxNzMgMCBSCjE3NCAwIFIKMTc2IDAgUgoxNzcgMCBSCjE3OSAwIFIKMTgwIDAgUgoxODIgMCBSCjE4MyAwIFIKMTg1IDAgUgoxODYgMCBSCjE4OCAwIFIKMTg5IDAgUgoxOTEgMCBSCjE5MiAwIFIKMTk0IDAgUgoxOTUgMCBSCjE5NyAwIFIKMTk4IDAgUgoyMDAgMCBSCjIwMSAwIFIKMjAzIDAgUgoyMDQgMCBSCjIwNiAwIFIKMjA3IDAgUgoyMDkgMCBSCjIxMCAwIFIKMjEyIDAgUgoyMTMgMCBSCjIxNSAwIFIKMjE2IDAgUgoyMTggMCBSCjIxOSAwIFIK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CmVuZG9iagoyMzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjIgMCBSIC9YWVogNzIuMCA1MTcuMjAzIG51bGxdCj4+CmVuZG9iagoyMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNzA5LjAwNSAyNzUuNjc5IDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNjU2IDcwOS4wMDUgNTQyLjAxNiA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjIgMCBSIC9YWVogNzIuMCA0NTMuNjA0IG51bGxdCj4+CmVuZG9iagoyNDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjk3LjAwNSAyNjEuNjc4IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNzc0IDY5Ny4wMDUgNTQyLjEzNCA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjIgMCBSIC9YWVogNzIuMCAzOTAuMDA1IG51bGxdCj4+CmVuZG9iagoyNDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjg1LjAwNSAyNjQuMDc4IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNzU0IDY4NS4wMDUgNTQyLjExNCA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjIgMCBSIC9YWVogNzIuMCAzMjYuNDA2IG51bGxdCj4+CmVuZG9iagoyNDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjczLjAwNSAyOTguMDE1IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNDY4IDY3My4wMDUgNTQxLjgyOCA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjIgMCBSIC9YWVogNzIuMCAyNjIuODA3IG51bGxdCj4+CmVuZG9iagoyNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjYxLjAwNSAyODQuNTMxIDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjUxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNTggNjYxLjAwNSA1NDEuOTQgNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMTk5LjIwOCBudWxsXQo+PgplbmRvYmoKMjU1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY0OS4wMDUgMjk0LjgyOCA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjQ5NCA2NDkuMDA1IDU0MS44NTQgNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMTM1LjYwOSBudWxsXQo+PgplbmRvYmoKMjU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYzNy4wMDUgMzIzLjUyNyA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjI1MiA2MzcuMDA1IDU0MS42MTIgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjYwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyNjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjI1LjAwNSAyODMuNjg1IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjYwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuNTg4IDYyNS4wMDUgNTQxLjk0OCA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgNjY0LjE1NiBudWxsXQo+PgplbmRvYmoKMjY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYxMy4wMDUgMjQ1Ljg4NCA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjkwNiA2MTMuMDA1IDU0Mi4yNjYgNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDYwMi4zNTkgbnVsbF0KPj4KZW5kb2JqCjI2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MDEuMDA1IDI0NS44ODQgNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS45MDYgNjAxLjAwNSA1NDIuMjY2IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCA1NDAuNTYyIG51bGxdCj4+CmVuZG9iagoyNzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTg5LjAwNSAyNDUuODg0IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuOTA2IDU4OS4wMDUgNTQyLjI2NiA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgNDc4Ljc2NSBudWxsXQo+PgplbmRvYmoKMjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU3Ny4wMDUgMjQ1Ljg4NCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjkwNiA1NzcuMDA1IDU0Mi4yNjYgNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDQxNi45NjggbnVsbF0KPj4KZW5kb2JqCjI3NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NjUuMDA1IDI0NS44ODQgNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS45MDYgNTY1LjAwNSA1NDIuMjY2IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCAzNTUuMTcxIG51bGxdCj4+CmVuZG9iagoyNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTUzLjAwNSAyNDUuODg0IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzUuOTA2IDU1My4wMDUgNTQyLjI2NiA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgMjkzLjM3NCBudWxsXQo+PgplbmRvYmoKMjgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU0MS4wMDUgMzMxLjQ4NCA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM1LjE4NiA1NDEuMDA1IDU0MS41NDYgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDIxOS41NzcgbnVsbF0KPj4KZW5kb2JqCjI4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MjkuMDA1IDMzMS40ODQgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS4xODYgNTI5LjAwNSA1NDEuNTQ2IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCAxNDUuNzggbnVsbF0KPj4KZW5kb2JqCjI4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MTcuMDA1IDMzMS40ODQgNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNS4xODYgNTE3LjAwNSA1NDEuNTQ2IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUwNS4wMDUgMzMxLjQ1OCA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4Ljc3NCA1MDUuMDA1IDU0MS40OTQgNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjkzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDY1MS4zNDYgbnVsbF0KPj4KZW5kb2JqCjI5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0OTMuMDA1IDM2Mi4yODggNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC41MTQgNDkzLjAwNSA1NDEuMjM0IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjkzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCA1ODguNDk2IG51bGxdCj4+CmVuZG9iagoyOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDgxLjAwNSA0MjkuNTA0IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuOTQ2IDQ4MS4wMDUgNTQwLjY2NiA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgNTI1LjY0NiBudWxsXQo+PgplbmRvYmoKMzAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ2OS4wMDUgNDMwLjc0OSA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5OSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjkzNiA0NjkuMDA1IDU0MC42NTYgNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzAyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDQ1MC43OTYgbnVsbF0KPj4KZW5kb2JqCjMwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NTcuMDA1IDQ2My4zMjIgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzA0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42NjIgNDU3LjAwNSA1NDAuMzgyIDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzAyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCAzODcuOTQ2IG51bGxdCj4+CmVuZG9iagozMDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDQ1LjAwNSA0NDcuMzM5IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNzk2IDQ0NS4wMDUgNTQwLjUxNiA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwNSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgMzI1LjA5NiBudWxsXQo+PgplbmRvYmoKMzA5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQzMy4wMDUgNDQzLjA2NyA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwOCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjgzMiA0MzMuMDA1IDU0MC41NTIgNDQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDggMCBSCi9IIC9JCgo+PgplbmRvYmoKMzExIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDI1MC4yNDYgbnVsbF0KPj4KZW5kb2JqCjMxMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MjEuMDA1IDM3My44MDkgNDMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC40MTYgNDIxLjAwNSA1NDEuMTM2IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzExIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCAxNzUuMzk2IG51bGxdCj4+CmVuZG9iagozMTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDA5LjAwNSAzOTEuNzA0IDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMjY2IDQwOS4wMDUgNTQwLjk4NiA0MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxNCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgMTEyLjU0NiBudWxsXQo+PgplbmRvYmoKMzE4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM5Ny4wMDUgNDExLjg0OSA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxNyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjA5NiAzOTcuMDA1IDU0MC44MTYgNDA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzIwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDY5Ni4wIG51bGxdCj4+CmVuZG9iagozMjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzg1LjAwNSA0NDQuNDIgMzk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzIyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy44MTcgMzg1LjAwNSA1NDAuNTM3IDM5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzIwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCA2MzUuMDQgbnVsbF0KPj4KZW5kb2JqCjMyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNzMuMDA1IDQyOC40MzkgMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzI1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy45NTYgMzczLjAwNSA1NDAuNjc2IDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzIzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCA1NzQuMDggbnVsbF0KPj4KZW5kb2JqCjMyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNjEuMDA1IDQyNC4xNjcgMzcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzI4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy45OTIgMzYxLjAwNSA1NDAuNzEyIDM3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCA1MDEuMTIgbnVsbF0KPj4KZW5kb2JqCjMzMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNDkuMDA1IDM3MC43MjIgMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzMxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC40NDIgMzQ5LjAwNSA1NDEuMTYyIDM1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCA0NDAuMTYgbnVsbF0KPj4KZW5kb2JqCjMzMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMzcuMDA1IDI0NC4yNDUgMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzM0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOS41MDggMzM3LjAwNSA1NDIuMjI4IDM0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCAzNzkuMiBudWxsXQo+PgplbmRvYmoKMzM2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMyNS4wMDUgMzk3LjM1IDMzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMjE4IDMyNS4wMDUgNTQwLjkzOCAzMzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzNSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgMzE4LjI0IG51bGxdCj4+CmVuZG9iagozMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzEzLjAwNSA0NDUuNjg2IDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuODEgMzEzLjAwNSA1NDAuNTMgMzIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDI1Ny4yOCBudWxsXQo+PgplbmRvYmoKMzQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMwMS4wMDUgNDI2Ljc4NiAzMTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0MSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3Ljk3IDMwMS4wMDUgNTQwLjY5IDMxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCAxOTYuMzIgbnVsbF0KPj4KZW5kb2JqCjM0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyODkuMDA1IDM4NC4wNjYgMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQ2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC4zMyAyODkuMDA1IDU0MS4wNSAyOTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagozNDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgMTExLjM2IG51bGxdCj4+CmVuZG9iagozNDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjc3LjAwNSA0MjAuMjIzIDI4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMDI0IDI3Ny4wMDUgNTQwLjc0NCAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0NyAwIFIKL0ggL0kKCj4+CmVuZG9iagozNTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNjg0LjAgbnVsbF0KPj4KZW5kb2JqCjM1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNjUuMDA1IDM0MS4wMzcgMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzUyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC42OTIgMjY1LjAwNSA1NDEuNDEyIDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzUwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCA2MjMuOTk5IG51bGxdCj4+CmVuZG9iagozNTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjUzLjAwNSAzNDEuMDI3IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguNjkyIDI1My4wMDUgNTQxLjQxMiAyNjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1MyAwIFIKL0ggL0kKCj4+CmVuZG9iagozNTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNTYzLjk5OCBudWxsXQo+PgplbmRvYmoKMzU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI0MS4wMDUgMzcwLjg2MSAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1NiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjQ0IDI0MS4wMDUgNTQxLjE2IDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCA1MDMuOTk3IG51bGxdCj4+CmVuZG9iagozNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjI5LjAwNSAzNjUuODAzIDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguNDg0IDIyOS4wMDUgNTQxLjIwNCAyMzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNDQzLjk5NiBudWxsXQo+PgplbmRvYmoKMzYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIxNy4wMDUgMzU1Ljk1NCAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2MiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjU2NiAyMTcuMDA1IDU0MS4yODYgMjI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzY1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDM4My45OTUgbnVsbF0KPj4KZW5kb2JqCjM2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMDUuMDA1IDM4My41NzggMjE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC4zMzQgMjA1LjAwNSA1NDEuMDU0IDIxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCAzMjMuOTk0IG51bGxdCj4+CmVuZG9iagozNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTkzLjAwNSAyOTAuMzMxIDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjkuMTIgMTkzLjAwNSA1NDEuODQgMjAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMzcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDI2My45OTMgbnVsbF0KPj4KZW5kb2JqCjM3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxODEuMDA1IDMzNy4zMDMgMTkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC43MjQgMTgxLjAwNSA1NDEuNDQ0IDE5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCAyMDMuOTkyIG51bGxdCj4+CmVuZG9iagozNzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTY5LjAwNSA0MTUuODkyIDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMDYyIDE2OS4wMDUgNTQwLjc4MiAxNzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM3NCAwIFIKL0ggL0kKCj4+CmVuZG9iagozNzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgMTMxLjk5MSBudWxsXQo+PgplbmRvYmoKMzc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE1Ny4wMDUgNDIxLjIxOSAxNjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM3NyAwIFIKL0ggL0kKCj4+CmVuZG9iagozNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjAxNiAxNTcuMDA1IDU0MC43MzYgMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagozODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTQ1LjAwNSA0MTYuOTQ3IDE1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMDUyIDE0NS4wMDUgNTQwLjc3MiAxNTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagozODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgNjUyLjMyNiBudWxsXQo+PgplbmRvYmoKMzg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEzMy4wMDUgNDA0LjYyOSAxNDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM4MyAwIFIKL0ggL0kKCj4+CmVuZG9iagozODUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjE1NiAxMzMuMDA1IDU0MC44NzYgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzg2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDU3OC43NSBudWxsXQo+PgplbmRvYmoKMzg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEyMS4wMDUgNDIzLjEzMSAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM4NiAwIFIKL0ggL0kKCj4+CmVuZG9iagozODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjAgMTIxLjAwNSA1NDAuNzIgMTMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDUwNS4xNzQgbnVsbF0KPj4KZW5kb2JqCjM5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMDkuMDA1IDQyOC40NTkgMTE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy45NTYgMTA5LjAwNSA1NDAuNjc2IDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM5MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzQgMCBSIC9YWVogNzIuMCA0NDMuNTk4IG51bGxdCj4+CmVuZG9iagozOTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTcuMDA1IDQyNC4xODcgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy45OTIgOTcuMDA1IDU0MC43MTIgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzk1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDM3MC4wMjIgbnVsbF0KPj4KZW5kb2JqCjM5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA4NS4wMDUgNDExLjg2OSA5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMDk2IDg1LjAwNSA1NDAuODE2IDk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDI5Ni40NDYgbnVsbF0KPj4KZW5kb2JqCjM5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA3My4wMDUgNDMxLjI1NyA4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQwMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuOTMyIDczLjAwNSA1NDAuNjUyIDgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNDAxIDAgb2JqCjw8IC9MZW5ndGggNDAyIDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzdvcmuLEmSnrmPpzgvQKPprAo0EugcgujeFZgAFwRX7GnBZKN6069PEXUzU7Hr5ic/CUYkIguFW3njXPuODe4mKvLLoP/6U/ja5f/+nf5PG/Hrv/7tp389fha+WvxK9fhRqV9p33qp+x6+/vY1/ztsYZ///d/k8B/+6zr2+K96/tvx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49IKZW5kc3RyZWFtCmVuZG9iagoyNDAgMCBvYmoKWwoyMzkgMCBSCjI0MSAwIFIKMjQzIDAgUgoyNDQgMCBSCjI0NiAwIFIKMjQ3IDAgUgoyNDkgMCBSCjI1MCAwIFIKMjUyIDAgUgoyNTMgMCBSCjI1NSAwIFIKMjU2IDAgUgoyNTggMCBSCjI1OSAwIFIKMjYxIDAgUgoyNjIgMCBSCjI2NCAwIFIKMjY1IDAgUgoyNjcgMCBSCjI2OCAwIFIKMjcwIDAgUgoyNzEgMCBSCjI3MyAwIFIKMjc0IDAgUgoyNzYgMCBSCjI3NyAwIFIKMjc5IDAgUgoyODAgMCBSCjI4MiAwIFIKMjgzIDAgUgoyODUgMCBSCjI4NiAwIFIKMjg4IDAgUgoyODkgMCBSCjI5MSAwIFIKMjkyIDAgUgoyOTQgMCBSCjI5NSAwIFIKMjk3IDAgUgoyOTggMCBSCjMwMCAwIFIKMzAxIDAgUgozMDMgMCBSCjMwNCAwIFIKMzA2IDAgUgozMDcgMCBSCjMwOSAwIFIKMzEwIDAgUgozMTIgMCBSCjMxMyAwIFIKMzE1IDAgUgozMTYgMCBSCjMxOCAwIFIKMzE5IDAgUgozMjEgMCBSCjMyMiAwIFIKMzI0IDAgUgozMjUgMCBSCjMyNyAwIFIKMzI4IDAgUgozMzAgMCBSCjMzMSAwIFIKMzMzIDAgUgozMzQgMCBSCjMzNiAwIFIKMzM3IDAgUgozMzkgMCBSCjM0MCAwIFIKMzQyIDAgUgozNDMgMCBSCjM0NSAwIFIKMzQ2IDAgUgozNDggMCBSCjM0OSAwIFIKMzUxIDAgUgozNTIgMCBSCjM1NCAwIFIKMzU1IDAgUgozNTcgMCBSCjM1OCAwIFIKMzYwIDAgUgozNjEgMCBSCjM2MyAwIFIKMzY0IDAgUgozNjYgMCBSCjM2NyAwIFIKMzY5IDAgUgozNzAgMCBSCjM3MiAwIFIKMzczIDAgUgozNzUgMCBSCjM3NiAwIFIKMzc4IDAgUgozNzkgMCBSCjM4MSAwIFIKMzgyIDAgUgozODQgMCBSCjM4NSAwIFIKMzg3IDAgUgozODggMCBSCjM5MCAwIFIKMzkxIDAgUgozOTMgMCBSCjM5NCAwIFIKMzk2IDAgUgozOTcgMCBSCjM5OSAwIFIKNDAwIDAgUgpdCmVu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YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA3MDkuMDA1IDM1MC40NTcgNzE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDI1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC42MTIgNzA5LjAwNSA1NDEuMzMyIDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzQgMCBSIC9YWVogNzIuMCAxNzMuMjk0IG51bGxdCj4+CmVuZG9iago0MjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjk3LjAwNSAzNjMuMzQzIDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguNTA0IDY5Ny4wMDUgNTQxLjIyNCA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyNiAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgMTExLjcxOCBudWxsXQo+PgplbmRvYmoKNDMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY4NS4wMDUgMzcyLjcxNCA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyOSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjQyNiA2ODUuMDA1IDU0MS4xNDYgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDMyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMyAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iago0MzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjczLjAwNSAzNjguMTYzIDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguNDY0IDY3My4wMDUgNTQxLjE4NCA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzMiAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAzIDAgUiAvWFlaIDcyLjAgNjQ1Ljc5MiBudWxsXQo+PgplbmRvYmoKNDM2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY2MS4wMDUgMzgyLjg3MSA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzNSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjM0IDY2MS4wMDUgNTQxLjA2IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDMgMCBSIC9YWVogNzIuMCA1ODMuNTg0IG51bGxdCj4+CmVuZG9iago0MzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjQ5LjAwNSAzNzEuNzk3IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguNDMyIDY0OS4wMDUgNTQxLjE1MiA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzOCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAzIDAgUiAvWFlaIDcyLjAgNTIxLjM3NiBudWxsXQo+PgplbmRvYmoKNDQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYzNy4wMDUgMzY5LjI3OCA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0MSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjQ1NCA2MzcuMDA1IDU0MS4xNzQgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDQ0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMyAwIFIgL1hZWiA3Mi4wIDQ0Ny4xNjggbnVsbF0KPj4KZW5kb2JqCjQ0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MjUuMDA1IDM4MS42MDYgNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDQ2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC4zNSA2MjUuMDA1IDU0MS4wNyA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0NCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAzIDAgUiAvWFlaIDcyLjAgMzg0Ljk2IG51bGxdCj4+CmVuZG9iago0NDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjEzLjAwNSA0MTcuNjc0IDYyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMDQ2IDYxMy4wMDUgNTQwLjc2NiA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0NyAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAzIDAgUiAvWFlaIDcyLjAgMzIyLjc1MiBudWxsXQo+PgplbmRvYmoKNDUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYwMS4wMDUgNDIzLjE3MSA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ1MCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjAgNjAxLjAwNSA1NDAuNzIgNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDUzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMyAwIFIgL1hZWiA3Mi4wIDI2MC41NDQgbnVsbF0KPj4KZW5kb2JqCjQ1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1ODkuMDA1IDQyMy41MDggNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDU1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy45OTMgNTg5LjAwNSA1NDAuNzEzIDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDMgMCBSIC9YWVogNzIuMCAxODYuMzM2IG51bGxdCj4+CmVuZG9iago0NTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTc3LjAwNSA0NTYuMDgxIDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNzE5IDU3Ny4wMDUgNTQwLjQzOSA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ1NiAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAzIDAgUiAvWFlaIDcyLjAgMTEyLjEyOCBudWxsXQo+PgplbmRvYmoKNDYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU2NS4wMDUgNDQwLjEgNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy44NTggNTY1LjAwNSA1NDAuNTc4IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDYgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKNDYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU1My4wMDUgNDM1LjgyOCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2MiAwIFIKL0ggL0kKCj4+CmVuZG9iago0NjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3Ljg5NCA1NTMuMDA1IDU0MC42MTQgNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDY1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNiAwIFIgL1hZWiA3Mi4wIDYzMy43OTIgbnVsbF0KPj4KZW5kb2JqCjQ2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NDEuMDA1IDM0NC42NjIgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC42NjIgNTQxLjAwNSA1NDEuMzgyIDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDYgMCBSIC9YWVogNzIuMCA1NzEuNTg0IG51bGxdCj4+CmVuZG9iago0NjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTI5LjAwNSA0MTEuODc4IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMDk0IDUyOS4wMDUgNTQwLjgxNCA1MzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2OCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA2IDAgUiAvWFlaIDcyLjAgNTA5LjM3NiBudWxsXQo+PgplbmRvYmoKNDcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUxNy4wMDUgMzg1LjM3IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMzE4IDUxNy4wMDUgNTQxLjAzOCA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3MSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA2IDAgUiAvWFlaIDcyLjAgNDQ3LjE2OCBudWxsXQo+PgplbmRvYmoKNDc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUwNS4wMDUgNDA0LjYwOSA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjE1NiA1MDUuMDA1IDU0MC44NzYgNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDc3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNiAwIFIgL1hZWiA3Mi4wIDM3Mi45NiBudWxsXQo+PgplbmRvYmoKNDc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ5My4wMDUgNDM3LjE4MiA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3Ljg4MiA0OTMuMDA1IDU0MC42MDIgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNiAwIFIgL1hZWiA3Mi4wIDMxMC43NTIgbnVsbF0KPj4KZW5kb2JqCjQ4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0ODEuMDA1IDQyMS4xOTkgNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC4wMTYgNDgxLjAwNSA1NDAuNzM2IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDYgMCBSIC9YWVogNzIuMCAyNDguNTQ0IG51bGxdCj4+CmVuZG9iago0ODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDY5LjAwNSA0MTYuOTI3IDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMDUyIDQ2OS4wMDUgNTQwLjc3MiA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4MyAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA2IDAgUiAvWFlaIDcyLjAgMTc0LjMzNiBudWxsXQo+PgplbmRvYmoKNDg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ1Ny4wMDUgMzc5Ljg3MyA0NjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjM2NCA0NTcuMDA1IDU0MS4wODQgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNiAwIFIgL1hZWiA3Mi4wIDExMi4xMjggbnVsbF0KPj4KZW5kb2JqCjQ5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NDUuMDA1IDM1Ny41MTggNDU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC41NTQgNDQ1LjAwNSA1NDEuMjc0IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ5MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDkgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKNDkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQzMy4wMDUgMzgwLjQxMSA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjM2IDQzMy4wMDUgNTQxLjA4IDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDkgMCBSIC9YWVogNzIuMCA2NDUuNzkyIG51bGxdCj4+CmVuZG9iago0OTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDIxLjAwNSAzNjIuNDk3IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguNTEyIDQyMS4wMDUgNTQxLjIzMiA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA5IDAgUiAvWFlaIDcyLjAgNTgzLjU4NCBudWxsXQo+PgplbmRvYmoKNDk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQwOS4wMDUgNDIyLjQzNCA0MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5OCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjAwNiA0MDkuMDA1IDU0MC43MjYgNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0OTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTAxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwOSAwIFIgL1hZWiA3Mi4wIDUwOS4zNzYgbnVsbF0KPj4KZW5kb2JqCjUwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzOTcuMDA1IDQxMS4zODEgNDA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTAzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC4xIDM5Ny4wMDUgNTQwLjgyIDQwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUwNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDkgMCBSIC9YWVogNzIuMCA0NDcuMTY4IG51bGxdCj4+CmVuZG9iago1MDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzg1LjAwNSA0NzEuOTg0IDM5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNTg1IDM4NS4wMDUgNTQwLjMwNSAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwNCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA5IDAgUiAvWFlaIDcyLjAgMzcyLjk2IG51bGxdCj4+CmVuZG9iago1MDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzczLjAwNSAzNzguMDMxIDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMzggMzczLjAwNSA1NDEuMSAzODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwNyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA5IDAgUiAvWFlaIDcyLjAgMzEwLjc1MiBudWxsXQo+PgplbmRvYmoKNTExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM2MS4wMDUgMzYyLjA2OCAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUxMCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjUxNCAzNjEuMDA1IDU0MS4yMzQgMzcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwOSAwIFIgL1hZWiA3Mi4wIDI0OC41NDQgbnVsbF0KPj4KZW5kb2JqCjUxNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNDkuMDA1IDM2MC44MDQgMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC41MjYgMzQ5LjAwNSA1NDEuMjQ2IDM1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDkgMCBSIC9YWVogNzIuMCAxODYuMzM2IG51bGxdCj4+CmVuZG9iago1MTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzM3LjAwNSAzNjAuMjc2IDM0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguNTMgMzM3LjAwNSA1NDEuMjUgMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTE5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwOSAwIFIgL1hZWiA3Mi4wIDExMi4xMjggbnVsbF0KPj4KZW5kb2JqCjUyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMjUuMDA1IDM2OC45NjkgMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTIxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC40NTYgMzI1LjAwNSA1NDEuMTc2IDMzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTIgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKNTIzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMxMy4wMDUgMzc4Ljc3OCAzMjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyMiAwIFIKL0ggL0kKCj4+CmVuZG9iago1MjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjM3NCAzMTMuMDA1IDU0MS4wOTQgMzIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTI1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxMiAwIFIgL1hZWiA3Mi4wIDY0NS42MDIgbnVsbF0KPj4KZW5kb2JqCjUyNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMDEuMDA1IDQwMy4yNjUgMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTI3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC4xNjggMzAxLjAwNSA1NDAuODg4IDMxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUyOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTIgMCBSIC9YWVogNzIuMCA1ODMuMjA0IG51bGxdCj4+CmVuZG9iago1MjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjg5LjAwNSA0MDMuNTA0IDI5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUzMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMTY2IDI4OS4wMDUgNTQwLjg4NiAyOTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyOCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDEyIDAgUiAvWFlaIDcyLjAgNTIwLjgwNiBudWxsXQo+PgplbmRvYmoKNTMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI3Ny4wMDUgNDQzLjA2NyAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzMSAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjgzMiAyNzcuMDA1IDU0MC41NTIgMjg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTM0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxMiAwIFIgL1hZWiA3Mi4wIDQ0Ni40MDggbnVsbF0KPj4KZW5kb2JqCjUzNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNjUuMDA1IDI2Ni45NDkgMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTM2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOS4zMTYgMjY1LjAwNSA1NDIuMDM2IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUzNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTIgMCBSIC9YWVogNzIuMCAzODQuMDEgbnVsbF0KPj4KZW5kb2JqCjUzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNTMuMDA1IDI4NS42OSAyNjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzNyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI5LjE1OCAyNTMuMDA1IDU0MS44NzggMjYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxMiAwIFIgL1hZWiA3Mi4wIDMyMS42MTIgbnVsbF0KPj4KZW5kb2JqCjU0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNDEuMDA1IDM3NS42MDEgMjUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC40IDI0MS4wMDUgNTQxLjEyIDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTIgMCBSIC9YWVogNzIuMCAyNTkuMjE0IG51bGxdCj4+CmVuZG9iago1NDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjI5LjAwNSAzNjUuMjY1IDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguNDg4IDIyOS4wMDUgNTQxLjIwOCAyMzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0MyAwIFIKL0ggL0kKCj4+CmVuZG9iago1NDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDEyIDAgUiAvWFlaIDcyLjAgMTk2LjgxNiBudWxsXQo+PgplbmRvYmoKNTQ3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIxNy4wMDUgMjI0Ljk1NiAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0NiAwIFIKL0ggL0kKCj4+CmVuZG9iago1NDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI5LjY3IDIxNy4wMDUgNTQyLjM5IDIyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTIgMCBSIC9YWVogNzIuMCAxMzQuNDE4IG51bGxdCj4+CmVuZG9iago1NTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjA1LjAwNSAyNDIuMDE1IDIxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjkuNTI4IDIwNS4wMDUgNTQyLjI0OCAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0OSAwIFIKL0ggL0kKCj4+CmVuZG9iago1NTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDE1IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjU1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxOTMuMDA1IDQwMC4zMTkgMjAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC41NDYgMTkzLjAwNSA1NDEuMjY2IDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTUgMCBSIC9YWVogNzIuMCA2MTcuMDUyIG51bGxdCj4+CmVuZG9iago1NTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTgxLjAwNSAzOTUuMzEgMTkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC41ODggMTgxLjAwNSA1NDEuMzA4IDE5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTUgMCBSIC9YWVogNzIuMCA1MDguNDE5IG51bGxdCj4+CmVuZG9iago1NTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTY5LjAwNSA0NjcuMjE0IDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI1IDE2OS4wMDUgNTQwLjM0NSAxNzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU1OCAwIFIKL0ggL0kKCj4+CmVuZG9iago1NjEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDE1IDAgUiAvWFlaIDcyLjAgNDQ3Ljc4NiBudWxsXQo+PgplbmRvYmoKNTYyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE1Ny4wMDUgNDkzLjAwNyAxNjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU2MSAwIFIKL0ggL0kKCj4+CmVuZG9iago1NjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQwOCAxNTcuMDA1IDU0MC4xMjggMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxNSAwIFIgL1hZWiA3Mi4wIDM4Ny4xNTMgbnVsbF0KPj4KZW5kb2JqCjU2NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNDUuMDA1IDQ2Ny4yMDQgMTU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjUgMTQ1LjAwNSA1NDAuMzQ1IDE1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTY0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTUgMCBSIC9YWVogNzIuMCAzMjYuNTIgbnVsbF0KPj4KZW5kb2JqCjU2OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMzMuMDA1IDQ4My42NTUgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODcgMTMzLjAwNSA1NDAuMjA3IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU3MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTUgMCBSIC9YWVogNzIuMCAyNjUuODg3IG51bGxdCj4+CmVuZG9iago1NzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTIxLjAwNSAzOTMuNTA2IDEzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMjUgMTIxLjAwNSA1NDAuOTcgMTMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTczIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxNSAwIFIgL1hZWiA3Mi4wIDIwNS4yNTQgbnVsbF0KPj4KZW5kb2JqCjU3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMDkuMDA1IDM3Ny43MTMgMTE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC4zODQgMTA5LjAwNSA1NDEuMTA0IDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU3NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTUgMCBSIC9YWVogNzIuMCAxNDQuNjIxIG51bGxdCj4+CmVuZG9iago1NzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTcuMDA1IDQxMi4zODYgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC4wOSA5Ny4wMDUgNTQwLjgxIDEwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU3OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTggMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNTgwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEy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MCBSCjU1MSAwIFIKNTUzIDAgUgo1NTQgMCBSCjU1NiAwIFIKNTU3IDAgUgo1NTkgMCBSCjU2MCAwIFIKNTYyIDAgUgo1NjMgMCBSCjU2NSAwIFIKNTY2IDAgUgo1NjggMCBSCjU2OSAwIFIKNTcxIDAgUgo1NzIgMCBSCjU3NCAwIFIKNTc1IDAgUgo1NzcgMCBSCjU3OCAwIFIKNTgwIDAgUgo1ODEgMCBSCjU4MyAwIFIKNTg0IDAgUgpdCmVuZG9iago0MjEgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDMgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDEgMCBSCiAgL0Fubm90cyA0MjQgMCBSCiAgL0NvbnRlbnRzIDU4NSAwIFIKPj4KCmVuZG9iago1ODYgMCBvYmoKMTY2NDkKZW5kb2JqCjU4OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MTggMCBSIC9YWVogNzIuMCAxNTQuMjM5IG51bGxdCj4+CmVuZG9iago1ODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NzkuNjI5IDI4Ny4wNTcgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1ODggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC45MzYgNjc5LjYyOSA1NDEuNjU2IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU5MiAwIG9iago8PCAvTGVuZ3RoIDU5MyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczVjJjhw3DL3XV+gHTIsiJVFA0IDtLEhugzTgg+GTkzgHt4PJJb+fx6qe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CiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDEgMCBSCiAgL0NvbnRlbnRzIDYzOSAwIFIKPj4KCmVuZG9iago2NDAgMCBvYmoKMjI0NQplbmRvYmoKNjQyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyNCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2NDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMjg2Ljg4MyA0NTQuMjA1IDUyMS45OTkgNDY0LjE5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjQ1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYzOCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2NDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNDg3LjkyIDQ0Mi4yMDUgNTIyLjAgNDUyLjE5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjQ3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDk4LjAgNDMwLjIwNSAyNTAuMzkgNDQwLjE5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjQ4IDAgb2JqCjw8IC9MZW5ndGggNjQ5IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzNWUuPHCcQvs+v4A+4l1fTIEUjZbdnouRmZSUfLJ+c18HraHPJ3w/QFBRVdO9MTitrPAMU9fyqCtjXkxIy/vuQvpagxdeX02uZ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MjguMCA2OTcuMDA1IDQwNy42NjYgNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOC4xMyA2OTcuMDA1IDU0MC44NSA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2NyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDE4IDAgUiAvWFlaIDcyLjAgNDMzLjQ5OCBudWxsXQo+PgplbmRvYmoKNjcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY4NS4wMDUgNDExLjY0IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguMDk4IDY4NS4wMDUgNTQwLjgxOCA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3MCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDE4IDAgUiAvWFlaIDcyLjAgMzYwLjQyNiBudWxsXQo+PgplbmRvYmoKNjc0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY3My4wMDUgNDI1Ljk0OSA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3MyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3Ljk3NiA2NzMuMDA1IDU0MC42OTYgNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjc2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQxOCAwIFIgL1hZWiA3Mi4wIDI5OS4zNTQgbnVsbF0KPj4KZW5kb2JqCjY3NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2NjEuMDA1IDIwNy4zODkgNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOS42NjYgNjYxLjAwNSA1NDIuMzg2IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OTcgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNjgwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNjQ5LjAwNSAxMjUuMjUzIDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzAuMTQ0IDY0OS4wMDUgNTQyLjg2NCA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3OSAwIFIKL0ggL0kKCj4+CmVuZG9iago2ODIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTk3IDAgUiAvWFlaIDcyLjAgMjY1Ljg1NCBudWxsXQo+PgplbmRvYmoKNjgzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYzNy4wMDUgMjQ3Ljg0MiA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4MiAwIFIKL0ggL0kKCj4+CmVuZG9iago2ODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI5LjM0NiA2MzcuMDA1IDU0Mi4wNjYgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjg1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYwMCAwIFIgL1hZWiA3Mi4wIDU0NS4yIG51bGxdCj4+CmVuZG9iago2ODYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjI1LjAwNSAyMzcuMjk0IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjkuNDI5IDYyNS4wMDUgNTQyLjE0OSA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4NSAwIFIKL0ggL0kKCj4+CmVuZG9iago2ODggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjAwIDAgUiAvWFlaIDcyLjAgMjg4LjAgbnVsbF0KPj4KZW5kb2JqCjY4OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MTMuMDA1IDI0MC44OTcgNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODggMCBSCi9IIC9JCgo+PgplbmRvYmoKNjkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOS4zOTkgNjEzLjAwNSA1NDIuMTE5IDYyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MDMgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNjkyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNjAxLjAwNSAxMzIuODYxIDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzAuMDg4IDYwMS4wMDUgNTQyLjgwOCA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5MSAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjE4IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjY5NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDU4OS4wMDUgMTE5LjAzNiA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5NCAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMwLjE5IDU4OS4wMDUgNTQyLjkxIDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MTggMCBSIC9YWVogNzIuMCA2NzguOCBudWxsXQo+PgplbmRvYmoKNjk4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU3Ny4wMDUgMTcxLjg3IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjk3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjkuOTQ2IDU3Ny4wMDUgNTQyLjY2NiA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5NyAwIFIKL0ggL0kKCj4+CmVuZG9iago3MDAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjE4IDAgUiAvWFlaIDcyLjAgNjI0LjQgbnVsbF0KPj4KZW5kb2JqCjcwMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NjUuMDA1IDE2Ny43ODMgNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyOS45OCA1NjUuMDA1IDU0Mi43IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzAwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MjEgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNzA0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTUzLjAwNSAxNTAuMzEgNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMC4xMjggNTUzLjAwNSA1NDIuODQ4IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDU0MS4wMDUgMzMxLjEzMyA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0MiAwIFIKL0ggL0kKCj4+CmVuZG9iago3MDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI4LjYwNiA1NDEuMDA1IDU0MS4zMjYgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzA4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyNCAwIFIgL1hZWiA3Mi4wIDY4MS42IG51bGxdCj4+CmVuZG9iago3MDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTI5LjAwNSAyNTEuMDY1IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjkuMzIgNTI5LjAwNSA1NDIuMDQgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTE3LjAwNSAyODAuMzQyIDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjQ1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjguOTg2IDUxNy4wMDUgNTQxLjcwNiA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0NSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjM4IDAgUiAvWFlaIDcyLjAgNjM2LjI1IG51bGxdCj4+CmVuZG9iago3MTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTA1LjAwNSAxODQuNzQzIDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjkuODQ0IDUwNS4wMDUgNTQyLjU2NCA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxMyAwIFIKL0ggL0kKCj4+CmVuZG9iago3MTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjM4IDAgUiAvWFlaIDcyLjAgMTUwLjk0IG51bGxdCj4+CmVuZG9iago3MTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDkzLjAwNSAyMDUuMDczIDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjkuNjg0IDQ5My4wMDUgNTQyLjQwNCA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxNiAwIFIKL0ggL0kKCj4+CmVuZG9iago3MTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjUwIDAgUiAvWFlaIDcyLjAgMzI1LjU1MSBudWxsXQo+PgplbmRvYmoK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dRRlrSkhcNqu+za2HrOkvc3zOkbS1ErzY5sc/RAf428ap80rff4A3gA8dgplbmRzdHJlYW0KZW5kb2JqCjc0OCAwIG9iagoxMzc5NAplbmRvYmoKNzQ5IDAgb2JqCjIyCmVuZG9iago3NTAgMCBvYmoKNTYzCmVuZG9iago3NTEgMCBvYmoKMTcwMTAKZW5kb2JqCjc1MiAwIG9iagoyNQplbmRvYmoKNzUzIDAgb2JqCjU4MgplbmRvYmoKNzU0IDAgb2JqCjE1MDU3CmVuZG9iago3NTUgMCBvYmoKMjAKZW5kb2JqCjc1NiAwIG9iago1MjQKZW5kb2JqCjEgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzCi9Db3VudCA0NAovS2lkcyBbOCAwIFIgNjUgMCBSIDIzNyAwIFIgNDIxIDAgUiA2NjIgMCBSIDU4NyAwIFIgMTggMCBSIDI4IDAgUiAzMSAwIFIgNjQxIDAgUiA0NyAwIFIgNTAgMCBSIDU2IDAgUiA1OSAwIFIgNjIgMCBSIDIyMiAwIFIgMjI1IDAgUiAyMjggMCBSIDIzMSAwIFIgMjM0IDAgUiA0MDMgMCBSIDQwNiAwIFIgNDA5IDAgUiA0MTIgMCBSIDQxNSAwIFIgNDE4IDAgUiA1OTQgMCBSIDU5NyAwIFIgNjAwIDAgUiA2MDMgMCBSIDYwNiAwIFIgNjA5IDAgUiA2MTIgMCBSIDYxNSAwIFIgNjE4IDAgUiA2MjEgMCBSIDYyNCAwIFIgNjMwIDAgUiA2MzggMCBSIDY1MCAwIFIgNjUzIDAgUiA2NTYgMCBSIDY1OSAwIFIgNzI3IDAgUiBdID4+CmVuZG9iagoyIDAgb2JqCjw8CiAgL1R5cGUgL0NhdGFsb2cKICAvUGFnZXMgMSAwIFIKICAvTGFuZyAoZW4pCiAgL01ldGFkYXRhIDcgMCBSCiAgL1BhZ2VMYWJlbHMgOSAwIFIKPj4KCmVuZG9iagozIDAgb2JqCjw8CiAgL0ZvbnQgPDwKICAvRjE5IDczMyAwIFIKICAvRjE1IDczOSAwIFIKICAvRjE2IDc0NSAwIFIKPj4KCiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8CiAgL0ltMSAxMCAwIFIKICAvSW0yIDExIDAgUgogIC9JbTMgMTkgMCBSCiAgL0ltNCAyMCAwIFIKPj4KCiAgL0NvbG9yU3BhY2UgPDwgL0RlZmF1bHRSR0IgNiAwIFIgPj4KCj4+CgplbmRvYmoKOSAwIG9iago8PCAvTnVtcyBbMCA8PCAvUCAoMSkgPj4KIDEgPDwgL1AgKGlpKSA+PgogMiA8PCAvUCAoaWlpKSA+PgogMyA8PCAvUCAoaXYpID4+CiA0IDw8IC9QICh2KSA+PgogNSA8PCAvUCAodmkpID4+CiA2IDw8IC9QICh2aWkpID4+CiA3IDw8IC9QICgxKSA+PgogOCA8PCAvUCAoMikgPj4KIDkgPDwgL1AgKDMpID4+CiAxMCA8PCAvUCAoNCkgPj4KIDExIDw8IC9QICg1KSA+PgogMTIgPDwgL1AgKDYpID4+CiAxMyA8PCAvUCAoNykgPj4KIDE0IDw8IC9QICg4KSA+PgogMTUgPDwgL1AgKDkpID4+CiAxNiA8PCAvUCAoMTApID4+CiAxNyA8PCAvUCAoMTEpID4+CiAxOCA8PCAvUCAoMTIpID4+CiAxOSA8PCAvUCAoMTMpID4+CiAyMCA8PCAvUCAoMTQpID4+CiAyMSA8PCAvUCAoMTUpID4+CiAyMiA8PCAvUCAoMTYpID4+CiAyMyA8PCAvUCAoMTcpID4+CiAyNCA8PCAvUCAoMTgpID4+CiAyNSA8PCAvUCAoMTkpID4+CiAyNiA8PCAvUCAoMjApID4+CiAyNyA8PCAvUCAoMjEpID4+CiAyOCA8PCAvUCAoMjIpID4+CiAyOSA8PCAvUCAoMjMpID4+CiAzMCA8PCAvUCAoMjQpID4+CiAzMSA8PCAvUCAoMjUpID4+CiAzMiA8PCAvUCAoMjYpID4+CiAzMyA8PCAvUCAoMjcpID4+CiAzNCA8PCAvUCAoMjgpID4+CiAzNSA8PCAvUCAoMjkpID4+CiAzNiA8PCAvUCAoMzApID4+CiAzNyA8PCAvUCAoMzEpID4+CiAzOCA8PCAvUCAoMzIpID4+CiAzOSA8PCAvUCAoMzMpID4+CiA0MCA8PCAvUCAoMzQpID4+CiA0MSA8PCAvUCAoMzUpID4+CiA0MiA8PCAvUCAoMzYpID4+CiA0MyA8PCAvUCAoMzcpID4+Cl0gPj4KCmVuZG9iagp4cmVmCjAgNzU3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDM5NDQ1MyAwMDAwMCBuIAowMDAwMzk0ODQ3IDAwMDAwIG4gCjAwMDAzOTQ5NTIgMDAwMDAgbiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAwMTQ1IDAwMDAwIG4gCjAwMDAwMDI4MjMgMDAwMDAgbiAKMDAwMDAwMjg1NiAwMDAwMCBuIAowMDAwMTA2MTgzIDAwMDAwIG4gCjAwMDAzOTUxODcgMDAwMDAgbiAKMDAwMDAwMzgwNCAwMDAwMCBuIAowMDAwMDUyMzMxIDAwMDAwIG4gCjAwMDAxMDU1OTMgMDAwMDAgbiAKMDAwMDEwNTYxNCAwMDAwMCBuIAowMDAwMTA1NjM0IDAwMDAwIG4gCjAwMDAxMDU2NTYgMDAwMDAgbiAKMDAwMDEwNTY3OCAwMDAwMCBuIAowMDAwMTA2Mzc1IDAwMDAwIG4gCjAwMDAxMjEwOTggMDAwMDAgbiAKMDAwMDEwNjM5NSAwMDAwMCBuIAowMDAwMTEyNTY2IDAwMDAwIG4gCjAwMDAxMTk3NDYgMDAwMDAgbiAKMDAwMDExOTc2NyAwMDAwMCBuIAowMDAwMTE5Nzg4IDAwMDAwIG4gCjAwMDAxMTk4NzMgMDAwMDAgbiAKMDAwMDEyMTA3MSAwMDAwMCBuIAowMDAwMTIwMDExIDAwMDAwIG4gCjAwMDAxMjEzMDggMDAwMDAgbiAKMDAwMDEyNDAwNiAwMDAwMCBuIAowMDAwMTIxMzI4IDAwMDAwIG4gCjAwMDAxMjQxOTkgMDAwMDAgbiAKMDAwMDEyODM1NiAwMDAwMCBuIAowMDAwMTI0MjIwIDAwMDAwIG4gCjAwMDAxMjQzMjUgMDAwMDAgbiAKMDAwMDEyODI4NyAwMDAwMCBuIAowMDAwMTI0NDYyIDAwMDAwIG4gCjAwMDAxMjQ1NjggMDAwMDAgbiAKMDAwMDEyNDcwNSAwMDAwMCBuIAowMDAwMTI0ODIwIDAwMDAwIG4gCjAwMDAxMjQ5NTYgMDAwMDAgbiAKMDAwMDEyNTA4NCAwMDAwMCBuIAowMDAwMTI1MjIwIDAwMDAwIG4gCjAwMDAxMjUzNTYgMDAwMDAgbiAKMDAwMDEyNTQ4NSAwMDAwMCBuIAowMDAwMTI1NjIxIDAwMDAwIG4gCjAwMDAxMjU3NTcgMDAwMDAgbiAKMDAwMDEyODU2NiAwMDAwMCBuIAowMDAwMTI5NDQ2IDAwMDAwIG4gCjAwMDAxMjg1ODcgMDAwMDAgbiAKMDAwMDEyOTYzOSAwMDAwMCBuIAowMDAwMTMxMjk1IDAwMDAwIG4gCjAwMDAxMjk2NTkgMDAwMDAgbiAKMDAwMDEyOTc1NCAwMDAwMCBuIAowMDAwMTMxMjY4IDAwMDAwIG4gCjAwMDAxMjk4OTAgMDAwMDAgbiAKMDAwMDEzMTUwNSAwMDAwMCBuIAowMDAwMTMzMDA4IDAwMDAwIG4gCjAwMDAxMzE1MjYgMDAwMDAgbiAKMDAwMDEzMzIwMSAwMDAwMCBuIAowMDAwMTM0NTA0IDAwMDAwIG4gCjAwMDAxMzMyMjIgMDAwMDAgbiAKMDAwMDEzNDY5NyAwMDAwMCBuIAowMDAwMTM2MDc4IDAwMDAwIG4gCjAwMDAxMzQ3MTggMDAwMDAgbiAKMDAwMDEzNjI3MSAwMDAwMCBuIAowMDAwMTg0NTA5IDAwMDAwIG4gCjAwMDAxMzYyOTIgMDAwMDAgbiAKMDAwMDEzNjM3MCAwMDAwMCBuIAowMDAwMTgzNjk1IDAwMDAwIG4gCjAwMDAxMzY1MDYgMDAwMDAgbiAKMDAwMDEzNjY0NiAwMDAwMCBuIAowMDAwMTM2NzI0IDAwMDAwIG4gCjAwMDAxMzY4NjEgMDAwMDAgbiAKMDAwMDEzNzAwMSAwMDAwMCBuIAowMDAwMTM3MDc5IDAwMDAwIG4gCjAwMDAxMzcyMTcgMDAwMDAgbiAKMDAwMDEzNzM1NyAwMDAwMCBuIAowMDAwMTM3NDM3IDAwMDAwIG4gCjAwMDAxMzc1NzUgMDAwMDAgbiAKMDAwMDEzNzcxNSAwMDAwMCBuIAowMDAwMTM3Nzk1IDAwMDAwIG4gCjAwMDAxMzc5MzMgMDAwMDAgbiAKMDAwMDEzODA3MCAwMDAwMCBuIAowMDAwMTM4MTUwIDAwMDAwIG4gCjAwMDAxMzgyODggMDAwMDAgbiAKMDAwMDEzODQyNiAwMDAwMCBuIAowMDAwMTM4NTA2IDAwMDAwIG4gCjAwMDAxMzg2NDQgMDAwMDAgbiAKMDAwMDEzODc4NCAwMDAwMCBuIAowMDAwMTM4ODY0IDAwMDAwIG4gCjAwMDAxMzkwMDIgMDAwMDAgbiAKMDAwMDEzOTE0MiAwMDAwMCBuIAowMDAwMTM5MjIyIDAwMDAwIG4gCjAwMDAxMzkzNjAgMDAwMDAgbiAKMDAwMDEzOTUwMCAwMDAwMCBuIAowMDAwMTM5NTgwIDAwMDAwIG4gCjAwMDAxMzk3MTggMDAwMDAgbiAKMDAwMDEzOTg1OCAwMDAwMCBuIAowMDAwMTM5OTM4IDAwMDAwIG4gCjAwMDAxNDAwNzYgMDAwMDAgbiAKMDAwMDE0MDIxNiAwMDAwMCBuIAowMDAwMTQwMjk3IDAwMDAwIG4gCjAwMDAxNDA0MzcgMDAwMDAgbiAKMDAwMDE0MDU3OSAwMDAwMCBuIAowMDAwMTQwNjU5IDAwMDAwIG4gCjAwMDAxNDA3OTkgMDAwMDAgbiAKMDAwMDE0MDkzOSAwMDAwMCBuIAowMDAwMTQxMDE4IDAwMDAwIG4gCjAwMDAxNDExNTggMDAwMDAgbiAKMDAwMDE0MTMwMCAwMDAwMCBuIAowMDAwMTQxMzgxIDAwMDAwIG4gCjAwMDAxNDE1MjEgMDAwMDAgbiAKMDAwMDE0MTY2MyAwMDAwMCBuIAowMDAwMTQxNzQzIDAwMDAwIG4gCjAwMDAxNDE4ODMgMDAwMDAgbiAKMDAwMDE0MjAyNSAwMDAwMCBuIAowMDAwMTQyMTA2IDAwMDAwIG4gCjAwMDAxNDIyNDYgMDAwMDAgbiAKMDAwMDE0MjM4OCAwMDAwMCBuIAowMDAwMTQyNDY5IDAwMDAwIG4gCjAwMDAxNDI2MDkgMDAwMDAgbiAKMDAwMDE0Mjc0OSAwMDAwMCBuIAowMDAwMTQyODI4IDAwMDAwIG4gCjAwMDAxNDI5NjcgMDAwMDAgbiAKMDAwMDE0MzEwOSAwMDAwMCBuIAowMDAwMTQzMTg4IDAwMDAwIG4gCjAwMDAxNDMzMjggMDAwMDAgbiAKMDAwMDE0MzQ3MCAwMDAwMCBuIAowMDAwMTQzNTQ5IDAwMDAwIG4gCjAwMDAxNDM2ODkgMDAwMDAgbiAKMDAwMDE0MzgzMSAwMDAwMCBuIAowMDAwMTQzOTEwIDAwMDAwIG4gCjAwMDAxNDQwNTAgMDAwMDAgbiAKMDAwMDE0NDE5MCAwMDAwMCBuIAowMDAwMTQ0MjY5IDAwMDAwIG4gCjAwMDAxNDQ0MDkgMDAwMDAgbiAKMDAwMDE0NDU1MSAwMDAwMCBuIAowMDAwMTQ0NjMwIDAwMDAwIG4gCjAwMDAxNDQ3NjkgMDAwMDAgbiAKMDAwMDE0NDkxMSAwMDAwMCBuIAowMDAwMTQ0OTkwIDAwMDAwIG4gCjAwMDAxNDUxMzAgMDAwMDAgbiAKMDAwMDE0NTI3MiAwMDAwMCBuIAowMDAwMTQ1MzUxIDAwMDAwIG4gCjAwMDAxNDU0OTEgMDAwMDAgbiAKMDAwMDE0NTYzMyAwMDAwMCBuIAowMDAwMTQ1NzEyIDAwMDAwIG4gCjAwMDAxNDU4NTAgMDAwMDAgbiAKMDAwMDE0NTk5MiAwMDAwMCBuIAowMDAwMTQ2MDcxIDAwMDAwIG4gCjAwMDAxNDYyMTEgMDAwMDAgbiAKMDAwMDE0NjM1MSAwMDAwMCBuIAowMDAwMTQ2NDMyIDAwMDAwIG4gCjAwMDAxNDY1NzIgMDAwMDAgbiAKMDAwMDE0NjcxNCAwMDAwMCBuIAowMDAwMTQ2Nzk1IDAwMDAwIG4gCjAwMDAxNDY5MzUgMDAwMDAgbiAKMDAwMDE0NzA3NyAwMDAwMCBuIAowMDAwMTQ3MTU4IDAwMDAwIG4gCjAwMDAxNDcyOTggMDAwMDAgbiAKMDAwMDE0NzQ0MCAwMDAwMCBuIAowMDAwMTQ3NTIxIDAwMDAwIG4gCjAwMDAxNDc2NjEgMDAwMDAgbiAKMDAwMDE0NzgwMSAwMDAwMCBuIAowMDAwMTQ3ODgyIDAwMDAwIG4gCjAwMDAxNDgwMjIgMDAwMDAgbiAKMDAwMDE0ODE2NCAwMDAwMCBuIAowMDAwMTQ4MjQ1IDAwMDAwIG4gCjAwMDAxNDgzODUgMDAwMDAgbiAKMDAwMDE0ODUyNSAwMDAwMCBuIAowMDAwMTQ4NjA2IDAwMDAwIG4gCjAwMDAxNDg3NDYgMDAwMDAgbiAKMDAwMDE0ODg4OCAwMDAwMCBuIAowMDAwMTQ4OTY5IDAwMDAwIG4gCjAwMDAxNDkxMDkgMDAwMDAgbiAKMDAwMDE0OTI0OSAwMDAwMCBuIAowMDAwMTQ5MzMwIDAwMDAwIG4gCjAwMDAxNDk0NzAgMDAwMDAgbiAKMDAwMDE0OTYxMiAwMDAwMCBuIAowMDAwMTQ5NjkxIDAwMDAwIG4gCjAwMDAxNDk4MzEgMDAwMDAgbiAKMDAwMDE0OTk3MyAwMDAwMCBuIAowMDAwMTUwMDU0IDAwMDAwIG4gCjAwMDAxNTAxOTQgMDAwMDAgbiAKMDAwMDE1MDMzNCAwMDAwMCBuIAowMDAwMTUwNDE1IDAwMDAwIG4gCjAwMDAxNTA1NTUgMDAwMDAgbiAKMDAwMDE1MDY5NyAwMDAwMCBuIAowMDAwMTUwNzc4IDAwMDAwIG4gCjAwMDAxNTA5MTggMDAwMDAgbiAKMDAwMDE1MTA2MCAwMDAwMCBuIAowMDAwMTUxMTQxIDAwMDAwIG4gCjAwMDAxNTEyODEgMDAwMDAgbiAKMDAwMDE1MTQyMCAwMDAwMCBuIAowMDAwMTUxNTAxIDAwMDAwIG4gCjAwMDAxNTE2NDEgMDAwMDAgbiAKMDAwMDE1MTc4MyAwMDAwMCBuIAowMDAwMTUxODY0IDAwMDAwIG4gCjAwMDAxNTIwMDQgMDAwMDAgbiAKMDAwMDE1MjE0NiAwMDAwMCBuIAowMDAwMTUyMjI3IDAwMDAwIG4gCjAwMDAxNTIzNjcgMDAwMDAgbiAKMDAwMDE1MjUwOSAwMDAwMCBuIAowMDAwMTUyNTkwIDAwMDAwIG4gCjAwMDAxNTI3MjkgMDAwMDAgbiAKMDAwMDE1Mjg3MSAwMDAwMCBuIAowMDAwMTUyOTUxIDAwMDAwIG4gCjAwMDAxNTMwOTEgMDAwMDAgbiAKMDAwMDE1MzIzMyAwMDAwMCBuIAowMDAwMTUzMzE0IDAwMDAwIG4gCjAwMDAxNTM0NTQgMDAwMDAgbiAKMDAwMDE1MzU5NiAwMDAwMCBuIAowMDAwMTUzNjc1IDAwMDAwIG4gCjAwMDAxNTM4MTUgMDAwMDAgbiAKMDAwMDE1Mzk1NyAwMDAwMCBuIAowMDAwMTU0MDM4IDAwMDAwIG4gCjAwMDAxNTQxNzcgMDAwMDAgbiAKMDAwMDE1NDMxOCAwMDAwMCBuIAowMDAwMTU0Mzk5IDAwMDAwIG4gCjAwMDAxNTQ1MzcgMDAwMDAgbiAKMDAwMDE1NDY3NyAwMDAwMCBuIAowMDAwMTg0NzIwIDAwMDAwIG4gCjAwMDAxODYxMTkgMDAwMDAgbiAKMDAwMDE4NDc0MyAwMDAwMCBuIAowMDAwMTg2MzE0IDAwMDAwIG4gCjAwMDAxODgxNzUgMDAwMDAgbiAKMDAwMDE4NjMzNiAwMDAwMCBuIAowMDAwMTg4MzcwIDAwMDAwIG4gCjAwMDAxOTAyODcgMDAwMDAgbiAKMDAwMDE4ODM5MiAwMDAwMCBuIAowMDAwMTkwNDgyIDAwMDAwIG4gCjAwMDAxOTIxNzMgMDAwMDAgbiAKMDAwMDE5MDUwNCAwMDAwMCBuIAowMDAwMTkyMzY4IDAwMDAwIG4gCjAwMDAxOTQxOTEgMDAwMDAgbiAKMDAwMDE5MjM5MCAwMDAwMCBuIAowMDAwMTk0Mzg2IDAwMDAwIG4gCjAwMDAyMzQwMDUgMDAwMDAgbiAKMDAwMDE5NDQwOCAwMDAwMCBuIAowMDAwMTk0NDg5IDAwMDAwIG4gCjAwMDAyMzMxMjAgMDAwMDAgbiAKMDAwMDE5NDYyOSAwMDAwMCBuIAowMDAwMTk0NzcxIDAwMDAwIG4gCjAwMDAxOTQ4NTIgMDAwMDAgbiAKMDAwMDE5NDk5MiAwMDAwMCBuIAowMDAwMTk1MTM0IDAwMDAwIG4gCjAwMDAxOTUyMTUgMDAwMDAgbiAKMDAwMDE5NTM1NSAwMDAwMCBuIAowMDAwMTk1NDk3IDAwMDAwIG4gCjAwMDAxOTU1NzggMDAwMDAgbiAKMDAwMDE5NTcxOCAwMDAwMCBuIAowMDAwMTk1ODYwIDAwMDAwIG4gCjAwMDAxOTU5NDEgMDAwMDAgbiAKMDAwMDE5NjA4MSAwMDAwMCBuIAowMDAwMTk2MjIxIDAwMDAwIG4gCjAwMDAxOTYzMDIgMDAwMDAgbiAKMDAwMDE5NjQ0MiAwMDAwMCBuIAowMDAwMTk2NTg0IDAwMDAwIG4gCjAwMDAxOTY2NjUgMDAwMDAgbiAKMDAwMDE5NjgwNSAwMDAwMCBuIAowMDAwMTk2OTQ3IDAwMDAwIG4gCjAwMDAxOTcwMjcgMDAwMDAgbiAKMDAwMDE5NzE2NyAwMDAwMCBuIAowMDAwMTk3MzA5IDAwMDAwIG4gCjAwMDAxOTczOTEgMDAwMDAgbiAKMDAwMDE5NzUzMSAwMDAwMCBuIAowMDAwMTk3NjczIDAwMDAwIG4gCjAwMDAxOTc3NTUgMDAwMDAgbiAKMDAwMDE5Nzg5NSAwMDAwMCBuIAowMDAwMTk4MDM3IDAwMDAwIG4gCjAwMDAxOTgxMTkgMDAwMDAgbiAKMDAwMDE5ODI1OSAwMDAwMCBuIAowMDAwMTk4NDAxIDAwMDAwIG4gCjAwMDAxOTg0ODMgMDAwMDAgbiAKMDAwMDE5ODYyMyAwMDAwMCBuIAowMDAwMTk4NzY1IDAwMDAwIG4gCjAwMDAxOTg4NDcgMDAwMDAgbiAKMDAwMDE5ODk4NyAwMDAwMCBuIAowMDAwMTk5MTI5IDAwMDAwIG4gCjAwMDAxOTkyMTEgMDAwMDAgbiAKMDAwMDE5OTM1MSAwMDAwMCBuIAowMDAwMTk5NDkzIDAwMDAwIG4gCjAwMDAxOTk1NzUgMDAwMDAgbiAKMDAwMDE5OTcxNSAwMDAwMCBuIAowMDAwMTk5ODU3IDAwMDAwIG4gCjAwMDAxOTk5MzkgMDAwMDAgbiAKMDAwMDIwMDA3OSAwMDAwMCBuIAowMDAwMjAwMjIxIDAwMDAwIG4gCjAwMDAyMDAzMDIgMDAwMDAgbiAKMDAwMDIwMDQ0MiAwMDAwMCBuIAowMDAwMjAwNTg0IDAwMDAwIG4gCjAwMDAyMDA2NjQgMDAwMDAgbiAKMDAwMDIwMDgwNCAwMDAwMCBuIAowMDAwMjAwOTQ2IDAwMDAwIG4gCjAwMDAyMDEwMjggMDAwMDAgbiAKMDAwMDIwMTE2OCAwMDAwMCBuIAowMDAwMjAxMzEwIDAwMDAwIG4gCjAwMDAyMDEzOTIgMDAwMDAgbiAKMDAwMDIwMTUzMiAwMDAwMCBuIAowMDAwMjAxNjc0IDAwMDAwIG4gCjAwMDAyMDE3NTYgMDAwMDAgbiAKMDAwMDIwMTg5NiAwMDAwMCBuIAowMDAwMjAyMDM4IDAwMDAwIG4gCjAwMDAyMDIxMjAgMDAwMDAgbiAKMDAwMDIwMjI2MCAwMDAwMCBuIAowMDAwMjAyNDAyIDAwMDAwIG4gCjAwMDAyMDI0ODQgMDAwMDAgbiAKMDAwMDIwMjYyNCAwMDAwMCBuIAowMDAwMjAyNzY2IDAwMDAwIG4gCjAwMDAyMDI4NDggMDAwMDAgbiAKMDAwMDIwMjk4OCAwMDAwMCBuIAowMDAwMjAzMTMwIDAwMDAwIG4gCjAwMDAyMDMyMTIgMDAwMDAgbiAKMDAwMDIwMzM1MiAwMDAwMCBuIAowMDAwMjAzNDk0IDAwMDAwIG4gCjAwMDAyMDM1NzYgMDAwMDAgbiAKMDAwMDIwMzcxNiAwMDAwMCBuIAowMDAwMjAzODU4IDAwMDAwIG4gCjAwMDAyMDM5NDAgMDAwMDAgbiAKMDAwMDIwNDA4MCAwMDAwMCBuIAowMDAwMjA0MjIyIDAwMDAwIG4gCjAwMDAyMDQzMDIgMDAwMDAgbiAKMDAwMDIwNDQ0MSAwMDAwMCBuIAowMDAwMjA0NTgzIDAwMDAwIG4gCjAwMDAyMDQ2NjQgMDAwMDAgbiAKMDAwMDIwNDgwNCAwMDAwMCBuIAowMDAwMjA0OTQ2IDAwMDAwIG4gCjAwMDAyMDUwMjcgMDAwMDAgbiAKMDAwMDIwNTE2NyAwMDAwMCBuIAowMDAwMjA1MzA5IDAwMDAwIG4gCjAwMDAyMDUzOTAgMDAwMDAgbiAKMDAwMDIwNTUzMCAwMDAwMCBuIAowMDAwMjA1NjcyIDAwMDAwIG4gCjAwMDAyMDU3NTMgMDAwMDAgbiAKMDAwMDIwNTg5MyAwMDAwMCBuIAowMDAwMjA2MDM1IDAwMDAwIG4gCjAwMDAyMDYxMTUgMDAwMDAgbiAKMDAwMDIwNjI1NCAwMDAwMCBuIAowMDAwMjA2Mzk2IDAwMDAwIG4gCjAwMDAyMDY0NzcgMDAwMDAgbiAKMDAwMDIwNjYxNyAwMDAwMCBuIAowMDAwMjA2NzU3IDAwMDAwIG4gCjAwMDAyMDY4MzggMDAwMDAgbiAKMDAwMDIwNjk3OCAwMDAwMCBuIAowMDAwMjA3MTE4IDAwMDAwIG4gCjAwMDAyMDcxOTkgMDAwMDAgbiAKMDAwMDIwNzMzOSAwMDAwMCBuIAowMDAwMjA3NDc5IDAwMDAwIG4gCjAwMDAyMDc1NjAgMDAwMDAgbiAKMDAwMDIwNzcwMCAwMDAwMCBuIAowMDAwMjA3ODQyIDAwMDAwIG4gCjAwMDAyMDc5MjIgMDAwMDAgbiAKMDAwMDIwODA2MiAwMDAwMCBuIAowMDAwMjA4MjA0IDAwMDAwIG4gCjAwMDAyMDgyODYgMDAwMDAgbiAKMDAwMDIwODQyNiAwMDAwMCBuIAowMDAwMjA4NTY4IDAwMDAwIG4gCjAwMDAyMDg2NTAgMDAwMDAgbiAKMDAwMDIwODc5MCAwMDAwMCBuIAowMDAwMjA4OTMwIDAwMDAwIG4gCjAwMDAyMDkwMTIgMDAwMDAgbiAKMDAwMDIwOTE1MiAwMDAwMCBuIAowMDAwMjA5Mjk0IDAwMDAwIG4gCjAwMDAyMDkzNzYgMDAwMDAgbiAKMDAwMDIwOTUxNiAwMDAwMCBuIAowMDAwMjA5NjU4IDAwMDAwIG4gCjAwMDAyMDk3NDAgMDAwMDAgbiAKMDAwMDIwOTg4MCAwMDAwMCBuIAowMDAwMjEwMDIyIDAwMDAwIG4gCjAwMDAyMTAxMDQgMDAwMDAgbiAKMDAwMDIxMDI0NCAwMDAwMCBuIAowMDAwMjEwMzg0IDAwMDAwIG4gCjAwMDAyMTA0NjYgMDAwMDAgbiAKMDAwMDIxMDYwNiAwMDAwMCBuIAowMDAwMjEwNzQ4IDAwMDAwIG4gCjAwMDAyMTA4MzAgMDAwMDAgbiAKMDAwMDIxMDk3MCAwMDAwMCBuIAowMDAwMjExMTEyIDAwMDAwIG4gCjAwMDAyMTExOTQgMDAwMDAgbiAKMDAwMDIxMTMzNCAwMDAwMCBuIAowMDAwMjExNDc2IDAwMDAwIG4gCjAwMDAyMTE1NTYgMDAwMDAgbiAKMDAwMDIxMTY5NiAwMDAwMCBuIAowMDAwMjExODM4IDAwMDAwIG4gCjAwMDAyMTE5MjAgMDAwMDAgbiAKMDAwMDIxMjA2MCAwMDAwMCBuIAowMDAwMjEyMjAyIDAwMDAwIG4gCjAwMDAyMTIyODMgMDAwMDAgbiAKMDAwMDIxMjQyMyAwMDAwMCBuIAowMDAwMjEyNTYyIDAwMDAwIG4gCjAwMDAyMTI2NDQgMDAwMDAgbiAKMDAwMDIxMjc4NCAwMDAwMCBuIAowMDAwMjEyOTI2IDAwMDAwIG4gCjAwMDAyMTMwMDggMDAwMDAgbiAKMDAwMDIxMzE0NyAwMDAwMCBuIAowMDAwMjEzMjg4IDAwMDAwIG4gCjAwMDAyMTMzNzAgMDAwMDAgbiAKMDAwMDIxMzUwOCAwMDAwMCBuIAowMDAwMjEzNjQ4IDAwMDAwIG4gCjAwMDAyMTM3MzAgMDAwMDAgbiAKMDAwMDIxMzg2OCAwMDAwMCBuIAowMDAwMjE0MDA4IDAwMDAwIG4gCjAwMDAyMzQyMTggMDAwMDAgbiAKMDAwMDIzNTk0NyAwMDAwMCBuIAowMDAwMjM0MjQxIDAwMDAwIG4gCjAwMDAyMzYxNDIgMDAwMDAgbiAKMDAwMDIzNzc3MyAwMDAwMCBuIAowMDAwMjM2MTY0IDAwMDAwIG4gCjAwMDAyMzc5NjggMDAwMDAgbiAKMDAwMDIzOTcyOCAwMDAwMCBuIAowMDAwMjM3OTkwIDAwMDAwIG4gCjAwMDAyMzk5MjMgMDAwMDAgbiAKMDAwMDI0MTQ5MyAwMDAwMCBuIAowMDAwMjM5OTQ1IDAwMDAwIG4gCjAwMDAyNDE2ODggMDAwMDAgbiAKMDAwMDI0MzU3MiAwMDAwMCBuIAowMDAwMjQxNzEwIDAwMDAwIG4gCjAwMDAyNDM3NjcgMDAwMDAgbiAKMDAwMDI0NjI3MyAwMDAwMCBuIAowMDAwMjQzNzg5IDAwMDAwIG4gCjAwMDAyNDY0NjggMDAwMDAgbiAKMDAwMDI4MzY5NyAwMDAwMCBuIAowMDAwMjQ2NDkwIDAwMDAwIG4gCjAwMDAyNDY1NzEgMDAwMDAgbiAKMDAwMDI4MjgxMiAwMDAwMCBuIAowMDAwMjQ2NzExIDAwMDAwIG4gCjAwMDAyNDY4NTMgMDAwMDAgbiAKMDAwMDI0NjkzNSAwMDAwMCBuIAowMDAwMjQ3MDc1IDAwMDAwIG4gCjAwMDAyNDcyMTcgMDAwMDAgbiAKMDAwMDI0NzI5OSAwMDAwMCBuIAowMDAwMjQ3NDM5IDAwMDAwIG4gCjAwMDAyNDc1ODEgMDAwMDAgbiAKMDAwMDI0NzY2MSAwMDAwMCBuIAowMDAwMjQ3ODAxIDAwMDAwIG4gCjAwMDAyNDc5NDMgMDAwMDAgbiAKMDAwMDI0ODAyNSAwMDAwMCBuIAowMDAwMjQ4MTY1IDAwMDAwIG4gCjAwMDAyNDgzMDUgMDAwMDAgbiAKMDAwMDI0ODM4NyAwMDAwMCBuIAowMDAwMjQ4NTI3IDAwMDAwIG4gCjAwMDAyNDg2NjkgMDAwMDAgbiAKMDAwMDI0ODc1MSAwMDAwMCBuIAowMDAwMjQ4ODkxIDAwMDAwIG4gCjAwMDAyNDkwMzMgMDAwMDAgbiAKMDAwMDI0OTExNSAwMDAwMCBuIAowMDAwMjQ5MjU1IDAwMDAwIG4gCjAwMDAyNDkzOTUgMDAwMDAgbiAKMDAwMDI0OTQ3NiAwMDAwMCBuIAowMDAwMjQ5NjE2IDAwMDAwIG4gCjAwMDAyNDk3NTggMDAwMDAgbiAKMDAwMDI0OTg0MCAwMDAwMCBuIAowMDAwMjQ5OTgwIDAwMDAwIG4gCjAwMDAyNTAxMTkgMDAwMDAgbiAKMDAwMDI1MDIwMSAwMDAwMCBuIAowMDAwMjUwMzQxIDAwMDAwIG4gCjAwMDAyNTA0ODMgMDAwMDAgbiAKMDAwMDI1MDU2NSAwMDAwMCBuIAowMDAwMjUwNzA1IDAwMDAwIG4gCjAwMDAyNTA4NDcgMDAwMDAgbiAKMDAwMDI1MDkyOSAwMDAwMCBuIAowMDAwMjUxMDY3IDAwMDAwIG4gCjAwMDAyNTEyMDkgMDAwMDAgbiAKMDAwMDI1MTI4OSAwMDAwMCBuIAowMDAwMjUxNDI5IDAwMDAwIG4gCjAwMDAyNTE1NzEgMDAwMDAgbiAKMDAwMDI1MTY1MyAwMDAwMCBuIAowMDAwMjUxNzkzIDAwMDAwIG4gCjAwMDAyNTE5MzUgMDAwMDAgbiAKMDAwMDI1MjAxNyAwMDAwMCBuIAowMDAwMjUyMTU3IDAwMDAwIG4gCjAwMDAyNTIyOTkgMDAwMDAgbiAKMDAwMDI1MjM4MSAwMDAwMCBuIAowMDAwMjUyNTIwIDAwMDAwIG4gCjAwMDAyNTI2NjIgMDAwMDAgbiAKMDAwMDI1Mjc0NCAwMDAwMCBuIAowMDAwMjUyODg0IDAwMDAwIG4gCjAwMDAyNTMwMjYgMDAwMDAgbiAKMDAwMDI1MzEwNyAwMDAwMCBuIAowMDAwMjUzMjQ3IDAwMDAwIG4gCjAwMDAyNTMzODkgMDAwMDAgbiAKMDAwMDI1MzQ3MSAwMDAwMCBuIAowMDAwMjUzNjExIDAwMDAwIG4gCjAwMDAyNTM3NTMgMDAwMDAgbiAKMDAwMDI1MzgzNSAwMDAwMCBuIAowMDAwMjUzOTc1IDAwMDAwIG4gCjAwMDAyNTQxMTcgMDAwMDAgbiAKMDAwMDI1NDE5OSAwMDAwMCBuIAowMDAwMjU0MzM5IDAwMDAwIG4gCjAwMDAyNTQ0ODEgMDAwMDAgbiAKMDAwMDI1NDU2MyAwMDAwMCBuIAowMDAwMjU0NzAzIDAwMDAwIG4gCjAwMDAyNTQ4NDUgMDAwMDAgbiAKMDAwMDI1NDkyNSAwMDAwMCBuIAowMDAwMjU1MDY1IDAwMDAwIG4gCjAwMDAyNTUyMDUgMDAwMDAgbiAKMDAwMDI1NTI4NyAwMDAwMCBuIAowMDAwMjU1NDI3IDAwMDAwIG4gCjAwMDAyNTU1NjkgMDAwMDAgbiAKMDAwMDI1NTY1MSAwMDAwMCBuIAowMDAwMjU1NzkxIDAwMDAwIG4gCjAwMDAyNTU5MzMgMDAwMDAgbiAKMDAwMDI1NjAxNSAwMDAwMCBuIAowMDAwMjU2MTU1IDAwMDAwIG4gCjAwMDAyNTYyOTQgMDAwMDAgbiAKMDAwMDI1NjM3NiAwMDAwMCBuIAowMDAwMjU2NTE2IDAwMDAwIG4gCjAwMDAyNTY2NTggMDAwMDAgbiAKMDAwMDI1NjczOSAwMDAwMCBuIAowMDAwMjU2ODc5IDAwMDAwIG4gCjAwMDAyNTcwMTggMDAwMDAgbiAKMDAwMDI1NzEwMCAwMDAwMCBuIAowMDAwMjU3MjQwIDAwMDAwIG4gCjAwMDAyNTczODIgMDAwMDAgbiAKMDAwMDI1NzQ2NCAwMDAwMCBuIAowMDAwMjU3NjA0IDAwMDAwIG4gCjAwMDAyNTc3NDYgMDAwMDAgbiAKMDAwMDI1NzgyOCAwMDAwMCBuIAowMDAwMjU3OTY4IDAwMDAwIG4gCjAwMDAyNTgxMDggMDAwMDAgbiAKMDAwMDI1ODE5MCAwMDAwMCBuIAowMDAwMjU4MzMwIDAwMDAwIG4gCjAwMDAyNTg0NzIgMDAwMDAgbiAKMDAwMDI1ODU1MiAwMDAwMCBuIAowMDAwMjU4NjkyIDAwMDAwIG4gCjAwMDAyNTg4MzQgMDAwMDAgbiAKMDAwMDI1ODkxNiAwMDAwMCBuIAowMDAwMjU5MDU2IDAwMDAwIG4gCjAwMDAyNTkxOTggMDAwMDAgbiAKMDAwMDI1OTI4MCAwMDAwMCBuIAowMDAwMjU5NDIwIDAwMDAwIG4gCjAwMDAyNTk1NjIgMDAwMDAgbiAKMDAwMDI1OTY0NCAwMDAwMCBuIAowMDAwMjU5Nzg0IDAwMDAwIG4gCjAwMDAyNTk5MjYgMDAwMDAgbiAKMDAwMDI2MDAwOCAwMDAwMCBuIAowMDAwMjYwMTQ4IDAwMDAwIG4gCjAwMDAyNjAyOTAgMDAwMDAgbiAKMDAwMDI2MDM3MSAwMDAwMCBuIAowMDAwMjYwNTEwIDAwMDAwIG4gCjAwMDAyNjA2NTIgMDAwMDAgbiAKMDAwMDI2MDczNCAwMDAwMCBuIAowMDAwMjYwODc0IDAwMDAwIG4gCjAwMDAyNjEwMTMgMDAwMDAgbiAKMDAwMDI2MTA5NSAwMDAwMCBuIAowMDAwMjYxMjM1IDAwMDAwIG4gCjAwMDAyNjEzNzcgMDAwMDAgbiAKMDAwMDI2MTQ1OSAwMDAwMCBuIAowMDAwMjYxNTk5IDAwMDAwIG4gCjAwMDAyNjE3MzkgMDAwMDAgbiAKMDAwMDI2MTgyMSAwMDAwMCBuIAowMDAwMjYxOTYxIDAwMDAwIG4gCjAwMDAyNjIxMDMgMDAwMDAgbiAKMDAwMDI2MjE4MyAwMDAwMCBuIAowMDAwMjYyMzIzIDAwMDAwIG4gCjAwMDAyNjI0NjUgMDAwMDAgbiAKMDAwMDI2MjU0NyAwMDAwMCBuIAowMDAwMjYyNjg2IDAwMDAwIG4gCjAwMDAyNjI4MjggMDAwMDAgbiAKMDAwMDI2MjkxMCAwMDAwMCBuIAowMDAwMjYzMDUwIDAwMDAwIG4gCjAwMDAyNjMxOTIgMDAwMDAgbiAKMDAwMDI2MzI3NCAwMDAwMCBuIAowMDAwMjYzNDE0IDAwMDAwIG4gCjAwMDAyNjM1NTYgMDAwMDAgbiAKMDAwMDI2MzYzOCAwMDAwMCBuIAowMDAwMjYzNzc4IDAwMDAwIG4gCjAwMDAyNjM5MjAgMDAwMDAgbiAKMDAwMDI2NDAwMSAwMDAwMCBuIAowMDAwMjY0MTQxIDAwMDAwIG4gCjAwMDAyNjQyODMgMDAwMDAgbiAKMDAwMDI2NDM2NSAwMDAwMCBuIAowMDAwMjY0NTA1IDAwMDAwIG4gCjAwMDAyNjQ2NDUgMDAwMDAgbiAKMDAwMDI2NDcyNyAwMDAwMCBuIAowMDAwMjY0ODY3IDAwMDAwIG4gCjAwMDAyNjUwMDkgMDAwMDAgbiAKMDAwMDI2NTA5MSAwMDAwMCBuIAowMDAwMjY1MjMwIDAwMDAwIG4gCjAwMDAyNjUzNjkgMDAwMDAgbiAKMDAwMDI2NTQ0OSAwMDAwMCBuIAowMDAwMjY1NTg3IDAwMDAwIG4gCjAwMDAyNjU3MjcgMDAwMDAgbiAKMDAwMDI2NTgwOSAwMDAwMCBuIAowMDAwMjY1OTQ3IDAwMDAwIG4gCjAwMDAyNjYwODUgMDAwMDAgbiAKMDAwMDI4MzkxMCAwMDAwMCBuIAowMDAwMjg1NDMxIDAwMDAwIG4gCjAwMDAyODM5MzMgMDAwMDAgbiAKMDAwMDI4NDAxNSAwMDAwMCBuIAowMDAwMjg1Mzk0IDAwMDAwIG4gCjAwMDAyODQxNTQgMDAwMDAgbiAKMDAwMDI4NDI5NiAwMDAwMCBuIAowMDAwMjg1NjQ0IDAwMDAwIG4gCjAwMDAyODY2NTMgMDAwMDAgbiAKMDAwMDI4NTY2NiAwMDAwMCBuIAowMDAwMjg2ODQ4IDAwMDAwIG4gCjAwMDAyODg4MzUgMDAwMDAgbiAKMDAwMDI4Njg2OSAwMDAwMCBuIAowMDAwMjg5MDMwIDAwMDAwIG4gCjAwMDAyOTEwMjQgMDAwMDAgbiAKMDAwMDI4OTA1MiAwMDAwMCBuIAowMDAwMjkxMjE5IDAwMDAwIG4gCjAwMDAyOTI1NjIgMDAwMDAgbiAKMDAwMDI5MTI0MSAwMDAwMCBuIAowMDAwMjkyNzU3IDAwMDAwIG4gCjAwMDAyOTM5ODQgMDAwMDAgbiAKMDAwMDI5Mjc3OSAwMDAwMCBuIAowMDAwMjk0MTc5IDAwMDAwIG4gCjAwMDAyOTU0NTYgMDAwMDAgbiAKMDAwMDI5NDIwMSAwMDAwMCBuIAowMDAwMjk1NjUxIDAwMDAwIG4gCjAwMDAyOTcwNjggMDAwMDAgbiAKMDAwMDI5NTY3MyAwMDAwMCBuIAowMDAwMjk3MjYzIDAwMDAwIG4gCjAwMDAyOTgyNjkgMDAwMDAgbiAKMDAwMDI5NzI4NSAwMDAwMCBuIAowMDAwMjk4NDY0IDAwMDAwIG4gCjAwMDAzMDAyMzAgMDAwMDAgbiAKMDAwMDI5ODQ4NSAwMDAwMCBuIAowMDAwMzAwNDI1IDAwMDAwIG4gCjAwMDAzMDE0MjEgMDAwMDAgbiAKMDAwMDMwMDQ0NyAwMDAwMCBuIAowMDAwMzAxNjE2IDAwMDAwIG4gCjAwMDAzMDQ2MjUgMDAwMDAgbiAKMDAwMDMwMTYzNyAwMDAwMCBuIAowMDAwMzAxNzU5IDAwMDAwIG4gCjAwMDAzMDQ1OTYgMDAwMDAgbiAKMDAwMDMwMTg5NSAwMDAwMCBuIAowMDAwMzA0ODM4IDAwMDAwIG4gCjAwMDAzMDcwMTEgMDAwMDAgbiAKMDAwMDMwNDg2MCAwMDAwMCBuIAowMDAwMzA0OTc1IDAwMDAwIG4gCjAwMDAzMDY5NzQgMDAwMDAgbiAKMDAwMDMwNTExNCAwMDAwMCBuIAowMDAwMzA1MjEzIDAwMDAwIG4gCjAwMDAzMDUzNTIgMDAwMDAgbiAKMDAwMDMwNzIyNCAwMDAwMCBuIAowMDAwMzA5NTY5IDAwMDAwIG4gCjAwMDAzMDcyNDYgMDAwMDAgbiAKMDAwMDMwOTc2NCAwMDAwMCBuIAowMDAwMzEyMDQ5IDAwMDAwIG4gCjAwMDAzMDk3ODYgMDAwMDAgbiAKMDAwMDMwOTg2NiAwMDAwMCBuIAowMDAwMzEyMDA0IDAwMDAwIG4gCjAwMDAzMTAwMDggMDAwMDAgbiAKMDAwMDMxMDA4OCAwMDAwMCBuIAowMDAwMzEwMjI3IDAwMDAwIG4gCjAwMDAzMTAzNjUgMDAwMDAgbiAKMDAwMDMxMjI2MiAwMDAwMCBuIAowMDAwMzE0MzYwIDAwMDAwIG4gCjAwMDAzMTIyODQgMDAwMDAgbiAKMDAwMDMxNDU1NSAwMDAwMCBuIAowMDAwMzE2MzE5IDAwMDAwIG4gCjAwMDAzMTQ1NzcgMDAwMDAgbiAKMDAwMDMxNjUxNCAwMDAwMCBuIAowMDAwMzE4MjE0IDAwMDAwIG4gCjAwMDAzMTY1MzYgMDAwMDAgbiAKMDAwMDMxODQwOSAwMDAwMCBuIAowMDAwMzIwNTg4IDAwMDAwIG4gCjAwMDAzMTg0MzEgMDAwMDAgbiAKMDAwMDMyMDc4MyAwMDAwMCBuIAowMDAwMzQxNTkwIDAwMDAwIG4gCjAwMDAzMjA4MDUgMDAwMDAgbiAKMDAwMDMyMDg4NyAwMDAwMCBuIAowMDAwMzQxMjMzIDAwMDAwIG4gCjAwMDAzMjEwMjcgMDAwMDAgbiAKMDAwMDMyMTE2OSAwMDAwMCBuIAowMDAwMzIxMjUwIDAwMDAwIG4gCjAwMDAzMjEzOTAgMDAwMDAgbiAKMDAwMDMyMTUzMCAwMDAwMCBuIAowMDAwMzIxNjEyIDAwMDAwIG4gCjAwMDAzMjE3NTEgMDAwMDAgbiAKMDAwMDMyMTg5MyAwMDAwMCBuIAowMDAwMzIxOTc1IDAwMDAwIG4gCjAwMDAzMjIxMTUgMDAwMDAgbiAKMDAwMDMyMjI1NyAwMDAwMCBuIAowMDAwMzIyMzM5IDAwMDAwIG4gCjAwMDAzMjI0NzkgMDAwMDAgbiAKMDAwMDMyMjYyMSAwMDAwMCBuIAowMDAwMzIyNzAxIDAwMDAwIG4gCjAwMDAzMjI4NDAgMDAwMDAgbiAKMDAwMDMyMjk4MiAwMDAwMCBuIAowMDAwMzIzMDY0IDAwMDAwIG4gCjAwMDAzMjMyMDQgMDAwMDAgbiAKMDAwMDMyMzM0NiAwMDAwMCBuIAowMDAwMzIzNDI2IDAwMDAwIG4gCjAwMDAzMjM1NjYgMDAwMDAgbiAKMDAwMDMyMzcwOCAwMDAwMCBuIAowMDAwMzIzNzg4IDAwMDAwIG4gCjAwMDAzMjM5MjggMDAwMDAgbiAKMDAwMDMyNDA3MCAwMDAwMCBuIAowMDAwMzI0MTUwIDAwMDAwIG4gCjAwMDAzMjQyODkgMDAwMDAgbiAKMDAwMDMyNDQzMSAwMDAwMCBuIAowMDAwMzI0NTExIDAwMDAwIG4gCjAwMDAzMjQ2NTAgMDAwMDAgbiAKMDAwMDMyNDc5MCAwMDAwMCBuIAowMDAwMzI0ODcwIDAwMDAwIG4gCjAwMDAzMjUwMDkgMDAwMDAgbiAKMDAwMDMyNTE1MSAwMDAwMCBuIAowMDAwMzI1MjMxIDAwMDAwIG4gCjAwMDAzMjUzNzEgMDAwMDAgbiAKMDAwMDMyNTUxMCAwMDAwMCBuIAowMDAwMzI1NTkwIDAwMDAwIG4gCjAwMDAzMjU3MjggMDAwMDAgbiAKMDAwMDMyNTg3MCAwMDAwMCBuIAowMDAwMzI2MDA5IDAwMDAwIG4gCjAwMDAzMjYxNTEgMDAwMDAgbiAKMDAwMDMyNjIzMSAwMDAwMCBuIAowMDAwMzI2MzcxIDAwMDAwIG4gCjAwMDAzMjY1MTEgMDAwMDAgbiAKMDAwMDMyNjY1MCAwMDAwMCBuIAowMDAwMzI2NzkyIDAwMDAwIG4gCjAwMDAzMjY4NzMgMDAwMDAgbiAKMDAwMDMyNzAxMyAwMDAwMCBuIAowMDAwMzI3MTU1IDAwMDAwIG4gCjAwMDAzMjcyMzYgMDAwMDAgbiAKMDAwMDMyNzM3NiAwMDAwMCBuIAowMDAwMzI3NTE4IDAwMDAwIG4gCjAwMDAzMjc2MDAgMDAwMDAgbiAKMDAwMDMyNzc0MCAwMDAwMCBuIAowMDAwMzI3ODgyIDAwMDAwIG4gCjAwMDAzMjc5NjIgMDAwMDAgbiAKMDAwMDMyODEwMiAwMDAwMCBuIAowMDAwMzI4MjQ0IDAwMDAwIG4gCjAwMDAzNDE4MDMgMDAwMDAgbiAKMDAwMDM0MjgwOSAwMDAwMCBuIAowMDAwMzQxODI2IDAwMDAwIG4gCjAwMDAzNDMwMDQgMDAwMDAgbiAKMDAwMDM0MzAyNSAwMDAwMCBuIAowMDAwMzQzMjg4IDAwMDAwIG4gCjAwMDAzNTcxODEgMDAwMDAgbiAKMDAwMDM1NzI4MSAwMDAwMCBuIAowMDAwMzU3NDQ2IDAwMDAwIG4gCjAwMDAzNTc5ODEgMDAwMDAgbiAKMDAwMDM1ODYyMiAwMDAwMCBuIAowMDAwMzU4ODgzIDAwMDAwIG4gCjAwMDAzNzU5OTIgMDAwMDAgbiAKMDAwMDM3NjA5NSAwMDAwMCBuIAowMDAwMzc2MjU2IDAwMDAwIG4gCjAwMDAzNzY4MTEgMDAwMDAgbiAKMDAwMDM3NzQ3MSAwMDAwMCBuIAowMDAwMzc3NzM3IDAwMDAwIG4gCjAwMDAzOTI4OTMgMDAwMDAgbiAKMDAwMDM5Mjk5MSAwMDAwMCBuIAowMDAwMzkzMTU3IDAwMDAwIG4gCjAwMDAzOTM2NTkgMDAwMDAgbiAKMDAwMDM5NDI2MSAwMDAwMCBuIAowMDAwMzk0Mjg0IDAwMDAwIG4gCjAwMDAzOTQzMDQgMDAwMDAgbiAKMDAwMDM5NDMyNSAwMDAwMCBuIAowMDAwMzk0MzQ4IDAwMDAwIG4gCjAwMDAzOTQzNjggMDAwMDAgbiAKMDAwMDM5NDM4OSAwMDAwMCBuIAowMDAwMzk0NDEyIDAwMDAwIG4gCjAwMDAzOTQ0MzIgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9Sb290IDIgMCBSCiAgL0luZm8gNCAwIFIKICAvSUQgWzxDM0Y5NkE4NDc0MTYwNTk3RDRDRUI1RjhDQ0ZDQkRBQT4gPEMzRjk2QTg0NzQxNjA1OTdENENFQjVGOENDRkNCREFBPl0KICAvU2l6ZSA3NTcKPj4Kc3RhcnR4cmVmCjM5NTk5MAolJUVPRgo=
en
de
internal
external
public
Misc
Misc Comment
1
current_timestamp
1
current_timestamp
1
0
Created
1
current_timestamp
1
current_timestamp
1