FAQ
2.1.6
OTRS AG
https://otrs.com/
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
Build for FAQ 2.1.6.
Build for FAQ 2.1.5.
Build for FAQ 2.1.4.
Build for FAQ 2.1.3.
Build for FAQ 2.1.2
Build for FAQ 2.1.1
Build for FAQ 2.1.0 rc1.
Build for FAQ 2.1.0 beta3.
Build for FAQ 2.1.0 beta2.
Build for FAQ 2.1.0 beta1.
First version for OTRS 3.1.x.
The FAQ/knowledge base.
Die FAQ-/Wissensdatenbank.
3.1.x
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to install the OTRS package FAQ.<br/>
<br/>
<br/>
<strong>ATTENTION</strong>
<br/>
<br/>
Make sure your database accepts packages over 5 MB in size. A MySQL database for example accepts packages up to 1 MB by default. In this case, the value for max_allowed_packet must be increased. The recommended maximum size accepted is 20 MB.<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/>
<strong>ACHTUNG</strong>
<br/>
<br/>
Vergewissern Sie sich, dass ihre Datenbank Pakete mit einer Größe von mehr als 5 MB akzeptiert. Eine MySQL Datenbank akzeptiert beispielsweise standardmäßig Pakete mit einer Größe von maximal 1 MB. In diesem Fall muss der Wert für max_allowed_packet erhöht werden. Empfohlen werden 20 MB.<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/>
<strong>ATENCIÓN</strong>
<br/>
<br/>
Por favor asegúrese que su base de datos acepte paquetes de más de 5 MB de tamaño. Por ejemplo una base de datos de MySQL acepta paquetes de más de 1 MB predefinido. En este caso la configuración max_allowed_packet debe ser incrementada. El tamaño recomendado es 20 MB.
<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 methode
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 methode
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 methode
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 methode
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 methode
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."
);
}
}
acee444d8183fe3d0934c8b73ebe3a78b66aa3e7
2019-08-20 18:11:26
opms.otrs.com
IyEvdXNyL2Jpbi9wZXJsIC13CiMgLS0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy9LZXJuZWwvY3Bhbi1saWInOwoKdXNlIEdldG9wdDo6U3RkOwp1c2UgS2VybmVsOjpDb25maWc7CnVzZSBLZXJuZWw6OlN5c3RlbTo6REI7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RW5jb2RlOwp1c2UgS2VybmVsOjpTeXN0ZW06OkNTVjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpMb2c7CnVzZSBLZXJuZWw6OlN5c3RlbTo6TWFpbjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpUaW1lOwp1c2UgS2VybmVsOjpTeXN0ZW06Okdyb3VwOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnVzZSB2YXJzIHF3KCRWRVJTSU9OICRSZWFsQmluKTsKCiMgZ2V0IG9wdGlvbnMKbXkgJU9wdHM7CmdldG9wdCggJ2hpc3EnLCBcJU9wdHMgKTsKCmlmICggZXhpc3RzICRPcHRze2h9ICkgewogICAgcHJpbnQgU1RET1VUICJcbiI7CiAgICBwcmludCBTVERPVVQgIkZBUUltcG9ydC5wbCAtIGEgRkFRIGltcG9ydCB0b29sXG4iOwogICAgcHJpbnQgU1RET1VUICJDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOCBPVFJTIEFHLCBodHRwczovL290cnMuY29tL1xuIjsKICAgIHByaW50IFNURE9VVCAiICAgdXNhZ2U6IFxuIjsKICAgIHByaW50IFNURE9VVCAiICAgICAgRkFRSW1wb3J0LnBsIC1pIDxJbXBvcnRGaWxlPiBbLXMgPHNlcGFyYXRvcj5dIFstcSA8cXVvdGU+XVxuIjsKICAgIHByaW50IFNURE9VVCAiXG4iOwogICAgcHJpbnQgU1RET1VUICIgICBleGFtcGxlczpcbiI7CiAgICBwcmludCBTVERPVVQgIiAgICAgICBGQVFJbXBvcnQucGwgLWkgZmFxLmNzdlxuIjsKICAgIHByaW50IFNURE9VVCAiICAgICAgIEZBUUltcG9ydC5wbCAtaSBmYXEuY3N2IC1zICd8JyAtcSAnXCInIFxuIjsKICAgIHByaW50IFNURE9VVCAiXG4iOwogICAgcHJpbnQgU1RET1VUICIgICBGb3JtYXQgb2YgdGhlIENTViBmaWxlOlxuIjsKICAgIHByaW50IFNURE9VVCAnICAgICAgICJ0aXRsZSI7ImNhdGVnb3J5IjsibGFuZ3VhZ2UiOyJzdGF0ZXR5cGUiOyc7CiAgICBwcmludCBTVERPVVQgJyJmaWVsZDEiOyJmaWVsZDIiOyJmaWVsZDMiOyJmaWVsZDQiOyJmaWVsZDUiOyJmaWVsZDYiOyJrZXl3b3JkcyInIC4gIlxuIjsKICAgIHByaW50IFNURE9VVCAiXG4iOwogICAgZXhpdCAxOwp9CgojIGNoZWNrIGFjdGlvbiBtb2RlCmlmICggISRPcHRze2l9ICkgewogICAgcHJpbnQgU1RERVJSICJFUlJPUjogTmVlZCAtaSA8SW1wb3J0RmlsZT5cbiI7CiAgICBleGl0IDE7Cn0KCiMgY3JlYXRlIGNvbW1vbiBvYmplY3RzCm15ICVDb21tb25PYmplY3Q7CiRDb21tb25PYmplY3R7VXNlcklEfSAgICAgICA9IDE7CiRDb21tb25PYmplY3R7Q29uZmlnT2JqZWN0fSA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKJENvbW1vbk9iamVjdHtMb2dPYmplY3R9ICAgID0gS2VybmVsOjpTeXN0ZW06OkxvZy0+bmV3KAogICAgTG9nUHJlZml4ID0+ICdPVFJTLUZBUUltcG9ydCcsCiAgICAlQ29tbW9uT2JqZWN0LAopOwokQ29tbW9uT2JqZWN0e0NTVk9iamVjdH0gICAgPSBLZXJuZWw6OlN5c3RlbTo6Q1NWLT5uZXcoJUNvbW1vbk9iamVjdCk7CiRDb21tb25PYmplY3R7RW5jb2RlT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpFbmNvZGUtPm5ldyglQ29tbW9uT2JqZWN0KTsKJENvbW1vbk9iamVjdHtNYWluT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06Ok1haW4tPm5ldyglQ29tbW9uT2JqZWN0KTsKJENvbW1vbk9iamVjdHtEQk9iamVjdH0gICAgID0gS2VybmVsOjpTeXN0ZW06OkRCLT5uZXcoJUNvbW1vbk9iamVjdCk7CiRDb21tb25PYmplY3R7VGltZU9iamVjdH0gICA9IEtlcm5lbDo6U3lzdGVtOjpUaW1lLT5uZXcoJUNvbW1vbk9iamVjdCk7CiRDb21tb25PYmplY3R7R3JvdXBPYmplY3R9ICA9IEtlcm5lbDo6U3lzdGVtOjpHcm91cC0+bmV3KCVDb21tb25PYmplY3QpOwokQ29tbW9uT2JqZWN0e0ZBUU9iamVjdH0gICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJUNvbW1vbk9iamVjdCk7CgpwcmludCBTVERPVVQgIlJlYWQgRmlsZSAkT3B0c3tpfS5cbiI7CgojIHJlYWQgc291cmNlIGZpbGUKbXkgJENTVlN0cmluZ1JlZiA9ICRDb21tb25PYmplY3R7TWFpbk9iamVjdH0tPkZpbGVSZWFkKAogICAgTG9jYXRpb24gPT4gJE9wdHN7aX0sCiAgICBSZXN1bHQgICA9PiAnU0NBTEFSJywKICAgIE1vZGUgICAgID0+ICdiaW5tb2RlJywKKTsKZGllICJDYW4ndCByZWFkIGZpbGUgJE9wdHN7aX0uXG5JbXBvcnQgYWJvcnRlZC5cbiIgaWYgISRDU1ZTdHJpbmdSZWY7CgpwcmludCBTVERPVVQgIkltcG9ydCBpbiBwcm9jZXNzLi4uXG4iOwoKIyByZWFkIGNzdiBkYXRhCm15ICREYXRhUmVmID0gJENvbW1vbk9iamVjdHtDU1ZPYmplY3R9LT5DU1YyQXJyYXkoCiAgICBTdHJpbmcgICAgPT4gJCRDU1ZTdHJpbmdSZWYsCiAgICBTZXBhcmF0b3IgPT4gJE9wdHN7c30gfHwgJzsnLAogICAgUXVvdGUgICAgID0+ICRPcHRze3F9IHx8ICciJywKKTsKZGllICJcbkVycm9yIG9jY3VycmVkLiBJbXBvcnQgaW1wb3NzaWJsZSEgU2VlIFN5c2xvZyBmb3IgZGV0YWlscy5cbiIgaWYgIWRlZmluZWQgJERhdGFSZWY7CgojIGdldCBhbGwgRkFRIGxhbmd1YWdlIGlkcwpteSAlTGFuZ3VhZ2VJRCA9IHJldmVyc2UgJENvbW1vbk9iamVjdHtGQVFPYmplY3R9LT5MYW5ndWFnZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCiMgZ2V0IGFsbCBzdGF0ZSB0eXBlIGlkcwpteSAlU3RhdGVUeXBlSUQgPSByZXZlcnNlICV7ICRDb21tb25PYmplY3R7RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCggVXNlcklEID0+IDEgKSB9OwoKIyBnZXQgZ3JvdXAgaWQgZm9yIGZhcSBncm91cApteSAkRkFRR3JvdXBJRCA9ICRDb21tb25PYmplY3R7R3JvdXBPYmplY3R9LT5Hcm91cExvb2t1cCgKICAgIEdyb3VwID0+ICdmYXEnLAopOwoKbXkgJExpbmVDb3VudGVyOwpST1c6CmZvciBteSAkUm93UmVmICggQHskRGF0YVJlZn0gKSB7CgogICAgJExpbmVDb3VudGVyKys7CgogICAgbXkgKAogICAgICAgICRUaXRsZSwgJENhdGVnb3J5U3RyaW5nLCAkTGFuZ3VhZ2UsICRTdGF0ZVR5cGUsCiAgICAgICAgJEZpZWxkMSwgJEZpZWxkMiwgJEZpZWxkMywgJEZpZWxkNCwgJEZpZWxkNSwgJEZpZWxkNiwgJEtleXdvcmRzCiAgICApID0gQHskUm93UmVmfTsKCiAgICAjIGNoZWNrIGxhbmd1YWdlCiAgICBpZiAoICEkTGFuZ3VhZ2VJRHskTGFuZ3VhZ2V9ICkgewogICAgICAgIHByaW50IFNURE9VVAogICAgICAgICAgICAiRXJyb3I6IENvdWxkIG5vdCBpbXBvcnQgbGluZSAkTGluZUNvdW50ZXIuIExhbmd1YWdlICckTGFuZ3VhZ2UnIGRvZXMgbm90IGV4aXN0LlxuIjsKICAgICAgICBuZXh0IFJPVzsKICAgIH0KCiAgICAjIGNoZWNrIHN0YXRlIHR5cGUKICAgIGlmICggISRTdGF0ZVR5cGVJRHskU3RhdGVUeXBlfSApIHsKICAgICAgICBwcmludCBTVERPVVQKICAgICAgICAgICAgIkVycm9yOiBDb3VsZCBub3QgaW1wb3J0IGxpbmUgJExpbmVDb3VudGVyLiBTdGF0ZSAnJFN0YXRlVHlwZScgZG9lcyBub3QgZXhpc3QuXG4iOwogICAgICAgIG5leHQgUk9XOwogICAgfQoKICAgICMgZ2V0IHN1YmNhdGVnb3JpZXMKICAgIG15IEBDYXRlZ29yeUFycmF5ID0gc3BsaXQgLzo6LywgJENhdGVnb3J5U3RyaW5nOwoKICAgICMgY2hlY2sgZWFjaCBzdWJjYXRlZ29yeSBpZiBpdCBleGlzdHMKICAgIG15ICRDYXRlZ29yeUlEOwogICAgbXkgJFBhcmVudElEID0gMDsKICAgIGZvciBteSAkQ2F0ZWdvcnkgKEBDYXRlZ29yeUFycmF5KSB7CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSBpZAogICAgICAgICRDb21tb25PYmplY3R7REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCBGUk9NIGZhcV9jYXRlZ29yeSAnCiAgICAgICAgICAgICAgICAuICdXSEVSRSB2YWxpZF9pZCA9IDEgQU5EIG5hbWUgPSA/IEFORCBwYXJlbnRfaWQgPSA/JywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJENhdGVnb3J5LCBcJFBhcmVudElEIF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgICAgICBteSBAUmVzdWx0OwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRDb21tb25PYmplY3R7REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgIHB1c2goIEBSZXN1bHQsICRSb3dbMF0gKTsKICAgICAgICB9CiAgICAgICAgJENhdGVnb3J5SUQgPSAkUmVzdWx0WzBdOwoKICAgICAgICAjIGNyZWF0ZSBjYXRlZ29yeSBpZiBpdCBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRDYXRlZ29yeUlEICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRDb21tb25PYmplY3R7RkFRT2JqZWN0fS0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkQ2F0ZWdvcnksCiAgICAgICAgICAgICAgICBQYXJlbnRJRCA9PiAkUGFyZW50SUQsCiAgICAgICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIG5ldyBjYXRlZ29yeSB0byBmYXEgZ3JvdXAKICAgICAgICAgICAgJENvbW1vbk9iamVjdHtGQVFPYmplY3R9LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIEdyb3VwSURzICAgPT4gWyRGQVFHcm91cElEXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBwYXJlbnQgaWQKICAgICAgICAkUGFyZW50SUQgPSAkQ2F0ZWdvcnlJRDsKICAgIH0KCiAgICAjIGNoZWNrIGNhdGVnb3J5CiAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICBwcmludCBTVERPVVQKICAgICAgICAgICAgIkVycm9yOiBDb3VsZCBub3QgaW1wb3J0IGxpbmUgJExpbmVDb3VudGVyLiBDYXRlZ29yeSAnJENhdGVnb3J5U3RyaW5nJyBjb3VsZCBub3QgYmUgY3JlYXRlZC5cbiI7CiAgICAgICAgbmV4dCBST1c7CiAgICB9CgogICAgIyBhZGQgRkFRIGFydGljbGUKICAgIG15ICRGQVFJRCA9ICRDb21tb25PYmplY3R7RkFRT2JqZWN0fS0+RkFRQWRkKAogICAgICAgIFRpdGxlICAgICAgPT4gJFRpdGxlLAogICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgU3RhdGVJRCAgICA9PiAkU3RhdGVUeXBlSUR7JFN0YXRlVHlwZX0sCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRHskTGFuZ3VhZ2V9LAogICAgICAgIEZpZWxkMSAgICAgPT4gJEZpZWxkMSwKICAgICAgICBGaWVsZDIgICAgID0+ICRGaWVsZDIsCiAgICAgICAgRmllbGQzICAgICA9PiAkRmllbGQzLAogICAgICAgIEZpZWxkNCAgICAgPT4gJEZpZWxkNCwKICAgICAgICBGaWVsZDUgICAgID0+ICRGaWVsZDUsCiAgICAgICAgRmllbGQ2ICAgICA9PiAkRmllbGQ2LAogICAgICAgIEtleXdvcmRzICAgPT4gJEtleXdvcmRzIHx8ICcnLAogICAgICAgIEFwcHJvdmVkICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgICMgY2hlY2sgc3VjY2VzcwogICAgaWYgKCAhJEZBUUlEICkgewogICAgICAgIHByaW50IFNURE9VVCAiRXJyb3I6IENvdWxkIG5vdCBpbXBvcnQgbGluZSAkTGluZUNvdW50ZXIuXG4iOwogICAgICAgIG5leHQgUk9XOwogICAgfQp9CgpwcmludCBTVERPVVQgIkltcG9ydCBjb21wbGV0ZS5cbiI7CgpleGl0IDA7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIFNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cgo9Y3V0Cg==
IyEvdXNyL2Jpbi9wZXJsIC13CiMgLS0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgdXNlIC4uLy4uLyBhcyBsaWIgbG9jYXRpb24KdXNlIEZpbmRCaW4gcXcoJEJpbik7CnVzZSBsaWIgIiRCaW4vLi4vLi4iOwp1c2UgbGliICIkQmluLy4uLy4uL0tlcm5lbC9jcGFuLWxpYiI7CnVzZSBsaWIgIiRCaW4vLi4vLi4vQ3VzdG9tIjsKCnVzZSB2YXJzIHF3KCRWRVJTSU9OIEBJTkMpOwoKIyAwPW9mZjsxPW9uOwpteSAkRGVidWcgPSAwOwoKIyBjaGVjayBASU5DIGZvciBtb2RfcGVybCAoYWRkIGxpYiBwYXRoIGZvciAicmVxdWlyZSBtb2R1bGUiISkKcHVzaCggQElOQywgIiRCaW4vLi4vLi4iLCAiJEJpbi8uLi8uLi9LZXJuZWwvY3Bhbi1saWIiICk7CgpwcmludCAibG9jYXRpb246IHB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXJcbiI7CnByaW50ICJcbiI7CnByaW50ICI8YSBocmVmPSdwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyJz5tb3ZlZDwvYT5cbiI7Cg==
IyEvdXNyL2Jpbi9wZXJsIC13CiMgLS0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQojIG9yIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgdXNlIC4uLy4uLyBhcyBsaWIgbG9jYXRpb24KdXNlIEZpbmRCaW4gcXcoJEJpbik7CnVzZSBsaWIgIiRCaW4vLi4vLi4iOwp1c2UgbGliICIkQmluLy4uLy4uL0tlcm5lbC9jcGFuLWxpYiI7CnVzZSBsaWIgIiRCaW4vLi4vLi4vQ3VzdG9tIjsKCnVzZSB2YXJzIHF3KCRWRVJTSU9OIEBJTkMpOwokVkVSU0lPTiA9IHF3KCRSZXZpc2lvbjogMS40ICQpIFsxXTsKCiMgMD1vZmY7MT1vbjsKbXkgJERlYnVnID0gMDsKCiMgY2hlY2sgQElOQyBmb3IgbW9kX3BlcmwgKGFkZCBsaWIgcGF0aCBmb3IgInJlcXVpcmUgbW9kdWxlIiEpCnB1c2ggKEBJTkMsICIkQmluLy4uLy4uIiwgIiRCaW4vLi4vLi4vS2VybmVsL2NwYW4tbGliIik7CgpwcmludCAibG9jYXRpb246IHB1YmxpYy5mcGw/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=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8b3Ryc19jb25maWcgdmVyc2lvbj0iMS4wIiBpbml0PSJBcHBsaWNhdGlvbiI+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkFnZW50OjpTdGF0ZVR5cGVzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5JbnRlcmZhY2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5pbnRlcm5hbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPmV4dGVybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+cHVibGljPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkludGVyZmFjZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPmV4dGVybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+cHVibGljPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6UHVibGljOjpTdGF0ZVR5cGVzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+SW50ZXJmYWNlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+cHVibGljPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RGVmYXVsdDo6Um9vdENhdGVnb3J5TmFtZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IGNhdGVnb3J5IG5hbWUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+RkFRPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpEZWZhdWx0OjpSb290Q2F0ZWdvcnlDb21tZW50IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgY2F0ZWdvcnkgbmFtZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5kZWZhdWx0IGNvbW1lbnQ8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtOjpWb3Rpbmc8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAwIj41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI3NSI+NDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNTAiPjM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjI1Ij4yPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpJdGVtOjpWb3Rpbmc6OlNob3ciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW06OlZvdGluZzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJpbnRlcm5hbCI+aW50ZXJuYWwgKGFnZW50KTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZXh0ZXJuYWwiPmV4dGVybmFsIChjdXN0b21lcik8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgRkFRIHBhdGggeWVzL25vLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpFeHBsb3Jlcjo6SXRlbUxpc3Q6OlZvdGluZ1Jlc3VsdERlY2ltYWxQbGFjZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjI8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpJdGVtTGlzdDo6Vm90aW5nUmVzdWx0Q29sb3JzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzAiPnJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNzAiPm9yYW5nZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAwIj5ncmVlbjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlBhdGg6OlNlcGFyYXRvciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgcGF0aCBzZXBhcmF0b3IuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPrs8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+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+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpJdGVtOjpGaWVsZDEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6SXRlbTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93Ij5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhcHRpb24iPlN5bXB0b208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW08L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+cHVibGljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIj5Qcm9ibGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4yMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkMyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPnB1YmxpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FwdGlvbiI+U29sdXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQ0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW08L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIj5GaWVsZDQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjQwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQ1IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW08L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIj5GaWVsZDU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjUwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQ2IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW08L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+aW50ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhcHRpb24iPkNvbW1lbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjYwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkxpbmtPYmplY3Q6OlBvc3NpYmxlTGluayMjIzgzMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhICdGQVEnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgJ0ZBUScgb2JqZWN0cyB1c2luZyB0aGUgJ05vcm1hbCcgbGluayB0eXBlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZyYW1ld29yazwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkxpbmtPYmplY3Q8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPk5vcm1hbDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkxpbmtPYmplY3Q6OlBvc3NpYmxlTGluayMjIzgzMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhICdGQVEnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgJ0ZBUScgb2JqZWN0cyB1c2luZyB0aGUgJ1BhcmVudENoaWxkJyBsaW5rIHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RnJhbWV3b3JrPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6TGlua09iamVjdDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+UGFyZW50Q2hpbGQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsjIyM4MzAzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSAnRkFRJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyICdUaWNrZXQnIG9iamVjdHMgdXNpbmcgdGhlICdOb3JtYWwnIGxpbmsgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpMaW5rT2JqZWN0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MiI+VGlja2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5Ob3JtYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsjIyM4MzA0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSAnRkFRJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyICdUaWNrZXQnIG9iamVjdHMgdXNpbmcgdGhlICdQYXJlbnRDaGlsZCcgbGluayB0eXBlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZyYW1ld29yazwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkxpbmtPYmplY3Q8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QyIj5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPlBhcmVudENoaWxkPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRRXhwbG9yZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUS1BcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxUaXRsZT5GQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUS1BcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8VHlwZT5NZW51PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz5JdGVtQXJlYTwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hbWU+RkFRPC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyPC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5xPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+MzUwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgRXhwbG9yZXI8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxOYW1lPkV4cGxvcmVyPC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxJbWFnZT5saXN0LnBuZzwvSW1hZ2U+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5lPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+OTEwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkFnZW50LkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5BZ2VudC5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFFeHBsb3JlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkN1c3RvbWVyIEZBUTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUS1BcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZT5GQVE8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+PC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5mPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+NDAwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLldpZGdldC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTX0lFNz5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5JRTcuY3NzPC9DU1NfSUU3PgogICAgICAgICAgICAgICAgICAgIDxDU1NfSUU3PkZBUS5XaWRnZXQuSUU3LmNzczwvQ1NTX0lFNz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3RkFRRXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlld0ZBUUV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsM30kIj40MDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3RkFRRXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPlRpdGxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGQVFJRCI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhbmd1YWdlIj5MYWd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXdGQVFFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVwIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6OkNvbW1vblBhcmFtIyMjQWN0aW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+UHVibGljRkFRRXhwbG9yZXI8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRRXhwbG9yZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPlB1YmxpYyBmYXE8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPFRpdGxlPjwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEtQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWU+RkFRPC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1QdWJsaWNGQVFFeHBsb3JlcjwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj48L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PmY8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz40MDA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQ3VzdG9tZXIuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuV2lkZ2V0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1NfSUU3PkZBUS5DdXN0b21lci5EZWZhdWx0LklFNy5jc3M8L0NTU19JRTc+CiAgICAgICAgICAgICAgICAgICAgPENTU19JRTc+RkFRLldpZGdldC5JRTcuY3NzPC9DU1NfSUU3PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OlZpZXdGQVFFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpWaWV3RkFRRXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSwzfSQiPjQwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OlZpZXdGQVFFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZBUUlEIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPkxhZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlld0ZBUUV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRG93biI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXAiPlVwPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRUlNTIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5QdWJsaWMgZmFxPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkhUTUwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6SXRlbTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpIZWFkZXJNZXRhTW9kdWxlIyMjMy1GQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlTWV0YUhlYWQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SGVhZGVyTWV0YUZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUjIyMzLUZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZU1ldGFIZWFkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkN1c3RvbWVySGVhZGVyTWV0YUZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5DdXN0b21lckZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpIZWFkZXJNZXRhTW9kdWxlIyMjMy1GQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZU1ldGFIZWFkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlB1YmxpY0hlYWRlck1ldGFGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+UHVibGljRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok91dHB1dDo6RmlsdGVyRWxlbWVudFBvc3QjIyNGQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGVyZSB0aGUgJ0luc2VydCBGQVEnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpPdXRwdXRGaWx0ZXJGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlYnVnIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZW1wbGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0UGhvbmUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRFbWFpbCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldENvbXBvc2UiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRGb3J3YXJkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0QWN0aW9uQ29tbW9uIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpPdXRwdXQ6Ok91dHB1dEZpbHRlclRleHRBdXRvTGluayMjI0ZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RnJhbWV3b3JrPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6V2ViPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlJlZ0V4cCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT4oRkFRKVsjXHNdKj8xKFxkezR9KTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVUkwxIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVSTCI+L290cnMvaW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9Jmx0O01BVENIMiZndDs8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW1hZ2UiPmhlbHAtc21hbGwucG5nPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+X2JsYW5rPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUFkZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+RkFRLUFyZWE8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPFRpdGxlPkZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk5ldyBGQVEgQXJ0aWNsZTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWU+TmV3PC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1BZ2VudEZBUUFkZDwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5Pm48L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz45MjA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQWdlbnQuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkFnZW50LkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFFZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEgRWRpdDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+RWRpdDwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkFnZW50LkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5BZ2VudC5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+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+RnJvbnRlbmQ6OkFnZW50OjpWaWV3RkFRU2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlZpZXdGQVFTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPlRpdGxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGQVFJRCI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhbmd1YWdlIj5MYWd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6Vmlld0ZBUVNlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVwIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlZpZXdGQVFTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpWaWV3RkFRRXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZWQiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6Vmlld0ZBUUV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJGQVFJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPkNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+TGFndWFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjT3JkZXI6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpWaWV3RkFRRXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEb3duIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVcCI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpWaWV3RkFRRXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlByZWZlcmVuY2VzR3JvdXBzIyMjRkFRT3ZlcnZpZXdTbWFsbFBhZ2VTaG93biIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6UHJlZmVyZW5jZXM8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHJlZmVyZW5jZXNHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb2x1bW4iPk90aGVyIFNldHRpbmdzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iS2V5IiBUcmFuc2xhdGFibGU9IjEiPkZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwIj4xMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjAiPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjI1Ij4yNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzUiPjM1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YVNlbGVjdGVkIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VXNlckZBUU92ZXJ2aWV3U21hbGxQYWdlU2hvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVpvb20iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPkZBUS1BcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZT5GQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5BZ2VudC5EZXRhaWwuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQWdlbnQuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5XaWRnZXQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+RkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5GQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMDAtQmFjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+JEVudnsiTGFzdFNjcmVlbk92ZXJ2aWV3In08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+QmFjazwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMTAtRWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0IHRoaXMgRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9JFFEYXRheyJJdGVtSUQifTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMjAtSGlzdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeSBvZiB0aGlzIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUUhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUhpc3Rvcnk7SXRlbUlEPSRRRGF0YXsiSXRlbUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDMwLVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQgdGhpcyBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRGQVFQcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50RkFRUHJpbnQ7SXRlbUlEPSRRRGF0YXsiSXRlbUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtQYXJhbSI+dGFyZ2V0PSJwcmludF9GQVEiPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzA0MC1MaW5rIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRMaW5rT2JqZWN0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1GQVE7U291cmNlS2V5PSRRRGF0YXsiSXRlbUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDUwLURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EZWxldGUgdGhpcyBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRGQVFEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUURlbGV0ZTtJdGVtSUQ9JFFEYXRheyJJdGVtSUQifTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Db25maXJtYXRpb25EaWFsb2c8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkVsZW1lbnRTZWxlY3RvciI+IyRRRGF0YXsiTWVudUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZyI+QWN0aW9uPUFnZW50RkFRRGVsZXRlO0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyI+QWN0aW9uPUFnZW50RkFRRGVsZXRlO1N1YmFjdGlvbj1EZWxldGU7SXRlbUlEPSRRRGF0YXsiSXRlbUlEIn08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpYWxvZ1RpdGxlIj4kVGV4dHsiRGVsZXRlIn0gJENvbmZpZ3siRkFROjpGQVFIb29rIn0gJFFEYXRheyJOdW1iZXIifTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVyRkFRWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPFRpdGxlPjwvVGl0bGU+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+Q3VzdG9tZXIgRkFRLVpvb208L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZXRhaWwuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVyRkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+Q3VzdG9tZXIgRkFRIHNlYXJjaDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+U2VhcmNoIEZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUS1BcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBGQVE8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+PC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoPC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxMaW5rT3B0aW9uPjwvTGlua09wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PjwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjYwMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3RkFRU2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3RkFRU2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsM30kIj40MDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3RkFRU2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJGQVFJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPkNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+TGFndWFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXdGQVFTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEb3duIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVcCI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5GQVEgUHJpbnQ8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPFRpdGxlPlByaW50PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lckZBUVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5DdXN0b21lciBGQVEtUHJpbnQ8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPlB1YmxpYyBGQVEgc2VhcmNoPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxUaXRsZT5TZWFyY2ggRkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RkFRLUFyZWE8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxOYW1lIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoIEZBUTwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+PC9CbG9jaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj48L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249UHVibGljRkFRU2VhcmNoPC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxMaW5rT3B0aW9uPjwvTGlua09wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PjwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjYwMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OlZpZXdGQVFTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OlZpZXdGQVFTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSwzfSQiPjQwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OlZpZXdGQVFTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPlRpdGxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGQVFJRCI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhbmd1YWdlIj5MYWd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlld0ZBUVNlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVwIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUVpvb20iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPFRpdGxlPjwvVGl0bGU+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+UHVibGljIEZBUS1ab29tPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZXRhaWwuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxUaXRsZT48L1RpdGxlPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPlB1YmxpYyBGQVEtWm9vbTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxUaXRsZT48L1RpdGxlPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPlB1YmxpYyBGQVEtUHJpbnQ8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUpvdXJuYWwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPFRpdGxlPkZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgSm91cm5hbDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5Kb3VybmFsPC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1BZ2VudEZBUUpvdXJuYWw8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5qPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+OTMwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFKb3VybmFsIyMjU2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpWaWV3RkFRSm91cm5hbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUpvdXJuYWwjIyNKb3VybmFsTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlZpZXdGQVFKb3VybmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+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+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNJbmNsdWRlSW50ZXJuYWwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93RmllbGROYW1lcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93SW5zZXJ0VGV4dEJ1dHRvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRDb21wb3NlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjU2hvd0luc2VydExpbmtCdXR0b24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0Q29tcG9zZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6VGlja2V0Q29tcG9zZSMjI1Nob3dJbnNlcnRUZXh0QW5kTGlua0J1dHRvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93ICJJbnNlcnQgRkFRIFRleHQgJmFtcDsgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Ok11bHRpTGFuZ3VhZ2UiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkRlZmF1bHQ6Okxhbmd1YWdlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5lbjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkNTUyMjIzIwMC1GQVEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBDU1MgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpXZWI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTG9hZGVyOjpBZ2VudDo6Q29tbW9uSlMjIyMyMDAtRkFRIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgSlMgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpXZWI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5qczwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlZvdGluZyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OC1GQVEtTGFzdENoYW5nZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTCIgaW5kaWNhdGVzIHRoZSBjYWNoZSBleHBpcmF0aW9uIHBlcmlvZCBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RGFzaGJvYXJkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkxhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+TGFzdENoYW5nZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPmZhcTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FjaGVUVEwiPjYwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRGFzaGJvYXJkQmFja2VuZCMjIzAzOTktRkFRLUxhc3RDcmVhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVEwiIGluZGljYXRlcyB0aGUgY2FjaGUgZXhwaXJhdGlvbiBwZXJpb2QgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkRhc2hib2FyZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmRGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5MYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPkxhc3RDcmVhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db250ZW50U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj5mYXE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhY2hlVFRMIj42MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KPC9vdHJzX2NvbmZpZz4K
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==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRhX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdTaWRzdCDDpm5kcmVkZSBhcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdOeWVzdGUgYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBhcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1VuZGVya2F0ZWdvcmkgYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdJbmdlbiByYXRlIHZhbGd0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ1N0YXJ0IGRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ1N0YXJ0IG3DpW5lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAnU3RhcnQgw6VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdTbHV0IGRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICdTbHV0IG3DpW5lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgeWVhcid9ID0gJ1NsdXQgw6VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1RhayBmb3IgZGluIHN0ZW1tZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdEdSBoYXIgYWxsZXJlZGUgc3RlbXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0dvZGtlbmR0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdWaWwgYmxpdmUgdmlzdCBzb20ga29tbWVudGFyIGkgRXhwbG9yZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdTdGVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB5b3VyIG93biBsb2cgdGV4dCBmb3IgUEdQLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gdGV4dCBmb3IgdGhlIHBhZ2Ugc2hvd24gdG8gY3VzdG9tZXJzIHRoYXQgaGF2ZSBubyB0aWNrZXRzIHlldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZnJvbnQtZW5kIChIVE1MKSB0aGVtZSB0byBiZSB1c2VkIGJ5IHRoZSBhZ2VudHMgYW5kIGN1c3RvbWVycy4gVGhlIGRlZmF1bHQgdGhlbWVzIGFyZSBTdGFuZGFyZCBhbmQgTGl0ZS4gSWYgeW91IGxpa2UsIHlvdSBjYW4gYWRkIHlvdXIgb3duIHRoZW1lLiBQbGVhc2UgcmVmZXIgdGhlIGFkbWluaXN0cmF0b3IgbWFudWFsIGxvY2F0ZWQgYXQgaHR0cDovL2RvYy5vdHJzLm9yZy8uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGZyZWUga2V5IGZpZWxkIG51bWJlciAxIGZvciBhcnRpY2xlcyB0byBhZGQgYSBuZXcgYXJ0aWNsZSBhdHRyaWJ1dGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGZyZWUga2V5IGZpZWxkIG51bWJlciAxMCBmb3IgdGlja2V0cyB0byBhZGQgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZnJlZSBrZXkgZmllbGQgbnVtYmVyIDExIGZvciB0aWNrZXRzIHRvIGFkZCBhIG5ldyB0aWNrZXQgYXR0cmlidXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBmcmVlIGtleSBmaWVsZCBudW1iZXIgMTIgZm9yIHRpY2tldHMgdG8gYWRkIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGZyZWUga2V5IGZpZWxkIG51bWJlciAxMyBmb3IgdGlja2V0cyB0byBhZGQgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZnJlZSBrZXkgZmllbGQgbnVtYmVyIDE0IGZvciB0aWNrZXRzIHRvIGFkZCBhIG5ldyB0aWNrZXQgYXR0cmlidXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBmcmVlIGtleSBmaWVsZCBudW1iZXIgMTUgZm9yIHRpY2tldHMgdG8gYWRkIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGZyZWUga2V5IGZpZWxkIG51bWJlciAxNiBmb3IgdGlja2V0cyB0byBhZGQgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZnJlZSBrZXkgZmllbGQgbnVtYmVyIDIgZm9yIGFydGljbGVzIHRvIGFkZCBhIG5ldyBhcnRpY2xlIGF0dHJpYnV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZnJlZSBrZXkgZmllbGQgbnVtYmVyIDIgZm9yIHRpY2tldHMgdG8gYWRkIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGZyZWUga2V5IGZpZWxkIG51bWJlciAzIGZvciBhcnRpY2xlcyB0byBhZGQgYSBuZXcgYXJ0aWNsZSBhdHRyaWJ1dGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGZyZWUga2V5IGZpZWxkIG51bWJlciAzIGZvciB0aWNrZXRzIHRvIGFkZCBhIG5ldyB0aWNrZXQgYXR0cmlidXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBmcmVlIGtleSBmaWVsZCBudW1iZXIgNCBmb3IgdGlja2V0cyB0byBhZGQgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZnJlZSBrZXkgZmllbGQgbnVtYmVyIDUgZm9yIHRpY2tldHMgdG8gYWRkIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGZyZWUga2V5IGZpZWxkIG51bWJlciA2IGZvciB0aWNrZXRzIHRvIGFkZCBhIG5ldyB0aWNrZXQgYXR0cmlidXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBmcmVlIGtleSBmaWVsZCBudW1iZXIgNyBmb3IgdGlja2V0cyB0byBhZGQgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZnJlZSBrZXkgZmllbGQgbnVtYmVyIDggZm9yIHRpY2tldHMgdG8gYWRkIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGZyZWUga2V5IGZpZWxkIG51bWJlciA5IGZvciB0aWNrZXRzIHRvIGFkZCBhIG5ldyB0aWNrZXQgYXR0cmlidXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtb2R1bGUgdXNlZCB0byBzdG9yZSB0aGUgc2Vzc2lvbiBkYXRhLiBXaXRoICJEQiIgdGhlIGZyb250ZW5kIHNlcnZlciBjYW4gYmUgc3BsaXR0ZWQgZnJvbSB0aGUgZGIgc2VydmVyLiAiRlMiIGlzIGZhc3Rlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTnkgRkFRIEFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGlzIHRvIHllcyBpZiB5b3UgdHJ1c3QgaW4gYWxsIHlvdXIgcHVibGljIGFuZCBwcml2YXRlIHBncCBrZXlzLCBldmVuIGlmIHRoZXkgYXJlIG5vdCBjZXJ0aWZpZWQgd2l0aCBhIHRydXN0ZWQgc2lnbmF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBjb25maWd1cmF0aW9uIGxldmVsIG9mIHRoZSBhZG1pbmlzdHJhdG9yLiBEZXBlbmRpbmcgb24gdGhlIGNvbmZpZyBsZXZlbCwgc29tZSBzeXNjb25maWcgb3B0aW9ucyB3aWxsIGJlIG5vdCBzaG93bi4gVGhlIGNvbmZpZyBsZXZlbHMgYXJlIGluIGluIGFzY2VuZGluZyBvcmRlcjogRXhwZXJ0LCBBZHZhbmNlZCwgQmVnaW5uZXIuIFRoZSBoaWdoZXIgdGhlIGNvbmZpZyBsZXZlbCBpcyAoZS5nLiBCZWdpbm5lciBpcyB0aGUgaGlnaGVzdCksIHRoZSBsZXNzIGxpa2VseSBpcyBpdCB0aGF0IHRoZSB1c2VyIGNhbiBhY2NpZGVudGFsbHkgY29uZmlndXJlIHRoZSBzeXN0ZW0gaW4gYSB3YXkgdGhhdCBpdCBpcyBub3QgdXNhYmxlIGFueSBtb3JlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IFdZU0lXWUcgZWRpdG9yIGluIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRpbWUgdXNlIGNvbXBsZXRlIGRlc2NyaXB0aW9uIChkYXlzLCBob3VycywgbWludXRlcyksIGlmIHNldCB0byAiWWVzIjsgb3IganVzdCBmaXJzdCBsZXR0ZXIgKGQsIGgsIG0pLCBpZiBzZXQgdG8gIk5vIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBuZWVkcyBtaW4uIG9uZSBwZXJtaXNzaW9uIGdyb3VwISd9ID0gJ0VuIGthdGVnb3JpIGJlaMO4dmVyIG1pbmRzdCBlbiByZXR0aWdoZWRzZ3J1cHBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ0FnZW50Z3J1cHBlciBzb20ga2FuIHRpbGfDpSBkZW5uZSBrYXRlZ29yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcmllcyd9ID0gJ0thdGVnb3JpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlsU2VhcmNoJ30gPSAnRGV0YWxqZXJldCBzw7hnbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICdGQVEgS2F0ZWdvcmllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTmV3cyAoVG9wIDEwKSd9ID0gJ0ZBUSBOeWhlZGVyIChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOZXdzIChuZXcgY3JlYXRlZCknfSA9ICdGQVEgTnloZWRlciAobnlvcHJldHRldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE5ld3MgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnRkFRIE55aGVkZXIgKHNpZHN0IMOmbmRyZWRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9ICdEZXIgZXIgaWtrZSB2YWxndCBrYXRlZ29yaS4gRm9yIGF0IG9wcmV0dGUgZW4gbnkgYXJ0aWtlbCBza2FsIGR1IGhhdmUgYWRnYW5nIHRpbCBtaW5kc3QgZW4ga2F0ZWdvcmkuIFRqZWsgZGluZSBHcnVwcGUvS2F0ZWdvcmkgcmV0dGlnaGVkZXIgdW5kZXIgLUthdGVnb3JpIG1lbnVlbi0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnU8O4Z25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcmllcyd9ID0gJ1VuZGVya2F0ZWdvcmllcic7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICfDtmZmZW50bGljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRLU51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdadWxldHp0IGdlw6RuZGVydGUgRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnWnVsZXR6dCBlcnN0ZWxsdGUgRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBGQVEtQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1VudGVya2F0ZWdvcmllIHZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ0tlaW5lIEJld2VydHVuZyBhdXNnZXfDpGhsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnw7ZmZmVudGxpY2ggKEFsbGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm4gKEt1bmRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuIChBZ2VudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnU3RhcnQgVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnU3RhcnQgTW9uYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ1N0YXJ0IEphaHInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ0VuZCBUYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnRW5kIE1vbmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnRW5kIEphaHInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVmllbGVuIERhbmsgZsO8ciBJaHJlIEJld2VydHVuZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdTaWUgaGFiZW4gYmVyZWl0cyBhYmdlc3RpbW10ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ZBUS1BcnRpa2VsLUF1c2RydWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0ZBUS1BcnRpa2VsIChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRLUFydGlrZWwgKG5ldSBlcnN0ZWxsdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdGQVEtQXJ0aWtlbCAoYWt0dWFsaXNpZXJ0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnRkFRLUthdGVnb3JpZSBha3R1YWxpc2llcnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdGQVEtS2F0ZWdvcmllIGhpbnp1Z2Vmw7xndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnRWluZSBLYXRlZ29yaWUgYmVuw7Z0aWd0IGVpbmVuIE5hbWVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRGllc2UgS2F0ZWdvcmllIGV4aXN0aWVydCBiZXJlaXRzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFRLVNwcmFjaGUgaGluenVnZWbDvGd0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdGQVEtU3ByYWNoZSBha3R1YWxpc2llcnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0RlciBOYW1lIGlzdCBlcmZvcmRlcmxpY2ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGllc2UgU3ByYWNoZSBleGlzdGllcnQgYmVyZWl0cyEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdGQVEtQXJ0aWtlbCBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0VpbmUgS2F0ZWdvcmllIGlzdCBlcmZvcmRlcmxpY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnRnJlaWdhYmUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRLUthdGVnb3JpZW4tVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdLYXRlZ29yaWUgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnS2F0ZWdvcmllIGzDtnNjaGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnS2F0ZWdvcmllIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdLYXRlZ29yaWUgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnV2lyZCBpbSBFeHBsb3JlciBhbHMgS29tbWVudGFyIGFuZ2V6ZWlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdXw6RobGVuIFNpZSBtaW5kZXN0ZW5zIGVpbmUgQmVyZWNodGlndW5nc2dydXBwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0FnZW50ZW4tR3J1cHBlbiwgZGllIGJlcmVjaHRpZ3Qgc2luZCwgYXVmIEZBUS1BcnRpa2VsIGluIGRpZXNlciBLYXRlZ29yaWUgenV6dWdyZWlmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdXb2xsZW4gU2llIGRpZXNlIEthdGVnb3JpZSB3aXJrbGljaCBsw7ZzY2hlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPSAnU2llIGvDtm5uZW4gZGllc2UgS2F0ZWdvcmllIG5pY2h0IGzDtnNjaGVuLiBTaWUgd2lyZCBpbiBtaW5kZXN0ZW5zIGVpbmVtIEZBUS1BcnRpa2VsIHZlcndlbmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdEaWVzZSBLYXRlZ29yaWUgd2lyZCBpbiBkZW4gZm9sZ2VuZGVuIEZBUS1BcnRpa2VsbiB2ZXJ3ZW5kZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRGllc2UgS2F0ZWdvcmllIGlzdCBlaW5lIEVsdGVybi1LYXRlZ29yaWUgZsO8ciBmb2xnZW5kZSBLYXRlZ29yaWVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1dvbGxlbiBTaWUgZGllc2VuIEZBUS1BcnRpa2VsIHdpcmtsaWNoIGzDtnNjaGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUS1FeHBsb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdTY2huZWxsc3VjaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnRXJ3ZWl0ZXJ0ZSBTdWNoZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnVW50ZXJrYXRlZ29yaWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnS2VpbmUgVW50ZXJrYXRlZ29yaWVuIGdlZnVuZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdLZWluZSBGQVEtSm91cm5hbGRhdGVuIGdlZnVuZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdGQVEtU3ByYWNoZW4tVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9ICdWZXJ3ZW5kZW4gU2llIGRpZXNlcyBGZWF0dXJlIHdlbm4gU2llIG1pdCB2ZXJzY2hpZWRlbmVuIFNwcmFjaGVuIGFyYmVpdGVuIHdvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnU3ByYWNoZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICdTcHJhY2hlIEzDtnNjaGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ1NwcmFjaGUgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ1NwcmFjaGUgQmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBTcHJhY2hlIHdpcmtsaWNoIGzDtnNjaGVuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPSAnU2llIGvDtm5uZW4gZGllc2UgU3ByYWNoZSBuaWNodCBsw7ZzY2hlbi4gU2llIHdpcmQgaW4gbWluZGVzdGVucyBlaW5lbSBGQVEtQXJ0aWtlbCB2ZXJ3ZW5kZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRGllc2UgU3ByYWNoZSB3aXJkIGluIGRlbiBmb2xnZW5kZW4gRkFRLUFydGlrZWxuIHZlcndlbmRldCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0tvbnRleHQtRWluc3RlbGx1bmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdGQVEtQXJ0aWtlbCBwcm8gU2VpdGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnS2VpbmUgRkFRLURhdGVuIGdlZnVuZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICdGQVEgSW5mb3JtYXRpb25lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ0Jld2VydHVuZ2VuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEtVm9sbHRleHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFRIFN1Y2hlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUS1JbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdCZXdlcnR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdCZXdlcnR1bmcgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3ZvbiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0tlaW5lIEJld2VydHVuZ2VuIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnS2VpbmUgQmV3ZXJ0dW5nZW4gZ2VmdW5kZW4hIFNlaWVuIFNpZSBkZXIgZXJzdGUgZGVyIGRpZXNlbiBGQVEtQXJ0aWtlbCBiZXdlcnRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0F0dGFjaG1lbnQgSGVydW50ZXJsYWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9ICdXaWUgaGlsZnJlaWNoIHdhciBkaWVzZXIgQXJ0aWtlbD8gQml0dGUgZ2ViZW4gU2llIElocmUgQmV3ZXJ0dW5nIGFiIHVuZCBoZWxmZW4gU2llIG1pdCBkaWUgUXVhbGl0w6R0IGRlciBGQVEtRGF0ZW5iYW5rIHp1IHZlcmJlc3Nlcm4uIFZpZWxlbiBEYW5rISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ25pY2h0IGhpbGZyZWljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdzZWhyIGhpbGZyZWljaCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0ZBUS1UZXh0IGVpbmbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdGQVEtTGluayBlaW5mw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0ZBUS1UZXh0ICYgTGluayBlaW5mw7xnZW4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdLZWluZSBGQVEtQXJ0aWtlbCBnZWZ1bmRlbi4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdWb2xsdGV4dC1TdWNoZSBpbiBGQVEtQXJ0aWtlbG4gKHouIEIuICJKb2huKm4iIG9yICJXaWxsKiIpJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxzJ30gPSAnRGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1N1Y2hlIG5hY2ggQXJ0aWtlbG4gbWl0IFNjaGzDvHNzZWx3w7ZydGVybic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnw5ZmZmVudGxpY2gnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9ICdFaW4gRmlsdGVyIHp1ciBhdXRvbWF0aXNjaGVuIEdlbmVyaWVydW5nIHZvbiBGQVEtTGlua3MsIHdlbm4gZWluIEhpbndlaXMgYXVmIGVpbmVuIEZBUS1BcnRpa2VsIGlkZW50aWZpemllcnQgd2lyZC4gRGFzIEVsZW1lbnQgSW1hZ2UgZXJsYXVidCB6d2VpIEVpbmdhYmVmb3JtZW46IEVyc3RlbnMgZGVyIE5hbWUgZWluZXMgSWNvbnMgKHouIEIuIGZhcS5wbmcpLiBJbiBkaWVzZW0gRmFsbCB3aXJkIGF1ZiBkYXMgR3JhZmlrLVZlcnplaWNobmlzIGRlcyBPVFJTIHp1Z2VncmlmZmVuLiBBbHMgendlaXRlIE3DtmdsaWNoa2VpdCBrYW5uIG1hbiBhYmVyIGF1Y2ggZGVuIGRpcmVrdGVuIExpbmsgenVyIEdyYWZpayBhbmdlYmVuICh6LiBCLiBodHRwOi8vb3Rycy5vcmcvZmFxLnBuZykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTLUZhcmJlIGbDvHIgZGFzIEJld2VydHVuZ3MtRXJnZWJuaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdLYXRlZ29yaWVuLVZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnRGV6aW1hbHN0ZWxsZW4gZGVzIEVyZ2Vibmlzc2VzIGRlciBBcnRpa2VsYmV3ZXJ0dW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnUm9vdC1LYXRlZ29yaWUtTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ1N0YW5kYXJkLVNwcmFjaGUgZsO8ciBGQVEtQXJ0aWtlbCBpbSBFaW56ZWwtU3ByYWNoLU1vZHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnU3RhbmRhcmQtUHJpb3JpdMOkdCB2b24gVGlja2V0cyBmw7xyIGRpZSBGcmVpZ2FiZSB2b24gRkFRLUFydGlrZWxuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnU3RhbmRhcmQgU3RhdHVzIGVpbmVzIEZBUS1FaW50cmFncy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1N0YW5kYXJkLVN0YXR1cyB2b24gVGlja2V0cyBmw7xyIGRpZSBGcmVpZ2FiZSB2b24gRkFRLUFydGlrZWxuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0gJ1N0YW5kYXJkd2VydCBkZXMgQWN0aW9uLVBhcmFtZXRlcnMgZsO8ciBkZW4gw7ZmZmVudGxpY2hlbiBGQVEtQmVyZWljaC4gRGVyIEFjdGlvbi1QYXJhbWV0ZXIgd2lyZCB2b24gZGVuIFNrcmlwdGVuIGRlcyBTeXN0ZW1zIGJlbnV0enQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9ICdEZWZpbmllcnQgZWluIMOcYmVyc2ljaHRzLU1vZHVsIHVtIGRpZSBTbWFsbC1BbnNpY2h0IGltIEZBUS1Kb3VybmFsIGFuenV6ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9ICdEZWZpbmllcnQgZWluIMOcYmVyc2ljaHRzLU1vZHVsIHVtIGRpZSBTbWFsbC1BbnNpY2h0IGVpbmVyIEZBUS1MaXN0ZSBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVyIEZBUS1TdWNoZSBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtU3VjaGUgaW0gS3VuZGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLVN1Y2hlIGltIFB1YmxpYy1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXIgRkFRLVN1Y2hlIGltIEFnZW50ZW4tSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXIgRkFRLVN1Y2hlIGltIEt1bmRlbi1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXIgRkFRLVN1Y2hlIGltIFB1YmxpYy1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnRGVmaW5lcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gaW0gRkFRLUV4cGxvcmVyLiBEaWVzZSBPcHRpb24gaGF0IGtlaW5lIEF1c3dpcmt1bmcgYXVmIGRpZSBQb3NpdGlvbiBkZXIgU3BhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnRGVmaW5lcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gaW0gRkFRLUpvdXJuYWwuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ0RlZmluZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGluIGRlciBGQVEtU3VjaGUuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9ICdEZWZpbmllcnQgd28gZGVyIFwnRkFRIEVpbmbDvGdlblwnIGxpbmsgYW5nZXplaWd0IHdpcmQuIEhpbndlaXM6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGJlaW5oYWx0ZXQgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgdW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaXRpb24gZGVyIGZyZWllbiBUZXh0ZmVsZGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdEaWVzZSBGQVEgbMO2c2NoZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdGQVEgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnTXVsdGlwbGUgU3ByYWNoZW4gaW0gRkFRLU1vZHVsIGFrdGl2aWVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQmV3ZXJ0dW5ncy1NZWNoYW5pc211cyBpbSBGQVEtTW9kdWwgYWt0aXZpZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEgSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFRLUpvdXJuYWwgQW56YWlnZS1MaW1pdCBmw7xyIGRpZSBTbWFsbC1BbnNpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFRLcOcYmVyc2ljaHQgQW56ZWlnZS1MaW1pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdGQVEgbGltaXQgcHJvIFNlaXRlIGbDvHIgZGFzIEZBUS1Kb3VybmFsIGluIGRlciBTbWFsbC1BbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnRkFRIGxpbWl0IHBybyBTZWl0ZSBmw7xyIGRpZSBTbWFsbC1BbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgcGF0aCBzZXBhcmF0b3IuJ30gPSAnVHJlbm56ZWljaGVuIGltIEZBUSBQZmFkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnU3VjaC1CYWNrZW5kLVJvdXRlciBmw7xyIGRpZSBGQVEtU3VjaGUgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnRkFRLUJlcmVpY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnRnJvbnRlbmQtTW9kdWwtUmVnaXN0cmllcnVuZyBmw7xyIGRhcyBQdWJsaWMtSW50ZXJmYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBwZSBmw7xyIGRpZSBGcmVpZ2FiZSB2b24gRkFRLUFydGlrZWxuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnRkFRLUhpc3RvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbnRlcm5lIEZBUS1GZWxkZXIgaW4gZWluZW0gRkFRLWJhc2llcnRlblRpY2tldCB2ZXJ3ZW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnRGVuIE5hbWVuIGplZGVzIEZBUS1GZWxkZXMgZWluZW0gRkFRLWJhc2llcnRlbiBUaWNrZXQgdmVyd2VuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgUXVpY2tTZWFyY2ggRmVhdHVyZSBhbmdlemVpZ3Qgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1NwcmFjaGVuLVZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdMYW5ndWFnZUtleSBmw7xyIGRpZSBGcmFnZSBiZWkgZGVyIEFydGlrZWxiZXdlcnR1bmcuIFdpcmQgaW4gZGVuIFNwcmFjaGZpbGVzIGRlZmluaWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnRGllc2UgRkFRIG1pdCBlaW5lbSBhbmRlcmVuIE9iamVrdCB2ZXJrbsO8cGZlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUpvdXJuYWwgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gS3VuZGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPSAnTW9kdWwgenVtIEdlbmVyaWVyZW4gZGVzIEhUTUwgIk9wZW5TZWFyY2giIFByb2ZpbHMgenVyIEZBUS1TdWNoZSDDvGJlciBkYXMgQnJvd3Nlci1TdWNoZmVsZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTmV1ZXIgRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTmV1ZSBGQVEtQXJ0aWtlbCBiZW7DtnRpZ2VuIGVpbmUgRnJlaWdhYmUgdm9yIGRlciBWZXLDtmZmZW50bGljaHVuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnQW56YWhsIGRlciB6dSBhbnplaWdlbmRlbiBBcnRpa2VsIGluIGxldHp0ZW4gw4RuZGVydW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQW56YWhsIGRlciBhbnp1emVpZ2VuZGVuIEFydGlrZWwgaW4genVsZXR6dCBlcnN0ZWxsdGUgQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdBbnphaGwgZGVyIGFuenV6ZWlnZW5kZW4gQXJ0aWtlbCBpbSBUb3AgMTAgRmVhdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0gJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4gKGluIGRlbmVuIEZBUS1BcnRpa2VsIGFuZ2V6ZWlndCB3ZXJkZW4pIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQgZGVzIEZBUS1Kb3VybmFscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9ICdQYXJhbWV0ZXIgZsO8ciBkaWUgU2VpdGVuIChpbiBkZW5lbiBGQVEtQXJ0aWtlbCBhbmdlemVpZ3Qgd2VyZGVuKSBmw7xyIGRpZSBTbWFsbC1BbnNpY2h0IGRlcyBGQVEtT3Zlcmlld3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnRkFRIGRydWNrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUXVldWUgZsO8ciBkaWUgRnJlaWdhYmUgdm9uIEZBUS1BcnRpa2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdHZXdpY2h0dW5nIGbDvHIgZGllIEJld2VydHVuZy4gRGVyIEtleSBtdXNzIGluIFByb3plbnQgYW5nZWdlYmVuIHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0ZBUSBkdXJjaHN1Y2hlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnSFRNTCBEYXJzdGVsbHVuZyBkZXIgRkFRLUFydGlrZWwgZWluc2NoYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ0ZBUSBQZmFkIGFuemVpZ2VuIGphL25laW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0FuemVpZ2UgZWluZXMgV1lTSVdZRyBFZGl0b3JzIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnQXJ0aWtlbCBhdXMgU3Via2F0ZWdvcmllbiBhbnplaWdlbiBqYS9uZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdJbnRlcmZhY2VzIGluIGRlbmVuIGRhcyBMYXN0Q2hhbmdlIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgTGFzdENyZWF0ZSBGZWF0dXJlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0ludGVyZmFjZXMgaW4gZGVuZW4gZGFzIFRvcCAxMCBGZWF0dXJlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0ludGVyZmFjZXMgaW4gZGVuZW4gZGFzIFZvdGluZyBGZWF0dXJlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgZGVyIGVzIGVybcO2Z2xpY2h0IGVpbmVuIEZBUS1BcnRpa2VsIG1pdCBhbmRlcmVuIE9iamVrdGVuIHp1IHZlcmtuw7xwZmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgbMO2c2NoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ1plaWd0IGVpbmVuIExpbmsgaW4gZGVyIE1lbnUtTGVpc3RlIGluIGRlciBab29tLUFuc2ljaHQgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4sIHVtIGRpZSBIaXN0b3JpZSBlaW5lcyBGQVEtQXJ0aWtlbHMgYW56dXplaWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgYmVhcmJlaXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgenVyIHZvcmhlcmlnZW4gU2VpdGUgenVyw7xjayB6dSBnZWhlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgZGVyIGVzIGVybcO2Z2xpY2h0IGVpbmVuIEZBUS1BcnRpa2VsIHp1IGRydWNrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9ICdEZXIgSWRlbnRpZmlrYXRvciBmw7xyIGVpbmVuIEZBUS1BcnRpa2VsLCB6LiBCLiBGQVEjLCBLQiMsIE15RkFRIy4gRGVyIFN0YW5kYXJkd2VydCBpc3QgRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ05vcm1hbFwnIG1pdCBhbmRlcmVuIFwnRkFRXCctT2JqZWt0ZW4gdmVybGlua3Qgd2VyZGVuIGthbm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ1BhcmVudENoaWxkXCcgbWl0IGFuZGVyZW4gXCdGQVFcJy1PYmpla3RlbiB2ZXJsaW5rdCB3ZXJkZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ05vcm1hbFwnIG1pdCBhbmRlcmVuIFwnVGlja2V0XCctT2JqZWt0ZW4gdmVybGlua3Qgd2VyZGVuIGthbm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ1BhcmVudENoaWxkXCcgbWl0IGFuZGVyZW4gXCdUaWNrZXRcJy1PYmpla3RlbiB2ZXJsaW5rdCB3ZXJkZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JvZHkgZGVzIFRpY2tldHMgenVyIEZyZWlnYWJlIGVpbmVzIEZBUS1BcnRpa2Vscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JldHJlZmYgZGVzIFRpY2tldHMgenVyIEZyZWlnYWJlIGVpbmVzIEZBUS1BcnRpa2Vscy4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBLdW5kZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXJzIGltIFB1YmxpYy1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gS3VuZGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXJzIGltIFB1YmxpYy1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIEV4cGxvcmVyIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gQWdlbnRlbi1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJ0zDtnNjaGVuOiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGltIEt1bmRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gS3VuZGVuLUludGVyZmFjZSBwcm8gU2VpdGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBQdWJsaWMtSW50ZXJmYWNlIHBybyBTZWl0ZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGltIEt1bmRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0FuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gUHVibGljLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJ1plaWdlICJMaW5rIEVpbmbDvGdlbiItQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGbDvHIgw7ZmZmVudGxpY2hlIEZBUS1BcnRpa2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICdaZWlnZSAiVGV4dCAmIExpbmsgRWluZsO8Z2VuIi1CdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZsO8ciDDtmZmZW50bGljaGUgRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnWmVpZ2UgIlRleHQgRWluZsO8Z2VuIi1CdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZsO8ciDDtmZmZW50bGljaGUgRkFRLUFydGlrZWwuJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdVbHRpbW9zIGFydMOtY3Vsb3MgbW9kaWZpY2Fkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnVWx0aW1vcyBhcnTDrWN1bG9zIGNyZWFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBkZSBhcnTDrWN1bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViIENhdGVnb3JpYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ05vIHNlbGVjY2lvbm8gcHVudGFqZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncMO6YmxpY28gKHRvZG9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGFnZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnU3RhcnQgZGF5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnU3RhcnQgbW9udGgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ1N0YXJ0IHllYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ0VuZCBkYXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnRW5kIG1vbnRoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnRW5kIHllYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnR3JhY2lhcyBwb3Igc3Ugdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdVc3RlZCB5YSBoYSB2b3RhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnSW1wcmltaXIgQXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdOb3RpY2lhcyBGQVEgKFRvcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdOb3RpY2lhcyBGQVEgKGNyZWFkbyBudWV2byknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ05vdGljaWFzIEZBUSAoUmVjaWVudGVtZW50ZSBtb2RpZmljYWRvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdDYXRlZ29yw61hIGRlIEZBUSBhY3R1YWxpemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnQ2F0ZWdvcsOtYSBkZSBGQVEgYWdyZWdhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnVW5hIGNhdGVnb3LDrWEgZGViZSB0ZW5lciB1biBub21icmUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0lkaW9tYSBkZSBGQVEgYWdyZWdhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnSWRpb21hIGRlIEZBUSBhY3R1YWxpemFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRWwgbm9tYnJlIGVzIHJlcXVlcmlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0VzdGUgaWRpb21hIHlhIGV4aXN0ZSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZ3JlZ2FyIEFydMOtY3VsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnTGEgY2F0ZWdvcsOtYSBlcyByZXF1ZXJpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXByb3ZhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnQWRtaW5pc3RyYWNpw7NuIGRlIENhdGVnb3LDrWFzIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBZ3JlZ2FyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQm9ycmFyIENhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdBY2VwdGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0FncmVnYXIgQ2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdGFyIENhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlcmFuIG1vc3RyYWRvcyBjb21vIGNvbWVudGFyaW9zIGVuIGVsIGV4cGxvcmFkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnUG9yIGZhdm9yIHNlbGVjY2lvbmUgYWwgbWVub3MgdW4gZ3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhZ2VudGVzIHF1ZSBwdWVkZW4gYWNjZWRlciBhIGxvcyBhcnTDrWN1bG9zIGRlIGVzdGEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnwr9Fc3TDoSBzZWd1cm8gZGUgcXVlcmVyIGJvcnJhciBlc3RhIGNhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0gJ05vIHB1ZWRlIGJvcnJhciBlc3RhIGNhdGVnb3LDrWEuIEVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgYWwgbWVub3MgdW4gYXJ0w61jdWxvIEZBUSB5L28gZXMgcGFkcmUgZGUgYWwgbWVub3Mgb3RyYSBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRXN0YSBjYXRlZ29yw61hIGVzdGEgc2llbmRvIHVzYWRhIHBvciBsb3Mgc2lndWllbnRlcyBhcnTDrWN1bG9zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXMgcGFkcmUgZGUgbGFzIHNpZ3VpZW50ZXMgU3ViQ2F0ZWdvcsOtYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnwr9Fc3TDoSBzZWd1cm8gZGUgcXVlcmVyIGJvcnJhciBlc3RlIGFydMOtY3VsbyBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXhwbG9yYWRvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIFLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIEF2YW56YWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yw61hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnTDrWN1bG9zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIHN1YmNhdGVnb3LDrWFzLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBkYXRvcyBlbiBsYSBCaXTDoWNvcmEgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0FkbWluaXN0cmFjacOzbiBkZSBJZGlvbWFzIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9ICdVdGlsaWNlIGVzdGEgZnVuY2lvbmFsaWRhZCBzaSBkZXNlYSB0cmFiYWphciBjb24gbcO6bHRpcGxlcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBZ3JlZ2FyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICdCb3JyYXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0FncmVnYXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfCv0VzdMOhIHNlZ3VybyBkZSBxdWVyZXIgYm9ycmFyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPSAnTm8gcHVlZGUgYm9ycmFyIGVzdGUgaWRpb21hLiBFc3TDoSBzaWVuZG8gdXNhZG8gcG9yIGFsIG1lbm9zIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdFc3RlIGlkaW9tYSBlc3RhIHNpZW5kbyB1c2FkbyBwb3IgbG9zIHNpZ3VpZW50ZXMgQXJ0w61jdWxvcyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdDb25maWd1cmFjaW9uZXMgZGVsIENvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydMOtY3Vsb3MgRkFRIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIHJlZ2lzdHJvcyBGQVEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0luZm9ybWFjacOzbi1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnVGV4dG8gQ29tcGxldG8gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGRlbCBBcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1ZhbG9yYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnVmFsb3JhY2lvbiAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnZGUgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdObyBzZSBlbmNvbnRyYXJvbiB2b3RvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIHZvdG9zISBTZWEgZWwgcHJpbWVybyBlbiB2YWxvcmFyIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRGVzY2FyZ2FyIEFkanVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPSAnwr9RdcOpIHRhbiDDunRpbCBmdWUgZXN0ZSBhcnTDrWN1bG8/IFBvciBmYXZvciwgZMOpbm9zIHN1IHZhbG9yYWNpw7NuIHkgYXl1ZGUgYSBtZWpvcmFyIGxhIGJhc2UgZGUgZGF0b3MgZGUgRkFRLiBHcmFjaWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ3BvY28gw7p0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnbXV5IMO6dGlsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zZXJ0YXIgVGV4dG8gZGVsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnNlcnRhciBWw61uY3VsbyBhbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc2VydGFyIFRleHRvIHkgVsOtbmN1bG8gYWwgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gYXJ0w61jdWxvcyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdCw7pzcXVlZGEgZGUgdGV4dG8gY29tcGxldG8gZW4gYXJ0w61jdWxvcyBGQVEgKGVqOiAiSm9obipuIiBvICJXaWxsKiIpJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxzJ30gPSAnRGV0YWxsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdCdXNjYXIgYXJ0w61jdWxvcyBjb24gbGEgcGFsYWJyYSBjbGF2ZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9ICdGaWx0cm8gcGFyYSBlbCBIVE1MIHJlc3VsdGFudGUgcGFyYSBhZ3JlZ2FyIHbDrW5jdWxvcyBhIHVuYSBjYWRlbmEgZGV0ZXJtaW5hZGEuIEVsIGVsZW1lbnRvIEltYWdlbiBjb250ZW1wbGEgZG9zIHRpcG9zIGRlIHJlZ2lzdHJvcy4gRWwgcHJpbWVybyBlcyBlbCBub21icmUgZGUgdW5hIGltYWdlbiAocG9yIGVqZW1wbG8gZmFxLnBuZykuIEVuIGVzdGUgY2FzbyBzZSB1dGlsaXphcsOhIGxhIHJ1dGEgZGUgaW3DoWdlbmVzIGRlIE9UUlMuIEVsIHNlZ3VuZG8gZXMgdW4gdsOtbmN1bG8gYSB1bmEgaW1hZ2VuIGV4dGVybmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ29sb3IgQ1NTIHBhcmEgZWwgcmVzdWx0YWRvIGRlIGxhIHZvdGFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0FkbWluaXN0cmFjacOzbiBkZSBDYXRlZ29yw61hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdOw7ptZXJvIGRlIGRlY2ltYWxlcyBwYXJhIGVsIHJlc3VsdGFkbyBkZSBsYSB2b3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbWJyZSBkZSBjYXRlZ29yw61hIHBvciBvbWlzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnSWRpb21hIHBvciBvbWlzacOzbiBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBtb2RvIGlkaW9tYSBzaW1wbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1ByaW9yaWRhZCBwb3Igb21pc2nDs24gZGUgbG9zIHRpY2tldHMgcGFyYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFc3RhZG8gcG9yIG9taXNpw7NuIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRXN0YWRvIHBvciBvbWlzacOzbiBkZSBsb3MgdGlja2V0cyBwYXJhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9ICdWYWxvciBwb3Igb21pc2nDs24gcGFyYSBlbCBwYXLDoW1ldHJvICJBY3Rpb24iIHBhcmEgZWwgImZyb25lbmQiIHDDumJsaWNvLiBFbCBwYXLDoW1ldHJvICJBY3Rpb24iIGVzIHVzYWRvIGRvIGVuIGxvcyAic2NyaXB0cyIgZGVsIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9ICdEZWZpbmUgdW4gbcOzZHVsbyBkZSB0aXBvIHJlc3VtZW4gcGFyYSBtb3N0cmFyIGxhIHZpc3RhIGNvcnRhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0gJ0RlZmluZSB1biBtw7NkdWxvIHRpcG8gcmVzdW1lbiBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgY29ydGEgZGUgdW4gbGlzdGFkbyBkZSBGQVFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gdW5hIGLDunNxZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluZSBlbCBzZW50aWRvIGRlbCBvcmRlbiBwb3Igb21pc2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgZWwgc2VudGlkbyBkZWwgb3JkZW4gcG9yIG9taXNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgZWwgc2VudGlkbyBkZWwgb3JkZW4gcG9yIG9taXNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgRXhwbG9yYWRvciBGQVEuIEVzdGEgb3BjacOzbiBubyB0aWVuZSBlZmVjdG9zIGVuIGxhIHBvc2ljacOzbiBkZSBsYXMgY29sdW1uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYml0w6Fjb3JhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICdEZWZpbmUgbGFzIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGxhIGLDunNxdWVkYSBGQVEuIEVzdGEgb3BjacOzbiBubyB0aWVuZSBlZmVjdG9zIGVuIGxhIHBvc2ljacOzbiBkZSBsYXMgY29sdW1uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0gJ0RlZmluZSBkw7NuZGUgc2UgbW9zdHJhcsOhIGVsIHbDrW5jdWxvIFwnSW5zZXJ0YXIgRkFRXCcuIE5vdGE6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1eWUgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgeSBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmljacOzbiBkZWwgY2FtcG8gImZyZWUgdGV4dCIgcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0JvcnJhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0hhYmlsaXRhciBtw7psdGlwbGVzIGlkaW9tYXMgZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdIYWJpbGl0YXIgZWwgbWVjYW5pc21vIGRlIHZhbG9yYWNpw7NuIGVuIGVsIG3Ds2R1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnQml0w6Fjb3JhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIHRpcG8gcmVzdW1lbiAiQ29ydG8iIGRlIGxhIEJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMw61taXRlIHBhcmEgbGEgdmlzdGEgdGlwbyByZXN1bWVuICJDb3J0byIgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0zDrW1pdGUgcG9yIHDDoWdpbmEgcGFyYSBsYSB2aXN0YSB0aXBvIHJlc3VtZW4gIkNvcnRvIiBkZSBsYSBCaXTDoWNvcmEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMw61taXRlIHBvciBww6FnaW5hIHBhcmEgbGEgdmlzdGEgdGlwbyByZXN1bWVuICJDb3J0byIgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdTZXBhcmFkb3IgZGUgbGEgcnV0YSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdFbnJ1dGFkb3IgcGFyYSBsYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ8OBcmVhLUZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdSZWdpc3RybyBkZSBtw7NkdWxvICJGcm9udGVuZCIgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwbyBwYXJhIGxhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlhIGRlIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBjYW1wb3MgaW50ZXJub3MgZW4gbG9zIHRpY2tldHMgYmFzYWRvcyBlbiB1biBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBlbCBub21icmUgZGUgY2FkYSBjYW1wbyBlbiBsb3MgdGlja2V0cyBiYXNhZG9zIGVuIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjZXMgZG9uZGUgbGEgQnVzcXVlZGEgUsOhcGlkYSBkZWJlIHNlciBtb3N0cmFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0JpdMOhY29yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnQWRtaW5pc3RyYWNpw7NuIGRlIElkaW9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdMYSBjbGF2ZSBzZSBlbmN1ZW50cmEgZGVmaW5pZGEgZW4gZWwgYXJjaGl2byBkZSBpZGlvbWEgKl9GQVEucG0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ1ZpbmN1bGFyIG90cm8gb2JqZWN0byBhIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGVuIGxhIGJpdMOhY29yYSBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaC4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VuZXJhciBlbCBwZXJmaWwgaHRtbCAiT3BlblNlYXJjaCIgcGFyYSBiw7pzcXVlZGFzIGNvcnRhcyBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ051ZXZvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICfCv0xvcyBudWV2b3MgYXJ0w61jdWxvcyBGQVEgcmVxdWllcmVuIGFwcm9iYWNpw7NuIGFudGVzIGRlIHNlciBwdWJsaWNhZG9zPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOw7ptZXJvIGRlIMO6bHRpbW9zIGFydMOtY3Vsb3MgYWN0dWFsaXphZG9zIHF1ZSBzZSBtb3N0cmFyw6FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ07Dum1lcm8gZGUgw7psdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zIHF1ZSBzZSBtb3N0cmFyw6FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCBUb3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9ICdQYXLDoW1ldHJvcyBkZSBsYXMgcMOhZ2luYXMgKGRvbmRlIHNlIG11ZXN0cmFuIGxvcyBhcnTDrWN1bG9zIEZBUSkgZGUgbGEgdmlzdGEgdGlwbyByZXN1bWVuIGNvcnRvIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPSAnUGFyw6FtZXRyb3MgZGUgbGFzIHDDoWdpbmFzIChkb25kZSBzZSBtdWVzdHJhbiBsb3MgYXJ0w61jdWxvcyBGQVEpIGRlIGxhIHZpc3RhIHRpcG8gcmVzdW1lbiBjb3J0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdJbXByaW1pciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRmlsYSBwYXJhIGxhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdSYW5nb3MgcGFyYSBsYSB2b3RhY2nDs24uIExhIGxsYXZlIGRlYmUgZXN0YXIgZXhwcmVzYWRhIGVuIHBvcmNlbnRhamVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnQsO6c3F1ZWRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnwr9Nb3N0cmFyIGNvbnRlbmlkbyBIVE1MIGVuIGxvcyBhcnTDrWN1bG9zIEZBUT8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ8K/TW9zdHJhciBsYSBydXRhIGRlbCBGQVE/IHNpL25vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IFdZU0lXWUcgZWRpdG9yIGluIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmFyIGVsIGVkaXRvciBXWVNJV1lHIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnwr9Nb3N0cmFyIGxvcyBhcnTDrWN1bG9zIGRlIGxhcyBzdWJjYXRlZ29yw61hcz8gc2kvbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbG9zIMO6bHRpbW9zIGFydMOtY3Vsb3MgYWN0dWFsaXphZG9zIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbG9zIMO6bHRpbW9zIGFydMOtY3Vsb3MgY3JlYWRvcyBlbiBsYXMgaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGFydMOtY3Vsb3MgVG9wIDEwIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbGEgdm90YWNpw7NuIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSB2w61uY3Vsb3IgdW4gYXJ0w61jdWxvIEZBUSBjb24gb3Ryb3Mgb2JqZXRvcyBlbiBzdSB2aXN0YSBkZSBkZXRhbGxlcyBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSBib3JyYXIgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBkZSBkZXRhbGxlcyBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZXMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBwYXJhIGVkaXRhciB1biBhcnTDrWN1bG8gRkFRIGVuIHN1IHZpc3RhIGRlIGRldGFsbGVzIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBpciBoYWNpYSBhdHJhcyBlbiBsYSB2aXN0YSBkZSBkZXRhbGxlcyBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBpbXByaW1pciB1biBhcnTDrWN1bG8gRkFRIGVuIHN1IHZpc3RhIGRlIGRldGFsbGVzIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPSAnRWwgaWRlbnRpZmljYWRvciBwYXJhIHVuIEZBUSwgcG9yIGVqZW1wbG8gRkFRIywgS0IjLCBNaUZBUSMuIEZBUSMgZXMgbGEgb3BjacOzbiBwb3Igb21pc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIFwnRkFRXCcgcHVlZGUgdmluY3VsYXJzZSBjb24gb3Ryb3Mgb2JqZXRvcyBcJ0ZBUVwnIHV0aWxpemFuZG8gZWwgdGlwbyBkZSB2w61uY3VsbyBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICdFc3RlIGFqdXN0ZSBkZWZpbmUgcXVlIHVuIG9iamV0byBcJ0ZBUVwnIHB1ZWRlIHZpbmN1bGFyc2UgY29uIG90cm9zIG9iamV0b3MgXCdGQVFcJyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgdsOtbmN1bG8gXCdQYXJlbnRDaGlsZFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gXCdGQVFcJyBwdWVkZSB2aW5jdWxhcnNlIGNvbiBvdHJvcyBvYmpldG9zIFwnVGlja2V0XCcgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIHbDrW5jdWxvIFwnTm9ybWFsXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIFwnRkFRXCcgcHVlZGUgdmluY3VsYXJzZSBjb24gb3Ryb3Mgb2JqZXRvcyBcJ1RpY2tldFwnIHV0aWxpemFuZG8gZWwgdGlwbyBkZSB2w61uY3VsbyBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDdWVwbyBkZWwgVGlja2V0IHBhcmEgYXByb2JhY2nDs24gZGUgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdBc3VudG8gZGVsIFRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IG5lZWRzIGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwISd9ID0gJ1VuYSBjYXRlZ29yw61hIGRlYmUgdGVuZXIgYWwgbWVub3MgdW4gZ3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIGNvbW1lbnQhJ30gPSAnVW5hIGNhdGVnb3LDrWEgZGViZSB0ZW5lciB1biBjb21lbnRhcmlvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ0xvcyBncnVwb3MgYWdlbnRlcyBwdWVkZW4gYWNjZWRlciBhIGVzdGEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlcyd9ID0gJ0FydMOtY3Vsb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcmllcyd9ID0gJ0NhdGVnb3JpYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gZWwgRXhwbG9yYWRvciBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gZWwgRXhwbG9yYWRvciBGQVEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgZWwgc2VudGlkbyBkZWwgb3JkZW4gcG9yIG9taXNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZWwgRXhwbG9yYWRvciBGQVEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIEV4cGxvcmVyIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgZWwgc2VudGlkbyBkZWwgb3JkZW4gcG9yIG9taXNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZWwgRXhwbG9yYWRvciBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5lIGTDs25kZSBlcyBxdWUgbGEgbGlnYSBcJ0luc2VydGFyIEZBUVwnIHNlcsOhIGRlc3BsZWdhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZTogJ30gPSAnQm9ycmFyOiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlsU2VhcmNoJ30gPSAnQnVzcXVlZGEgZGV0YWxsYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBDYXRlZ29yeT8nfSA9ICfCv0VzdMOhIHNlZ3VybyBkZSBxdWVyZXIgYm9ycmFyIGVzdGEgQ2F0ZWdvcsOtYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIExhbmd1YWdlPyd9ID0gJ8K/RXN0w6Egc2VndXJvIGRlIHF1ZXJlciBib3JyYXIgZXN0ZSBJZGlvbWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSd9ID0gJ0NhdGVnb3LDrWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBkZW50cm8gZGVsIGV4cGxvcmFkb3IgZW4gbGEgaW50ZXJmYWNlIGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBjb21vIHJlc3VsdGFkbyBkZWwgRXhwbG9yYWRvciBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3J5IGFjY2Vzc2libGUuIFRvIGNyZWF0ZSBhbiBhcnRpY2xlIHlvdSBuZWVkIGFjY2VzcyB0byBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkuIFBsZWFzZSBjaGVjayB5b3VyIGdyb3VwL2NhdGVnb3J5IHBlcm1pc3Npb24gdW5kZXIgLWNhdGVnb3J5IG1lbnUtISd9ID0gJ05vIHNlIHB1ZWRlIGFjY2VkZXIgYSBuaW5ndW5hIGNhdGVnb3LDrWEuIFBhcmEgY3JlYXIgdW4gYXJ0aWN1bG8gdXN0ZWQgZGViZSB0ZW5lciBhY2Nlc28gYSBtw61uaW1vIHVuYSBjYXRlZ29yw61hLiBQb3IgZmF2b3IgcmV2aXNlIHN1cyBwZXJtaXNvcyBkZSBncnVwby9jYXRlZ29yw61hIGVuIGVsIC1tZW7DuiBjYXRlZ29yw61hLSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIHBvciBjYWRhIHDDoWdpbmEgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgcG9yIGNhZGEgcMOhZ2luYSBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgZGVudHJvIGRlbCBleHBsb3JhZG9yIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnQnVzcXVlZGEgcsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJ01vc3RyYXIgZWwgQm90w7NuICJJbnNlcnRhciBWw61uY3VsbyIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnTW9zdHJhciBlbCBCb3TDs24gIkluc2VydGFyIFRleHRvICYgVsOtbmN1bG8iIGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgYXJ0w61jdWxvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnTW9zdHJhciBlbCBCb3TDs24gIkluc2VydGFyIFRleHRvIiBlbiBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIGFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSd9ID0gJ011ZXN0cmEgdW4gbGlnYSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZXMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB0aXRsZSBpcyByZXF1aXJlZC4nfSA9ICdFbCB0w610dWxvIGVzIHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBDYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBTdWJDYXRlZ29yaWVzJ30gPSAnRXN0YSBDYXRlZ29yw61hIGVzIHBhZHJlIGRlIGxhcyBzaWd1aWVudGVzIFN1YkNhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2UocyknfSA9ICdFc3RhIENhdGVnb3LDrWEgZXN0YSBzaWVuZG8gdXNhZGEgcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgTGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBJZGlvbWEgZXN0YSBzaWVuZG8gdXNhZG8gcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGVkJ30gPSAnQWN0dWFsaXphZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgQ2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBBcnRpY2xlISBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IGFub3RoZXIgQ2F0ZWdvcnknfSA9ICdObyBwdWVkZSBib3JyYXIgZXN0YSBDYXRlZ29yw61hLiBFc3TDoSBzaWVuZG8gdXNhZGEgcG9yIGFsIG1lbm9zIHVuIEFydMOtY3VsbyBGQVEgeS9vIGVzIHBhZHJlIGRlIGFsIG1lbm9zIG90cmEgQ2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBMYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIEFydGljbGUhJ30gPSAnTm8gcHVlZGUgYm9ycmFyIGVzdGUgSWRpb21hLiBFc3TDoSBzaWVuZG8gdXNhZG8gcG9yIGFsIG1lbm9zIHVuIEFydMOtY3VsbyBGQVEnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdVbHRpbW9zIGFydMOtY3Vsb3MgbW9kaWZpY2Fkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnVWx0aW1vcyBhcnTDrWN1bG9zIGNyZWFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBkZSBhcnTDrWN1bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViIENhdGVnb3JpYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ05vIHNlbGVjY2lvbm8gcHVudGFqZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncMO6YmxpY28gKHRvZG9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGFnZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnRMOtYSBpbmljaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnTWVzIGluaWNpYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ0HDsW8gaW5pY2lhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnRMOtYSBmaW5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICdNZXMgZmluYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdBw7FvIGZpbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ0dyYWNpYXMgcG9yIHN1IHZvdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVXN0ZWQgeWEgaGEgdm90YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWlyIEFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnTm90aWNpYXMgRkFRIChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnTm90aWNpYXMgRkFRIChjcmVhZG8gbnVldm8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdOb3RpY2lhcyBGQVEgKFJlY2llbnRlbWVudGUgbW9kaWZpY2FkbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnQ2F0ZWdvcsOtYSBkZSBGQVEgYWN0dWFsaXphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0NhdGVnb3LDrWEgZGUgRkFRIGFncmVnYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ1VuYSBjYXRlZ29yw61hIGRlYmUgdGVuZXIgdW4gbm9tYnJlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdJZGlvbWEgZGUgRkFRIGFncmVnYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0lkaW9tYSBkZSBGQVEgYWN0dWFsaXphZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0VsIG5vbWJyZSBlcyByZXF1ZXJpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdFc3RlIGlkaW9tYSB5YSBleGlzdGUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnQWdyZWdhciBBcnTDrWN1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0xhIGNhdGVnb3LDrWEgZXMgcmVxdWVyaWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0Fwcm92YWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0FkbWluaXN0cmFjacOzbiBkZSBDYXRlZ29yw61hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWdyZWdhciBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0JvcnJhciBDYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnQWNlcHRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBZ3JlZ2FyIENhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0VkaXRhciBDYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTZXJhbiBtb3N0cmFkb3MgY29tbyBjb21lbnRhcmlvcyBlbiBlbCBleHBsb3JhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1BvciBmYXZvciBzZWxlY2Npb25lIGFsIG1lbm9zIHVuIGdydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVwb3MgZGUgYWdlbnRlcyBxdWUgcHVlZGVuIGFjY2VkZXIgYSBsb3MgYXJ0w61jdWxvcyBkZSBlc3RhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ8K/RXN0w6Egc2VndXJvIGRlIHF1ZXJlciBib3JyYXIgZXN0YSBjYXRlZ29yw61hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9ICdObyBwdWVkZSBib3JyYXIgZXN0YSBjYXRlZ29yw61hLiBFc3TDoSBzaWVuZG8gdXNhZGEgcG9yIGFsIG1lbm9zIHVuIGFydMOtY3VsbyBGQVEgeS9vIGVzIHBhZHJlIGRlIGFsIG1lbm9zIG90cmEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSBlc3RhIHNpZW5kbyB1c2FkYSBwb3IgbG9zIHNpZ3VpZW50ZXMgYXJ0w61jdWxvcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRXN0YSBjYXRlZ29yw61hIGVzIHBhZHJlIGRlIGxhcyBzaWd1aWVudGVzIFN1YkNhdGVnb3LDrWFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ8K/RXN0w6Egc2VndXJvIGRlIHF1ZXJlciBib3JyYXIgZXN0ZSBhcnTDrWN1bG8gRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmFkb3IgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBSw6FwaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBBdmFuemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViY2F0ZWdvcsOtYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0w61jdWxvcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBzdWJjYXRlZ29yw61hcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gZGF0b3MgZW4gbGEgQml0w6Fjb3JhIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdBZG1pbmlzdHJhY2nDs24gZGUgSWRpb21hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPSAnVXRpbGljZSBlc3RhIGZ1bmNpb25hbGlkYWQgc2kgZGVzZWEgdHJhYmFqYXIgY29uIG3Dumx0aXBsZXMgaWRpb21hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnQWdyZWdhciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnQm9ycmFyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBZ3JlZ2FyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdGFyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnwr9Fc3TDoSBzZWd1cm8gZGUgcXVlcmVyIGJvcnJhciBlc3RlIGlkaW9tYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0gJ05vIHB1ZWRlIGJvcnJhciBlc3RlIGlkaW9tYS4gRXN0w6Egc2llbmRvIHVzYWRvIHBvciBhbCBtZW5vcyB1biBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBpZGlvbWEgZXN0YSBzaWVuZG8gdXNhZG8gcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQ29uZmlndXJhY2lvbmVzIGRlbCBDb250ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnTDrWN1bG9zIEZBUSBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiByZWdpc3Ryb3MgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICdJbmZvcm1hY2nDs24tRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90b3MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1RleHRvIENvbXBsZXRvIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZWwgQXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdWYWxvcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ1ZhbG9yYWNpb24gJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RlIDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnTm8gc2UgZW5jb250cmFyb24gdm90b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiB2b3RvcyEgU2VhIGVsIHByaW1lcm8gZW4gdmFsb3JhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0Rlc2NhcmdhciBBZGp1bnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0gJ8K/UXXDqSB0YW4gw7p0aWwgZnVlIGVzdGUgYXJ0w61jdWxvPyBQb3IgZmF2b3IsIGTDqW5vcyBzdSB2YWxvcmFjacOzbiB5IGF5dWRlIGEgbWVqb3JhciBsYSBiYXNlIGRlIGRhdG9zIGRlIEZBUS4gR3JhY2lhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdwb2NvIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ211eSDDunRpbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luc2VydGFyIFRleHRvIGRlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5zZXJ0YXIgVsOtbmN1bG8gYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnNlcnRhciBUZXh0byB5IFbDrW5jdWxvIGFsIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGFydMOtY3Vsb3MgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnQsO6c3F1ZWRhIGRlIHRleHRvIGNvbXBsZXRvIGVuIGFydMOtY3Vsb3MgRkFRIChlajogIkpvaG4qbiIgbyAiV2lsbCoiKSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlscyd9ID0gJ0RldGFsbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQnVzY2FyIGFydMOtY3Vsb3MgY29uIGxhIHBhbGFicmEgY2xhdmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1DDumJsaWNvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPSAnRmlsdHJvIHBhcmEgZWwgSFRNTCByZXN1bHRhbnRlIHBhcmEgYWdyZWdhciB2w61uY3Vsb3MgYSB1bmEgY2FkZW5hIGRldGVybWluYWRhLiBFbCBlbGVtZW50byBJbWFnZW4gY29udGVtcGxhIGRvcyB0aXBvcyBkZSByZWdpc3Ryb3MuIEVsIHByaW1lcm8gZXMgZWwgbm9tYnJlIGRlIHVuYSBpbWFnZW4gKHBvciBlamVtcGxvIGZhcS5wbmcpLiBFbiBlc3RlIGNhc28gc2UgdXRpbGl6YXLDoSBsYSBydXRhIGRlIGltw6FnZW5lcyBkZSBPVFJTLiBFbCBzZWd1bmRvIGVzIHVuIHbDrW5jdWxvIGEgdW5hIGltYWdlbiBleHRlcm5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NvbG9yIENTUyBwYXJhIGVsIHJlc3VsdGFkbyBkZSBsYSB2b3RhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdBZG1pbmlzdHJhY2nDs24gZGUgQ2F0ZWdvcsOtYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnTsO6bWVybyBkZSBkZWNpbWFsZXMgcGFyYSBlbCByZXN1bHRhZG8gZGUgbGEgdm90YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21icmUgZGUgY2F0ZWdvcsOtYSBwb3Igb21pc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0lkaW9tYSBwb3Igb21pc2nDs24gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gbW9kbyBpZGlvbWEgc2ltcGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdQcmlvcmlkYWQgcG9yIG9taXNpw7NuIGRlIGxvcyB0aWNrZXRzIHBhcmEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnRXN0YWRvIHBvciBvbWlzacOzbiBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0VzdGFkbyBwb3Igb21pc2nDs24gZGUgbG9zIHRpY2tldHMgcGFyYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPSAnVmFsb3IgcG9yIG9taXNpw7NuIHBhcmEgZWwgcGFyw6FtZXRybyAiQWN0aW9uIiBwYXJhIGVsICJmcm9uZW5kIiBww7pibGljby4gRWwgcGFyw6FtZXRybyAiQWN0aW9uIiBlcyB1c2FkbyBkbyBlbiBsb3MgInNjcmlwdHMiIGRlbCBzaXN0ZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPSAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgdGlwbyByZXN1bWVuIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBjb3J0YSBkZSBsYSBiaXTDoWNvcmEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9ICdEZWZpbmUgdW4gbcOzZHVsbyB0aXBvIHJlc3VtZW4gcGFyYSBtb3N0cmFyIGxhIHZpc3RhIGNvcnRhIGRlIHVuIGxpc3RhZG8gZGUgRkFRcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3FlZGEgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3FlZGEgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgZWwgc2VudGlkbyBkZWwgb3JkZW4gcG9yIG9taXNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICdEZWZpbmUgbGFzIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIEV4cGxvcmFkb3IgRkFRLiBFc3RhIG9wY2nDs24gbm8gdGllbmUgZWZlY3RvcyBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICdEZWZpbmUgbGFzIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGxhIGJpdMOhY29yYSBkZSBGQVEuIEVzdGEgb3BjacOzbiBubyB0aWVuZSBlZmVjdG9zIGVuIGxhIHBvc2ljacOzbiBkZSBsYXMgY29sdW1uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnRGVmaW5lIGxhcyBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcsOhbiBlbiBsYSBiw7pzcXVlZGEgRkFRLiBFc3RhIG9wY2nDs24gbm8gdGllbmUgZWZlY3RvcyBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9ICdEZWZpbmUgZMOzbmRlIHNlIG1vc3RyYXLDoSBlbCB2w61uY3VsbyBcJ0luc2VydGFyIEZBUVwnLiBOb3RhOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdXllIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IHkgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pY2nDs24gZGVsIGNhbXBvICJmcmVlIHRleHQiIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdCb3JyYXIgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdFZGl0YXIgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdIYWJpbGl0YXIgbcO6bHRpcGxlcyBpZGlvbWFzIGVuIGVsIG3Ds2R1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnSGFiaWxpdGFyIGVsIG1lY2FuaXNtbyBkZSB2YWxvcmFjacOzbiBlbiBlbCBtw7NkdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0JpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgcGFyYSBsYSB2aXN0YSB0aXBvIHJlc3VtZW4gIkNvcnRvIiBkZSBsYSBCaXTDoWNvcmEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIHRpcG8gcmVzdW1lbiAiQ29ydG8iIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMw61taXRlIHBvciBww6FnaW5hIHBhcmEgbGEgdmlzdGEgdGlwbyByZXN1bWVuICJDb3J0byIgZGUgbGEgQml0w6Fjb3JhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnTMOtbWl0ZSBwb3IgcMOhZ2luYSBwYXJhIGxhIHZpc3RhIHRpcG8gcmVzdW1lbiAiQ29ydG8iIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgcGF0aCBzZXBhcmF0b3IuJ30gPSAnU2VwYXJhZG9yIGRlIGxhIHJ1dGEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRW5ydXRhZG9yIHBhcmEgbGEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICfDgXJlYS1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnUmVnaXN0cm8gZGUgbcOzZHVsbyAiRnJvbnRlbmQiIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cG8gcGFyYSBsYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0b3JpYSBkZSBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgY2FtcG9zIGludGVybm9zIGVuIGxvcyB0aWNrZXRzIGJhc2Fkb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgZWwgbm9tYnJlIGRlIGNhZGEgY2FtcG8gZW4gbG9zIHRpY2tldHMgYmFzYWRvcyBlbiB1biBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIGRvbmRlIGxhIEJ1c3F1ZWRhIFLDoXBpZGEgZGViZSBzZXIgbW9zdHJhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdCaXTDoWNvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0FkbWluaXN0cmFjacOzbiBkZSBJZGlvbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAnTGEgY2xhdmUgc2UgZW5jdWVudHJhIGRlZmluaWRhIGVuIGVsIGFyY2hpdm8gZGUgaWRpb21hICpfRkFRLnBtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdWaW5jdWxhciBvdHJvIG9iamVjdG8gYSBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBlbiBsYSBiaXTDoWNvcmEgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGNvbW8gcmVzdWx0YWRvIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGNvbW8gcmVzdWx0YWRvIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPSAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZWwgcGVyZmlsIGh0bWwgIk9wZW5TZWFyY2giIHBhcmEgYsO6c3F1ZWRhcyBjb3J0YXMgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOdWV2byBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnwr9Mb3MgbnVldm9zIGFydMOtY3Vsb3MgRkFRIHJlcXVpZXJlbiBhcHJvYmFjacOzbiBhbnRlcyBkZSBzZXIgcHVibGljYWRvcz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTsO6bWVybyBkZSDDumx0aW1vcyBhcnTDrWN1bG9zIGFjdHVhbGl6YWRvcyBxdWUgc2UgbW9zdHJhcsOhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOw7ptZXJvIGRlIMO6bHRpbW9zIGFydMOtY3Vsb3MgY3JlYWRvcyBxdWUgc2UgbW9zdHJhcsOhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgVG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPSAnUGFyw6FtZXRyb3MgZGUgbGFzIHDDoWdpbmFzIChkb25kZSBzZSBtdWVzdHJhbiBsb3MgYXJ0w61jdWxvcyBGQVEpIGRlIGxhIHZpc3RhIHRpcG8gcmVzdW1lbiBjb3J0byBkZSBsYSBiaXTDoWNvcmEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0gJ1BhcsOhbWV0cm9zIGRlIGxhcyBww6FnaW5hcyAoZG9uZGUgc2UgbXVlc3RyYW4gbG9zIGFydMOtY3Vsb3MgRkFRKSBkZSBsYSB2aXN0YSB0aXBvIHJlc3VtZW4gY29ydG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnSW1wcmltaXIgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZpbGEgcGFyYSBsYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnUmFuZ29zIHBhcmEgbGEgdm90YWNpw7NuLiBMYSBsbGF2ZSBkZWJlIGVzdGFyIGV4cHJlc2FkYSBlbiBwb3JjZW50YWplcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0LDunNxdWVkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ8K/TW9zdHJhciBjb250ZW5pZG8gSFRNTCBlbiBsb3MgYXJ0w61jdWxvcyBGQVE/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfCv01vc3RyYXIgbGEgcnV0YSBkZWwgRkFRPyBzaS9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9zdHJhciBlbCBlZGl0b3IgV1lTSVdZRyBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ8K/TW9zdHJhciBsb3MgYXJ0w61jdWxvcyBkZSBsYXMgc3ViY2F0ZWdvcsOtYXM/IHNpL25vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGxvcyDDumx0aW1vcyBhcnTDrWN1bG9zIGFjdHVhbGl6YWRvcyBlbiBsYXMgaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGxvcyDDumx0aW1vcyBhcnTDrWN1bG9zIGNyZWFkb3MgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBhcnTDrWN1bG9zIFRvcCAxMCBlbiBsYXMgaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGxhIHZvdGFjacOzbiBlbiBsYXMgaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgdsOtbmN1bG9yIHVuIGFydMOtY3VsbyBGQVEgY29uIG90cm9zIG9iamV0b3MgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZXMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgYm9ycmFyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZXMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBhcnTDrWN1bG8gRkFRIGVuIHN1IHZpc3RhIGRlIGRldGFsbGVzIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBkZSBkZXRhbGxlcyBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IHBhcmEgaXIgaGFjaWEgYXRyYXMgZW4gbGEgdmlzdGEgZGUgZGV0YWxsZXMgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBkZSBkZXRhbGxlcyBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0gJ0VsIGlkZW50aWZpY2Fkb3IgcGFyYSB1biBGQVEsIHBvciBlamVtcGxvIEZBUSMsIEtCIywgTWlGQVEjLiBGQVEjIGVzIGxhIG9wY2nDs24gcG9yIG9taXNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9ICdFc3RlIGFqdXN0ZSBkZWZpbmUgcXVlIHVuIG9iamV0byBcJ0ZBUVwnIHB1ZWRlIHZpbmN1bGFyc2UgY29uIG90cm9zIG9iamV0b3MgXCdGQVFcJyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgdsOtbmN1bG8gXCdOb3JtYWxcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPSAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gXCdGQVFcJyBwdWVkZSB2aW5jdWxhcnNlIGNvbiBvdHJvcyBvYmpldG9zIFwnRkFRXCcgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIHbDrW5jdWxvIFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIFwnRkFRXCcgcHVlZGUgdmluY3VsYXJzZSBjb24gb3Ryb3Mgb2JqZXRvcyBcJ1RpY2tldFwnIHV0aWxpemFuZG8gZWwgdGlwbyBkZSB2w61uY3VsbyBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICdFc3RlIGFqdXN0ZSBkZWZpbmUgcXVlIHVuIG9iamV0byBcJ0ZBUVwnIHB1ZWRlIHZpbmN1bGFyc2UgY29uIG90cm9zIG9iamV0b3MgXCdUaWNrZXRcJyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgdsOtbmN1bG8gXCdQYXJlbnRDaGlsZFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQ3VlcG8gZGVsIFRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQXN1bnRvIGRlbCBUaWNrZXQgcGFyYSBhcHJvYmFjacOzbiBkZSBhcnTDrWN1bG9zIEZBUS4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBuZWVkcyBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cCEnfSA9ICdVbmEgY2F0ZWdvcsOtYSBkZWJlIHRlbmVyIGFsIG1lbm9zIHVuIGdydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBjb21tZW50ISd9ID0gJ1VuYSBjYXRlZ29yw61hIGRlYmUgdGVuZXIgdW4gY29tZW50YXJpbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBjYXRlZ29yeS4nfSA9ICdMb3MgZ3J1cG9zIGFnZW50ZXMgcHVlZGVuIGFjY2VkZXIgYSBlc3RhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZXMnfSA9ICdBcnTDrWN1bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdDYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gZWwgRXhwbG9yYWRvciBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluZSBlbCBzZW50aWRvIGRlbCBvcmRlbiBwb3Igb21pc2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBFeHBsb3JlciByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGVsIHNlbnRpZG8gZGVsIG9yZGVuIHBvciBvbWlzacOzbiBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0RlZmluZSBkw7NuZGUgZXMgcXVlIGxhIGxpZ2EgXCdJbnNlcnRhciBGQVFcJyBzZXLDoSBkZXNwbGVnYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJ0JvcnJhcjogJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ0J1c3F1ZWRhIGRldGFsbGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgQ2F0ZWdvcnk/J30gPSAnwr9Fc3TDoSBzZWd1cm8gZGUgcXVlcmVyIGJvcnJhciBlc3RhIENhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBMYW5ndWFnZT8nfSA9ICfCv0VzdMOhIHNlZ3VybyBkZSBxdWVyZXIgYm9ycmFyIGVzdGUgSWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgZGVudHJvIGRlbCBleHBsb3JhZG9yIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBkZW50cm8gZGVsIGV4cGxvcmFkb3IgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIHNlciBtb3N0cmFkb3MgY29tbyByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9ICdObyBzZSBwdWVkZSBhY2NlZGVyIGEgbmluZ3VuYSBjYXRlZ29yw61hLiBQYXJhIGNyZWFyIHVuIGFydGljdWxvIHVzdGVkIGRlYmUgdGVuZXIgYWNjZXNvIGEgbcOtbmltbyB1bmEgY2F0ZWdvcsOtYS4gUG9yIGZhdm9yIHJldmlzZSBzdXMgcGVybWlzb3MgZGUgZ3J1cG8vY2F0ZWdvcsOtYSBlbiBlbCAtbWVuw7ogY2F0ZWdvcsOtYS0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBwb3IgY2FkYSBww6FnaW5hIGNvbW8gcmVzdWx0YWRvIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIHBvciBjYWRhIHDDoWdpbmEgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBzZXIgbW9zdHJhZG9zIGRlbnRybyBkZWwgZXhwbG9yYWRvciBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgc2VyIG1vc3RyYWRvcyBkZW50cm8gZGVsIGV4cGxvcmFkb3IgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWlja1NlYXJjaCd9ID0gJ0J1c3F1ZWRhIHLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICdNb3N0cmFyIGVsIEJvdMOzbiAiSW5zZXJ0YXIgVsOtbmN1bG8iIGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgYXJ0w61jdWxvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJ01vc3RyYXIgZWwgQm90w7NuICJJbnNlcnRhciBUZXh0byAmIFbDrW5jdWxvIiBlbiBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIGFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgVGV4dCIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0gJ01vc3RyYXIgZWwgQm90w7NuICJJbnNlcnRhciBUZXh0byIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UnfSA9ICdNdWVzdHJhIHVuIGxpZ2EgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBhcnTDrWN1bG8gRkFRIGVuIHN1IHZpc3RhIGRlIGRldGFsbGVzIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJDYXRlZ29yaWVzJ30gPSAnU3ViY2F0ZWdvcmlhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdGl0bGUgaXMgcmVxdWlyZWQuJ30gPSAnRWwgdMOtdHVsbyBlcyByZXF1ZXJpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgU3ViQ2F0ZWdvcmllcyd9ID0gJ0VzdGEgQ2F0ZWdvcsOtYSBlcyBwYWRyZSBkZSBsYXMgc2lndWllbnRlcyBTdWJDYXRlZ29yw61hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIENhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNlKHMpJ30gPSAnRXN0YSBDYXRlZ29yw61hIGVzdGEgc2llbmRvIHVzYWRhIHBvciBsb3Mgc2lndWllbnRlcyBBcnTDrWN1bG9zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIExhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgSWRpb21hIGVzdGEgc2llbmRvIHVzYWRvIHBvciBsb3Mgc2lndWllbnRlcyBBcnTDrWN1bG9zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSB5YSBleGlzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlZCd9ID0gJ0FjdHVhbGl6YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIENhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBhbm90aGVyIENhdGVnb3J5J30gPSAnTm8gcHVlZGUgYm9ycmFyIGVzdGEgQ2F0ZWdvcsOtYS4gRXN0w6Egc2llbmRvIHVzYWRhIHBvciBhbCBtZW5vcyB1biBBcnTDrWN1bG8gRkFRIHkvbyBlcyBwYWRyZSBkZSBhbCBtZW5vcyBvdHJhIENhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgTGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBBcnRpY2xlISd9ID0gJ05vIHB1ZWRlIGJvcnJhciBlc3RlIElkaW9tYS4gRXN0w6Egc2llbmRvIHVzYWRvIHBvciBhbCBtZW5vcyB1biBBcnTDrWN1bG8gRkFRJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZhX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfYotiu2LHbjNmGINin2YLZhNin2YUg2KrYudix24zZgSDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn2KLYrtix24zZhiDYp9mC2YTYp9mFINin24zYrNin2K8g2LTYr9mHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICfYqNin2YTYp9iq2LHbjNmGINux27Ag2YLZhNmFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAn2LLbjNixINmF2KzZhdmI2LnZh+KAjNuMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn2KfZhdiq24zYp9iyINix2Kcg2KfZhtiq2K7Yp9ioINmG2qnYsdiv2YfigIzYp9uM2K8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAn2LHZiNiyINii2LrYp9iyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAn2YXYp9mHINii2LrYp9iyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICfYs9in2YQg2KLYutin2LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ9ix2YjYsiDZvtin24zYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ9mF2KfZhyDZvtin24zYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAn2LPYp9mEINm+2KfbjNin2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn2KfYsiDYsdin24wg2LTZhdinINiz2b7Yp9iz2q/Ystin2LHbjNmFISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ9i02YXYpyDZgtio2YTYpyDYsdin24wg2K/Yp9iv2YfigIzYp9uM2K8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ9in2K7YqNin2LEgRkFRICjbsduwINiq2KfbjCDYqNix2KrYsSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICfYp9iu2KjYp9ixIEZBUSAo2KzYr9uM2K/YpyDYp9uM2KzYp9ivINi02K/ZhyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ9in2K7YqNin2LEgRkFRICjYrNiv24zYr9inINiq2LrbjNuM2LEg24zYp9mB2KrZhyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn2KrYp9uM24zYryc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn2K/YsSBFeHBsb3JlciDYqNmHINi12YjYsdiqINuM2qkg2YXYqtmGINiq2YjYttuM2K3bjCDZhtmF2KfbjNi0INiv2KfYr9mHINiu2YjYp9mH2YbYryDYtNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9ii2LHYpyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIHRleHQgZm9yIHRoZSBwYWdlIHNob3duIHRvIGN1c3RvbWVycyB0aGF0IGhhdmUgbm8gdGlja2V0cyB5ZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgcGF0aCBzZXBhcmF0b3IuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICfZhtmI2LTYqtmHINis2K/bjNivIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aW1lIHVzZSBjb21wbGV0ZSBkZXNjcmlwdGlvbiAoZGF5cywgaG91cnMsIG1pbnV0ZXMpLCBpZiBzZXQgdG8gIlllcyI7IG9yIGp1c3QgZmlyc3QgbGV0dGVyIChkLCBoLCBtKSwgaWYgc2V0IHRvICJObyIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB3aGljaCBjYW4gYWNjZXNzIHRoaXMgY2F0ZWdvcnkuJ30gPSAn2q/YsdmI2YfigIzZh9in24wg2qnYp9ix2LTZhtin2LPbjCDaqdmHINio2Ycg2KfbjNmGINiv2LPYqtmH4oCM2KjZhtiv24wg2K/Ys9iq2LHYs9uMINiv2KfYsdmG2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICfYr9iz2KrZh+KAjNio2YbYr9uM4oCM2YfYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxTZWFyY2gnfSA9ICfYrNiz2KrYrNmI24wg2KjYpyDYrNiy24zbjNin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5J30gPSAn2K/Ys9iq2YcgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3J5IGFjY2Vzc2libGUuIFRvIGNyZWF0ZSBhbiBhcnRpY2xlIHlvdSBuZWVkIGFjY2VzcyB0byBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkuIFBsZWFzZSBjaGVjayB5b3VyIGdyb3VwL2NhdGVnb3J5IHBlcm1pc3Npb24gdW5kZXIgLWNhdGVnb3J5IG1lbnUtISd9ID0gJ9iv2LPYqtix2LPbjCDYqNmHINmH24zahiDaqdiv2KfZhSDYp9iyINiv2LPYqtmH4oCM2KjZhtiv24zigIzZh9inINmF2YLYr9mI2LEg2YbbjNiz2KouINio2LHYp9uMINin24zYrNin2K8g24zaqSDZhtmI2LTYqtmHINis2K/bjNivINin2YLZhNinINio2Ycg24zaqSDYr9iz2KrZh+KAjNio2YbYr9uMINio2KfbjNivINiv2LPYqtix2LPbjCDYr9in2LTYqtmHINio2KfYtNuM2K8uINmE2LfZgdinINin2LIg2LfYsduM2YIg2YXZhtmI24wgY2F0ZWdvcnkg2K/Ys9iq2LHYs9uM4oCM2YfYp9uMINqv2LHZiNmHL9iv2LPYqtmHINix2Kcg2KjYsdix2LPbjCDZgdix2YXYp9uM24zYryEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2tTZWFyY2gnfSA9ICfYrNiz2KrYrNmI24wg2LPYsduM2LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcmllcyd9ID0gJ9iy24zYsSDYr9iz2KrZh+KAjNmH2KcnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncHVibGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdEZXJuacOocmVzIHF1ZXN0aW9ucyBtb2RpZmnDqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0Rlcm5pw6hyZXMgcXVlc3Rpb25zIGNyw6nDqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZGVzIHF1ZXN0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1NvdXMgY2F0w6lnb3JpZSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ1BhcyBkZSBzw6lsZWN0aW9uICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncHVibGljICh0b3VzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJuZSAoY2xpZW50KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuZSAob3DDqXJhdGV1ciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnSm91ciBkZSBkw6lwYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnTW9pcyBkZSBkw6lwYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICdBbm7DqWUgZGUgRMOpcGFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnSm91ciBkZSBGaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnTW9pcyBkZSBGaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdBbm7DqWUgZGUgRmluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ01lcmNpIHBvdXIgdm90cmUgdm90ZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVm91cyBhdmV6IGTDqWrDoCB2b3TDqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnSW1wcmltZXIgQXJ0aWNsZSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWNsZXMgZGUgRkFRIChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWNsZXMgZGUgRkFRIChub3V2ZWxsZXMgcXVlc3Rpb25zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0aWNsZXMgZGUgRkFRIChkZXJuaWVycyBjaGFuZ2VtZW50cyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnQ2F0w6lnb3JpZSBkZSBGQVEgbWlzZSDDoCBqb3VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnQ2F0w6lnb3JpZSBkZSBGQVEgYWpvdXTDqWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ1VuZSBjYXTDqWdvcmllIGRldnJhaXQgYXZvaXIgdW4gbm9tISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnQ2V0dGUgY2F0w6lnb3JpZSBleGlzdGUgZMOpasOgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnTGFuZ3VlIGRlIEZBUSBham91dMOpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdMYW5ndWUgZGUgRkFRIG1pc2Ugw6Agam91ciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTGUgbm9tIGVzdCByZXF1aXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnQ2V0dGUgbGFuZ3VlIGV4aXN0ZSBkw6lqw6AhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnQWpvdXRlciBBcnRpY2xlIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ1VuZSBjYXTDqWdvcmllIGVzdCByZXF1aXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXV0b3Jpc2F0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb24gQ2F0w6lnb3JpZXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0Fqb3V0IENhdMOpZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnRWZmYWNlciBDYXTDqWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnQWpvdXQgQ2F0w6lnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdGVyIENhdMOpZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlcmEgYWZmaWNow6kgY29tbWUgdW4gY29tbWVudGFpcmUgZGFucyBsXCdFeHBsb3Jlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdNZXJjaSBkZSBTw6lsZWN0aW9ubmVyIGF1IG1vaW5zIHVuIGdyb3VwZSBkZSBwZXJtaXNzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3JvdXBlcyBkXCdhZ2VudHMgcG91dmFudCBhY2PDqWRlciBhdXggYXJ0aWNsZXMgZGUgY2V0dGUgY2F0w6lnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IGVmZmFjZXIgY2V0dGUgY2F0w6lnb3JpZT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPSAnSW1wb3NzaWJsZSBkXCdlZmZhY2VyIGNldHRlIGNhdMOpZ29yaWUuIEVsbGUgZXN0IHV0aWxpc8OpZSBkYW5zIGF1IG1vaW5zIHVuIGFydGljbGUgZGUgRkFRIGV0L291IGVzdCBwYXJlbnRlIGRcJ2F1IG1vaW5zIHVuZSBhdXRyZSBjYXTDqWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0NldHRlIGNhdMOpZ29yaWUgZXN0IHV0aWxpc8OpZSBkYW5zIGxlcyBhcnRpY2xlcyBkZSBGQVEgc3VpdmFudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnQ2V0dGUgY2F0w6lnb3JpZSBlc3QgcGFyZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdWb3VsZXotdm91cyB2cmFpbWVudCBlZmZhY2VyIGNldCBhcnRpY2xlIGRlIEZBUT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdOYXZpZ2F0ZXVyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgcmFwaWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBBdmFuY8OpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU291cy1jYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpY2xlcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdQYXMgZGUgc291cy1jYXTDqWdvcmllIHRyb3V2w6llLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdQYXMgZGUgam91cm5hbCBkZSBkb25uw6llcyBGQVEgdHJvdXbDqSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIExhbmd1ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPSAnVXRpbGlzZXIgY2V0dGUgZm9uY3Rpb24gYWZpbiBkZSB0cmF2YWlsbGVyIGF2ZWMgZGUgbXVsdGlwbGVzIGxhbmd1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnQWpvdXRlciB1bmUgbGFuZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ0VmZmFjZXIgdW5lIGxhbmd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBam91dGVyIHVuZSBsYW5ndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkaXRlciBsYSBsYW5ndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IGVmZmFjZXIgY2V0dGUgbGFuZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9ICdJbXBvc3NpYmxlIGRcJ2VmZmFjZXIgY2V0dGUgbGFuZ3VlLiBFbGxlIGVzdCB1dGlsaXPDqWUgZGFucyBhdSBtb2lucyB1biBhcnRpY2xlIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0NldHRlIGxhbmd1ZSBlc3QgdXRpbGlzw6llIGRhbnMgbGVzIGFydGljbGVzIEZBUSBzdWl2YW50cyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ1LDqWdsYWdlcyBkZSBDb250ZXh0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpY2xlcyBGQVEgcGFyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAncGFzIGRlIGRvbm7DqWVzIEZBUSB0cm91dsOpZXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnRkFRLUluZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rlcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnVGV4dGUgSW50w6lncmFsIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9uIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdDb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnJSBkZSBDb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnc3VyIDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnQXVjdW4gdm90ZSB0cm91dsOpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnU295ZXogbGUgcHJlbWllciDDoCBub3RlciBjZXRlIGFydGljbGUgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdUw6lsw6ljaGFyZ2VyIEZpY2hpZXIgSm9pbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPSAnQ2V0IEFydGljbGUgw6l0YWl0LWlsIHV0aWxlPyBNZXJjaSBkZSBkb25uZXIgdW5lIG5vdGUgZXQgZGUgcGFydGljaXBlciDDoCBsXCdhbcOpbGlvcmF0aW9uIGRlIGxhIGJhc2UgZGUgZG9ubsOpZXMuIE1lcmNpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ3BldSB1dGlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd0csOocyB1dGlsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luc8OpcmVyIFRleHRlIGRhbnMgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc8OpcmVyIExpZW4gZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc8OpcmVyIFRleHRlICYgTGllbiBkYW5zIGxhIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ1BhcyBkXCdhcnRpY2xlIGRlIEZBUSB0cm91dsOpLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1JlY2hlcmNoZSB0ZXh0ZSBpbnTDqWdyYWxlIGRhbnMgbGVzIGFydGljbGVzIEZBUSAoZXguICJFbWlsaWUqIiknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbHMnfSA9ICdEw6l0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1JlY2hlcmNoZSBkZXMgQXJ0aWNsZXMgYXZlYyBtb3QgY2zDqSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUHVibGljJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIGRlcyBjYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbSBkZSBjYXTDqWdvcmllIHBhciBkw6lmYXV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1N1cHByaW1lciBjZXR0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ01vZGlmaWVyIGNldHRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlxdWUgZGUgY2V0dGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIGRlcyBsYW5ndWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnSW1wcmltZXIgY2V0dGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnUmVjaGVyY2hlIGRhbnMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnQWZmaWNoZXIgbGVzIMOpbMOpbWVudHMgZGVzIHNvdXMtY2F0w6lnb3JpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dyb3VwZXMgZFwnQWdlbnRzIHBvdXZhbnQgYWNjw6lkZXIgw6AgY2V0dGUgY2F0w6lnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yaWVzJ30gPSAnQ2F0w6lnb3JpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlsU2VhcmNoJ30gPSAnRMOpdGFpbHMgZGUgbGEgcmVjaGVyY2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3J5IGFjY2Vzc2libGUuIFRvIGNyZWF0ZSBhbiBhcnRpY2xlIHlvdSBuZWVkIGFjY2VzcyB0byBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkuIFBsZWFzZSBjaGVjayB5b3VyIGdyb3VwL2NhdGVnb3J5IHBlcm1pc3Npb24gdW5kZXIgLWNhdGVnb3J5IG1lbnUtISd9ID0gJ0F1Y3VuIGNhdMOpZ29yaWUgYWNjZXNzaWJsZS4gUG91ciBjcsOpZXIgdW5lIHF1ZXN0aW9uLCB2b3VzIGRldmV6IGF2b2lyIGFjY8OocyDDoCBhdSBtb2lucyB1bmUgY2F0w6lnb3JpZS4gU1ZQIHbDqXJpZmlleiBsZXMgcGVybWlzc2lvbnMgZGUgdm90cmUgZ3JvdXBlL2NhdMOpZ29yaWUgdmlhIGxlIG1lbnUgLWNhdMOpZ29yaWUtICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2tTZWFyY2gnfSA9ICdSZWNoZXJjaGUgcmFwaWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICdTb3VzLWNhdMOpZ29yaWVzJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2JlbHPFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdwdWJsaWt1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2vDvGxzxZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUS1zb3JzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMZWd1dMOzYmIgdsOhbHRvem90dCBlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTGVndXTDs2JiIGzDqXRyZWhvem90dCBlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdBbGthdGVnw7NyacOhamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdOaW5jcyDDqXJ0w6lrZWzDqXMga2l2w6FsYXN6dHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdueWlsdsOhbm9zICjDtnNzemVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAna8O8bHPFkSAow7xneWbDqWwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdiZWxzxZEgKMO8Z3lpbnTDqXrFkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnS2V6ZMWRIG5hcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ0tlemTFkSBow7NuYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ0tlemTFkSDDqXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ1rDoXLDsyBuYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnWsOhcsOzIGjDs25hcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgeWVhcid9ID0gJ1rDoXLDsyDDqXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnU3phdmF6YXTDoXQga8O2c3rDtm5qw7xrISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ03DoXIgc3phdmF6b3R0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ZBUSBjaWtrIG55b210YXTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFRIGNpa2sgKFRvcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdGQVEgY2lrayAow7pqKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnRkFRIGNpa2sgKHbDoWx0b3pvdHQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUSBrYXRlZ8OzcmlhIG3Ds2Rvc3VsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUSBrYXRlZ8OzcmlhIGhvenrDoWFkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ1N6w7xrc8OpZ2VzLCBob2d5IGEga2F0ZWfDs3Jpw6F0IGVsbmV2ZXp6ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0Ega2F0ZWfDs3JpYSBtw6FyIGzDqXRlemlrISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFRIG55ZWx2IGhvenrDoWFkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0ZBUSBueWVsdiBtw7Nkb3N1bHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0EgbsOpdiBzesO8a3PDqWdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdBIG55ZWx2IG3DoXIgbMOpdGV6aWshJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnRkFRIGNpa2sgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnQSBrYXRlZ8OzcmlhIHN6w7xrc8OpZ2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0rDs3bDoWhhZ3nDoXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIGthdGVnw7NyaWEga2V6ZWzDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSB0w7ZybMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdBIGLDtm5nw6lzesWRYmVuIG1lZ2plZ3l6w6lza8OpbnQgZm9nIG1lZ2plbGVubmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnS8OpcmVtLCB2w6FsYXNzem9uIGxlZ2Fsw6FiYiBlZ3kgam9nb3N1bHRzw6FnIGNzb3BvcnRvdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ8OcZ3lpbnTDqXrFkSBjc29wb3J0LCBhbWVseWlrIGhvenrDoWbDqXIgYSBjaWtrZWtoZXogZWJiZW4gYSBrYXRlZ8OzcmnDoWJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1ZhbMOzYmFuIHTDtnLDtmxuaSBha2FyamEgYSBrYXRlZ8OzcmnDoXQ/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0gJ0Ega2F0ZWfDs3JpYSBuZW0gdMO2csO2bGhldMWRLiBGQVEgY2lrayBoYXN6bsOhbGphIHZhZ3kgbcOhcyBrYXRlZ8OzcmlhIHN6w7xsxZFqZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdBIGthdGVnw7NyaWEgYSBrw7Z2ZXRrZXrFkSBGQVEgY2lra2VrbsOpbCBoYXN6bsOhbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnQSBrYXRlZ8OzcmlhIGEga8O2dmV0a2V6xZEga2F0ZWfDs3Jpw6FrIHN6w7xsxZFqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdWYWzDs2JhbiB0w7Zyw7ZsbmkgYWthcmphIGV6dCBhIEZBUSBjaWtrZXQ/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRkFRLULDtm5nw6lzesWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ0d5b3Jza2VyZXPDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnw5Zzc3pldGV0dCBrZXJlc8Opcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnQWxrYXRlZ8OzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUSBjaWtrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTmluY3MgYWxrYXRlZ8OzcmlhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdOaW5jcyBGQVEtSm91cm5hbCBhZGF0Lic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdGQVEgbnllbHYga2V6ZWzDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPSAnSGFzem7DoWxqYSBlenQgYSBzem9sZ8OhbHRhdMOhc3QsIGhhIHTDtmJiIG55ZWx2dmVsIHN6ZXJldG5lIGRvbGdvem5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdOeWVsdiBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnTnllbHYgdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ055ZWx2IGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnTnllbHYgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSBueWVsdmV0Pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPSAnQSBueWVsdiBuZW0gdMO2csO2bGhldMWRLCBsZWdhbMOhYmIgZWd5IEZBUSBjaWtrIGhhc3puw6FsamEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXogYSBueWVsdiBoYXN6bsOhbGF0YmFuIHZhbiBhIGvDtnZldGtlesWRIEZBUSBjaWtrbsOpbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ1RhcnRhbG9tIGJlw6FsbMOtdMOhc29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0ZBUSBjaWtrZWsgb2xkYWxhbmvDqW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ05pbmNzIEZBUSBhZGF0Lic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICdGQVEtaW5mw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdTemF2YXphdG9rJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEgdGVsamVzIHN6w7Z2ZWcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFRIGtlcmVzw6lzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUSBpbmZvcm3DoWNpw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnw4lydMOpa2Vsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnw4lydMOpa2Vsw6lzICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICc1LWLFkWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnTmluY3Mgc3phdmF6YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdOaW5jcyBzemF2YXphdCEgTGVneWVuIGF6IGVsc8WRLCBha2kgw6lydMOpa2VsaSBhIEZBUSBjaWtrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdNZWxsw6lrbGV0IGxldMO2bHTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0gJ0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ25lbSBzZWfDrXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnbmFneW9uIHNlZ8OtdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0ZBUSBzesO2dmVnIGJlw61yw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdGQVEgbGluayBiZcOtcsOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0ZBUSBzesO2dmVnIMOpcyBsaW5rIGJlw61yw6FzYSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05lbSB0YWzDoWxoYXTDsyBGQVEgY2lray4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdUZWxqZXMgc3rDtnZlZ2VzIGtlcmVzw6lzIGEgRkFRIGNpa2tla2JlbiAocGwuICJKKm5vcyIgb3IgIktvdioiKSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlscyd9ID0gJ1LDqXN6bGV0ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdDaWtrZWsga2VyZXPDqXNlIGt1bGNzc3phdmFra2FsJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdOeWlsdsOhbm9zJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPSAnRWd5IHN6xbFyxZEgYSBIVE1MIGtpbWVuZXRoZXosIGhvZ3kgaG96esOhYWRqb24gbGlua2VrZXQgYSBkZWZpbmnDoWx0IHN6w7Z2ZWdla2hlei4gQXogSW1hZ2UgZWxlbSBrw6l0ZsOpbGUgYmVtZW5ldGV0IGVuZ2VkLiBBIGvDqXAgbmV2ZSBheiBlbHPFkSAocGwuIGZhcS5wbmcpLiBFYmJlbiBheiBlc2V0YmVuIGF6IE9UUlMga8OpcGVrIMO6dHZvbmFsYSBrZXLDvGwgZmVsaGFzem7DoWzDoXNyYS4gQSBtw6Fzb2RpayBsZWhldMWRc8OpZyBhIGvDqXByZSBtdXRhdMOzIGxpbmsgYmVsaWxsZXN6dMOpc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTIHN6aW5layBhIHN6YXZhesOhcyBlcmVkbcOpbnnDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnw7NyaWFrZXplbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdBIHN6YXZhesOhc2kgZXJlZG3DqW55IHRpemVkZXNqZWd5ZWluZWsgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnQWxhcMOpcnRlbG1lemV0dCBrYXRlZ8OzcmlhIG5ldmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdFZ3lueWVsdsWxIG3Ds2QgZXNldMOpbiBhIEZBUSBjaWtrZWsgYWxhcMOpcnRlbG1lemV0dCBueWVsdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGQVEgY2lra2VrIGrDs3bDoWhhZ3nDoXPDoWhveiBhIGplZ3llayBhbGFww6lydGVsbWV6ZXR0IHByaW9yaXTDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnQSBGQVEgY2lrayBhbGFww6lydGVsbWV6ZXR0IMOhbGxhcG90YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZBUSBjaWtrZWsgasOzdsOhaGFnecOhc8OhaG96IGEgamVneWVrIGFsYXDDqXJ0ZWxtZXpldHQgw6FsbGFwb3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0gJ0EgcHVibGljIGZyb250ZW5kIEFjdGlvbiBwYXJhbWV0ZXLDqW5layBhbGFww6lydGVsbWV6ZXR0IMOpcnTDqWtlLiBBeiBBY3Rpb24gcGFyYW1ldGVyIGEgcmVuZHN6ZXIgc2NpcHJ0LWplaWJlbiBrZXLDvGwgZmVsaGFzem7DoWzDoXNyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0gJ0VneSDDoXR0ZWtpbnTFkSBtb2R1bHQgZGVmaW5pw6FsIGEgRkFRIGpvdXJuYWwga2ljc2kgbsOpemV0w6luZWsgbWVnbXV0YXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0gJ0VneSDDoXR0ZWtpbnTFkSBtb2R1bHQgZGVmaW5pw6FsIGEgRkFRIGxpc3RhIGtpY3NpIG7DqXpldMOpbmVrIG1lZ211dGF0w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgYXR0cmliw7p0dW1va2F0IGRlZmluacOhbGphIGEgRkFRIHJlbmRlesOpc2hleiBheiDDvGd5aW50w6l6xZEgZmVsw7xsZXTDqW4gYSBGQVEga2VyZXPDqXNuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIGF0dHJpYsO6dHVtb2thdCBkZWZpbmnDoWxqYSBhIEZBUSByZW5kZXrDqXNoZXogYXogw7xneWbDqWwgZmVsw7xsZXTDqW4gYSBGQVEga2VyZXPDqXNuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdBeiBhbGFww6lydGVsbWV6ZXR0IEZBUSBhdHRyaWLDunR1bW9rYXQgZGVmaW5pw6FsamEgYSBGQVEgcmVuZGV6w6lzaGV6IGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuIGEgRkFRIGtlcmVzw6lzbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgYXR0cmliw7p0dW1va2F0IGRlZmluacOhbGphIGEgRkFRIHJlbmRlesOpc2hleiBheiDDvGd5aW50w6l6xZEgZmVsw7xsZXTDqW4gYSBGQVEgYsO2bmfDqXN6xZFuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdBeiBhbGFww6lydGVsbWV6ZXR0IEZBUSBhdHRyaWLDunR1bW9rYXQgZGVmaW5pw6FsamEgYSBGQVEgcmVuZGV6w6lzaGV6IGF6IMO8Z3lmw6lsIGZlbMO8bGV0w6luIGEgRkFRIGLDtm5nw6lzesWRbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIGF0dHJpYsO6dHVtb2thdCBkZWZpbmnDoWxqYSBhIEZBUSByZW5kZXrDqXNoZXogYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4gYSBGQVEgYsO2bmfDqXN6xZFuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdBeiBhbGFww6lydGVsbWV6ZXR0IEZBUSBzb3JyZW5kZXQgZGVmaW5pw6FsamEgYSBGQVEgYsO2bmfDqXN6xZFiZW4gYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLiBVcDogcsOpZ2ViYmllayBmZWzDvGwsIERvd246IGxlZ2ZyaXNzZWJiIGZlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgc29ycmVuZGV0IGRlZmluacOhbGphIGEgRkFRIGLDtm5nw6lzesWRYmVuIGF6IMO8Z3lmw6lsIGZlbMO8bGV0w6luLiBVcDogcsOpZ2ViYmllayBmZWzDvGwsIERvd246IGxlZ2ZyaXNzZWJiIGZlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIHNvcnJlbmRldCBkZWZpbmnDoWxqYSBhIEZBUSBiw7ZuZ8Opc3rFkWJlbiBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4gVXA6IHLDqWdlYmJpZWsgZmVsw7xsLCBEb3duOiBsZWdmcmlzc2ViYiBmZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdBeiBhbGFww6lydGVsbWV6ZXR0IEZBUSBzb3JyZW5kZXQgZGVmaW5pw6FsamEgYSBrZXJlc8Opc27DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLiBVcDogcsOpZ2ViYmllayBmZWzDvGwsIERvd246IGxlZ2ZyaXNzZWJiIGZlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0F6IGFsYXDDqXJ0ZWxtZXpldHQgRkFRIHNvcnJlbmRldCBkZWZpbmnDoWxqYSBhIGtlcmVzw6lzbsOpbCBheiDDvGd5ZsOpbCBmZWzDvGxldMOpbi4gVXA6IHLDqWdlYmJpZWsgZmVsw7xsLCBEb3duOiBsZWdmcmlzc2ViYiBmZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnQXogYWxhcMOpcnRlbG1lemV0dCBGQVEgc29ycmVuZGV0IGRlZmluacOhbGphIGEga2VyZXPDqXNuw6lsIGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLiBVcDogcsOpZ2ViYmllayBmZWzDvGwsIERvd246IGxlZ2ZyaXNlc2JiIGZlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ0EgRkFRIGLDtm5nw6lzesWRYmVuIGzDoXRoYXTDsyBvc3psb3Bva2F0IGRlZmluacOhbGphLiBBIHBhcmFtw6l0ZXIgbmluY3MgaGF0w6Fzc2FsIGF6IG9zemxvcCBwb3rDrWNpw7Nqw6FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnQSBGQVEgam91cm5hbC1iYW4gbMOhdGhhdMOzIG9zemxvcG9rYXQgZGVmaW5pw6FsamEuIEEgcGFyYW3DqXRlciBuaW5jcyBoYXTDoXNzYWwgYXogb3N6bG9wIHBvesOtY2nDs2rDoXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ0EgRkFRIGtlcmVzw6lzbsOpbCBsw6F0aGF0w7Mgb3N6bG9wb2thdCBkZWZpbmnDoWxqYS4gQSBwYXJhbcOpdGVyIG5pbmNzIGhhdMOhc3NhbCBheiBvc3psb3AgcG96w61jacOzasOhcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0gJ0RlZmluacOhbGphLCBob2d5IGEgXCdJbnNlcnQgRkFRXCcgbGluayBob2wgbMOhdGhhdMOzLiBNZWdqZWd5esOpczogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gdGFydGFsbWF6emEgYXogQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgw6lzICBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdBIEZBUSBjaWtrIHN6YWJhZC1zesO2dmVnZXMgbWV6xZFqw6l0IGRlZmluacOhbGphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdUw7Zyw7ZsZCBlenQgYSBGQVEtdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnU3plcmtlc3pkIGV6dCBhIEZBUS10JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdUw7ZiYiBueWVsdiBoYXN6bsOhbGF0w6F0IGVuZ2Vkw6lseWV6aSBhIEZBUSBtb2R1bGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdBIHN6YXZhesOhcyBlbmdlZMOpbHllesOpc2UgYSBGQVEgbW9kdWxiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnRkFRIEpvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0ZBUSBKb3VybmFsIMOhdHRla2ludMWRICJraWNzaSBuw6l6ZXQiIGxpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFRIMOhdHRla2ludMWRICJLaWNzaSBuw6l6ZXQiIGxpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0ZBUSBsaW1pdCBvbGRhbGFua8OpbnQgYSBGQVEgSm91cm5hbCDDoXR0ZWtpbnTFkSAia2ljc2kgbsOpemV0w6loZXoiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdGQVEgbGltaXQgb2xkYWxhbmvDqW50IGEgRkFRICDDoXR0ZWtpbnTFkSAia2ljc2kgbsOpemV0w6loZXoiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdGQVEgw7p0dm9uYWwgZWx2w6FsYXN6dMOzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ0ZBUS10ZXLDvGxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdBIG55aWx2w6Fub3MgaW50ZXJmYWNlIGZyb250ZW5kIG1vZHVsZSByZWdpc3p0csOhY2nDs2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdDc29wb3J0IGEgRkFRIGNpa2sgasOzdsOhaGFnecOhc2hvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0ZBUSB0w7ZydMOpbmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnQmVsc8WRIG1lesWRa2V0IHRhcnRhbG1heiBhIEZBUSBhbGFww7ogamVneWVraGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ01pbmRlbiBtZXrFkSBuZXbDqXQgdGFydGFsbWF6emEgYSBGQVEgYWxhcMO6IGplZ3lla2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ZlbMO8bGV0LCBhaG9sIGEgZ3lvcnNrZXJlc8OpcyBsw6F0aGF0w7MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKb3VybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdOeWVsdmVrIGtlemVsw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ0EgKl9GQVEucG0gZsOhamxiYW4gZGVmaW5pw6FsdCBueWVsdiBrdWxjc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0EgRkFRIGVsZW1iZW4gbcOhcyBvYmpla3R1bXJhIHZhbMOzIGhpdmF0a296w6FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgbWF4aW3DoWxpcyBzesOhbWEgYSBGQVEgYsO2bmfDqXN6xZEgw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgbWF4aW3DoWxpcyBzesOhbWEgYSBGQVEgYsO2bmfDqXN6xZEgw7xneWbDqWwgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgbWF4aW3DoWxpcyBzesOhbWEgYSBGQVEgYsO2bmfDqXN6xZEgbnlpbHbDoW5vcyBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBtYXhpbcOhbGlzIHN6w6FtYSBhIEZBUSBqb3VybmFsIMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgbWF4aW3DoWxpcyBzesOhbWEgYSBrZXJlc8Opc27DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBtYXhpbcOhbGlzIHN6w6FtYSBhIGtlcmVzw6lzbsOpbCBheiDDvGd5ZsOpbCBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0EgbWVnamVsZW7FkSBGQVEgY2lra2VrIG1heGltw6FsaXMgc3rDoW1hIGEga2VyZXPDqXNuw6lsIGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPSAnTW9kdWwgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgbMOpdHJlaG96w6Fzw6Fob3ogcsO2dmlkIEZBUSBrZXJlc8Opc27DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ8OaaiBGQVEgY2lrayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdBeiDDumogRkFRIGNpa2sgasOzdsOhaGFnecOhc2Egc3rDvGtzw6lnZXMgYSBwdWJsaWvDoWzDoXMgZWzFkXR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgc3rDoW1hIGEgRkFRIGLDtm5nw6lzesWRIMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdBIG1lZ2plbGVuxZEgRkFRIGNpa2tlayBzesOhbWEgYSBGQVEgYsO2bmfDqXN6xZEgbnlpbHbDoW5vcyBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ0EgbWVnamVsZW7FkSBGQVEgY2lra2VrIHN6w6FtYSBtaW5kZW4gbGFwb24gYSBrZXJlc8Opc27DqWwgYXogw7xneWbDqWwgZmVsw7xsZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnQSBtZWdqZWxlbsWRIEZBUSBjaWtrZWsgc3rDoW1hIG1pbmRlbiBsYXBvbiBhIGtlcmVzw6lzbsOpbCBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdBIG1lZ2plbGVuxZEgZWxlbWVrIHN6w6FtYSBheiB1dG9sc8OzICBtw7Nkb3N1bHRha27DoWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQSBtZWdqZWxlbsWRIGVsZW1layBzesOhbWEgYXogdXRvbHPDsyBsw6l0cmVob3pvdHRha27DoWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQSBtZWdqZWxlbsWRIGVsZW1layBzesOhbWEgYSBUT1AxMC1uw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPSAnUGFyYW3DqXRlcmVrIGEgbGFwb2tob3ogKGFtZWx5ZWtlbiBhIEZBUSBlbGVtZWsgbWVnamVsZW5uZWspIGEga2ljc2kgRkFRIGpvdXJuYWwgw6F0dGVraW50w6lzw6luw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0gJ1BhcmFtw6l0ZXJlayBhIGxhcG9raG96IChhbWVseWVrZW4gYSBGQVEgZWxlbWVrIG1lZ2plbGVubmVrKSBhIGtpY3NpIEZBUSDDoXR0ZWtpbnTDqXPDqW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnTnlvbXRhc2QgZXp0IGEgRkFRLXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnVsOhcsOzbGlzdGEgYSBGQVEgY2lra2VrIGrDs3bDoWhhZ3nDoXPDoWhveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ8OJcnTDqWtlayBhIHN6YXZhesOhc2hvei4gQSBrdWxjcyBzesOhemFsw6lrIGtlbGwgbGVneWVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnRkFRIGtlcmVzw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJ01lZ211dGF0amEgYSAiRkFRIGxpbmsgYmVzesO6csOhcyIgZ29tYm90IGF6IEFnZW50RkFRWm9vbVNtYWxsIGEgbnlpbHbDoW5vcyBGQVEgY2lra2VraGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnTWVnbXV0YXRqYSBhICJGQVEgbGluayDDqXMgc3rDtnZlZyBiZXN6w7pyw6FzIiBnb21ib3QgYXogQWdlbnRGQVFab29tU21hbGwgYSBueWlsdsOhbm9zIEZBUSBjaWtrZWtoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0gJ01lZ211dGF0amEgYSAiRkFRIHN6w7Z2ZWcgYmVzesO6csOhcyIgZ29tYm90IGF6IEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdGQVEgY2lrayBtZWdqZWxlbsOtdMOpc2UgSFRNTC1iZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnRkFRIMO6dHZvbmFsIG1lZ2plbGVuw610w6lzZSBpZ2VuL25lbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnV1lTSVdZRyBlZGl0b3IgbWVnamVsZW7DrXTDqXNlIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ0F6IGFsa2F0ZWfDs3JpYSBlbGVtZWluZWsgbWVnamVsZW7DrXTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0F6IHV0b2xzw7MgbcOzZG9zw610b3R0IGVsZW1layBtZWdqZWxlbsOtdMOpc2UgYSBkZWZpbmnDoWx0IGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdBeiB1dG9sc8OzIGzDqXRyZWhvem90dCBlbGVtZWsgbWVnamVsZW7DrXTDqXNlIGEgZGVmaW5pw6FsdCBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnQSBUT1AgMTAgZWxlbWVrIG1lZ2plbGVuw610w6lzZSBhIGRlZmluacOhbHQgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1N6YXZhesOhcyBtZWdqZWxlbsOtdMOpc2UgYSBkZWZpbmnDoWx0IGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVuZ2VkaSBhIEZBUSBsaW5rZWzDqXPDqXQgbcOhcyBvYmpla3R1bW9ra2FsIGEgRkFRIHLDqXN6bGV0ZWluw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTGluayBtZWdqZWxlbsOtdMOpc2UgYSBtZW7DvGJlbiBhbWkgZW5nZWRpIGEgRkFRIHTDtnJsw6lzw6l0IGEgRkFRIHLDqXN6bGV0ZWluw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTGluayBtZWdqZWxlbsOtdMOpc2UgYSBtZW7DvGJlbiBhbWkgZWzDqXJpIGEgRkFRIHTDtnJ0w6luZXTDqXQgYSBGQVEgcsOpc3psZXRlaW7DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVuZ2VkaSBhIEZBUSBzemVya2VzenTDqXPDqXQgYSBGQVEgcsOpc3psZXRlaW7DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0xpbmsgbWVnamVsZW7DrXTDqXNlIGEgbWVuw7xiZW4gYW1pIGVuZ2VkaSBhIHZpc3N6YWzDqXDDqXN0IGEgRkFRIHLDqXN6bGV0ZWluw6lsIGF6IMO8Z3lpbnTDqXrFkSBmZWzDvGxldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTGluayBtZWdqZWxlbsOtdMOpc2UgYSBtZW7DvGJlbiBhbWkgZW5nZWRpIGEgRkFRIG55b210YXTDoXPDoXQgYSBGQVEgcsOpc3psZXRlaW7DqWwgYXogw7xneWludMOpesWRIGZlbMO8bGV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPSAnQSBGQVEgYXpvbm9zw610w7NqYSwgcGwuIEZBUSMsIEtCIywgTXlGQVEjLiBBeiBhbGFww6lydGVsbWV6ZXR0OiBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnRXogYSBiZcOhbGzDrXTDoXMgZGVmaW5pw6FsamEsIGhvZ3kgYSBcJ0ZBUVwnIG9iamVrdHVtIMO2c3N6ZWthcGNzb2xoYXTDsyBtw6FzIFwnRkFRXCcgb2JqZWt0dW1tYWwgXCdOb3JtYWxcJyBsaW5rIHTDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJ0V6IGEgYmXDoWxsw610w6FzIGRlZmluacOhbGphLCBob2d5IGEgXCdGQVFcJyBvYmpla3R1bSDDtnNzemVrYXBjc29saGF0w7MgbcOhcyBcJ0ZBUVwnIG9iamVrdHVtbWFsIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHTDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9ICdFeiBhIGJlw6FsbMOtdMOhcyBkZWZpbmnDoWxqYSwgaG9neSBhIFwnRkFRXCcgb2JqZWt0dW0gw7Zzc3pla2FwY3NvbGhhdMOzIG3DoXMgXCdKZWd5XCcgb2JqZWt0dW1tYWwgXCdOb3JtYWxcJyBsaW5rIHTDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJ0V6IGEgYmXDoWxsw610w6FzIGRlZmluacOhbGphLCBob2d5IGEgXCdGQVFcJyBvYmpla3R1bSDDtnNzemVrYXBjc29saGF0w7MgbcOhcyBcJ0plZ3lcJyBvYmpla3R1bW1hbCBcJ1BhcmVudENoaWxkXCcgbGluayB0w61wdXMgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnSmVneSB0w7ZyenNlIGEgRkFRIGNpa2sgasOzdsOhaGFnecOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnSmVneSB0w6FyZ3lhIGEgRkFRIGNpa2sgasOzdsOhaGFnecOhc8OhaG96Lic7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXJzIGltIEt1bmRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gUHVibGljLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBLdW5kZW4tSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gUHVibGljLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgRXhwbG9yZXIgcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBBZ2VudGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZTogJ30gPSAnTMO2c2NoZW46ICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gS3VuZGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGltIFB1YmxpYy1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBLdW5kZW4tSW50ZXJmYWNlIHBybyBTZWl0ZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0FuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbiBkZXIgRkFRLVN1Y2hlIGltIFB1YmxpYy1JbnRlcmZhY2UgcHJvIFNlaXRlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ0FuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW0gS3VuZGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnWmVpZ2UgIkxpbmsgRWluZsO8Z2VuIi1CdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZsO8ciDDtmZmZW50bGljaGUgRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJ1plaWdlICJUZXh0ICYgTGluayBFaW5mw7xnZW4iLUJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdaZWlnZSAiVGV4dCBFaW5mw7xnZW4iLUJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbC4nOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDExLzEyLzA4IEthb3J1IEhheWFtYSBUSVMgSW5jLgojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Okxhbmd1YWdlOjpqYV9GQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQUZBUQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICflhoXpg6jlkJEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAn5YWs6ZaLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn5aSW6YOo5ZCRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVHjg4rjg7Pjg5Djg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0Q2hhbmdlZEl0ZW1zJ30gPSAn5pyA6L+R5aSJ5pu044GV44KM44Gf44Ki44Kk44OG44OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdENyZWF0ZWRJdGVtcyd9ID0gJ+acgOi/keS9nOaIkOOBleOCjOOBn+OCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AxMEl0ZW1zJ30gPSAn44OI44OD44OXMTDjgqLjgq/jgrvjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcnlPZid9IHx8PSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn6KmV5L6h44GM6YG45oqe44GV44KM44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ+WFrOmWiyAo5YWo5ZOhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAn5aSW6YOoICjpoaflrqIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICflhoXpg6ggKOaLheW9k+iAhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnREYXknfSA9ICfplovlp4vml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRNb250aCd9ID0gJ+mWi+Wni+aciCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydFllYXInfSA9ICfplovlp4vlubQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kRGF5J30gPSAn57WC5LqG5pelJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZE1vbnRoJ30gPSAn57WC5LqG5pyIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZFllYXInfSA9ICfntYLkuoblubQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn6KmV5L6h44KS44GE44Gf44Gg44GN44GC44KK44GM44Go44GG44GU44GW44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn44GC44Gq44Gf44Gv44GZ44Gn44Gr6KmV5L6h5riI44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAn6KiY5LqL5Y2w5Yi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ+S4iuS9jTEw5Lu244Gu6KiY5LqLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn5paw552A6KiY5LqLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfmnIDov5Hmm7TmlrDjgZXjgozjgZ/oqJjkuosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAn44Kr44OG44K044Oq44GM5pu05paw44GV44KM44G+44GX44Gf44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICfmlrDjgZfjgYTjgqvjg4bjgrTjg6rjgYzov73liqDjgZXjgozjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn44CM5ZCN5YmN44CN44Gv5b+F6aCI6aCF55uu44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjga/jgZnjgafjgavlrZjlnKjjgZfjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ+iogOiqnuOBjOi/veWKoOOBleOCjOOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfoqIDoqp7jgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAn44CM5ZCN5YmN44CN44Gv5b+F6aCI6aCF55uu44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAn44GT44Gu6KiA6Kqe44Gv6Kit5a6a5riI44Gn44GZ44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnRkFR44Gu5paw6KaP6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAn44Kr44OG44K044Oq44Gv5b+F6aCI6aCF55uu44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn5om/6KqNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICfnl4fnirYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvYmxlbSd9ID0gJ+WVj+mhjCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEg44Kr44OG44K044Oq566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ+OCq+ODhuOCtOODquOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICfjgqvjg4bjgrTjg6rjgpLov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn44Kr44OG44K044Oq44KS5YmK6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAn44Gv44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ+OCq+ODhuOCtOODquOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAn44Kr44OG44K044Oq44KS57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfkuIDopqfjgafjgrPjg6Hjg7Pjg4jjgajjgZfjgabooajnpLrjgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfjgbLjgajjgaTku6XkuIrjga7mqKnpmZDjga7jgrDjg6vjg7zjg5fjgpLpgbjmip7jgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBp+iomOS6i+OBq+OCouOCr+OCu+OCueOBp+OBjeOCi+OCqOODvOOCuOOCp+ODs+ODiOOBruOCsOODq+ODvOODl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn44GT44Gu44Kr44OG44K044Oq44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOCkuWJiumZpOOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAguS4gOOBpOS7peS4iuOBrkZBUeiomOS6i+OBp+S9v+eUqOOBleOCjOOBpuOBhOOCi+OBi+OAgeOBvuOBn+OBr+S7luOBruOCq+ODhuOCtOODquOBruimquOCq+ODhuOCtOODquOBq+OBquOBo+OBpuOBhOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBr+S7peS4i+OBruiomOS6i+OBp+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjga/ku6XkuIvjga7jgqvjg4bjgrTjg6rjga7opqrjgqvjg4bjgrTjg6rjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcnlPZid9ID0gJ+imquOCq+ODhuOCtOODqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn5LiA6Kan44Gn44Kz44Oh44Oz44OI44Go44GX44Gm6KGo56S644GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjgafpoIXnm67jgavjgqLjgq/jgrvjgrnjgafjgY3jgovjgqjjg7zjgrjjgqfjg7Pjg4jjgrDjg6vjg7zjg5cnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAn44GT44Gu6KiY5LqL44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9IHx8PSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVHkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ+mrmOapn+iDveaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAn44K144OW44Kr44OG44K044OqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUemgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ+WtkOOCq+ODhuOCtOODquOBr+OBguOCiuOBvuOBm+OCk+OAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICfjgrjjg6Pjg7zjg4rjg6vjga7mg4XloLHjgYzjgYLjgorjgb7jgZvjgpPjgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnRkFRIOiogOiqnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9ICflpJroqIDoqp7jgafkvZzmpa3jgpLjgZfjgZ/jgYTloLTlkIjjgIHjgZPjga7poIXnm67jgpLoqK3lrprjgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn6KiA6Kqe44KS6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ+iogOiqnuOCkuWJiumZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICfoqIDoqp7jgpLov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ+iogOiqnuOCkue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAn44GT44Gu6KiA6Kqe44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9ICfjgZPjga7oqIDoqp7jgpLliYrpmaTjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgILkuIDjgaTku6XkuIrjga5GQVHjgafkvb/nlKjjgZXjgozjgabjgYTjgb7jgZnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICfjgZPjga7oqIDoqp7jga/jgIHku6XkuIvjga5GQVHjgafkvb/nlKjjgZXjgozjgabjgYTjgb7jgZnjgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfjgrPjg7Pjg4bjgq3jgrnjg4jjga7oqK3lrponOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAn44Oa44O844K45q+O44Gu6KiY5LqL5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0ZBUeODh+ODvOOCv+OBr+OBguOCiuOBvuOBm+OCk+OAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICdGQVHmg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rlcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFR5YWo5paHJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFR5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ+ODrOODvOODhuOCo+ODs+OCsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ+ODrOODvOODhuOCo+ODs+OCsO+8iO+8he+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJzXjgaTmmJ/jga7jgYbjgaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAn5oqV56Wo44Gv44GC44KK44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICfmipXnpajjga/jgYLjgorjgb7jgZvjgpPjgILjgZPjga7oqJjkuovjgavlp4vjgoHjgaboqZXkvqHjgpLmipXnpajjgZfjgb7jgZfjgofjgYbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ+a3u+S7mOODleOCoeOCpOODq+OCkuODgOOCpuODs+ODreODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlVm90aW5nUXVlc3Rpb24nfSB8fD0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ+OBguOBvuOCiuW9ueOBq+eri+OBn+OBquOBi+OBo+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICfjgajjgabjgoLlvbnjgavnq4vjgaPjgZ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICfoqJjkuovjgpLmjL/lhaXjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAn44Oq44Oz44Kv44KS5oy/5YWl44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfoqJjkuovjgajjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgosnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICfoqbLlvZPjgZnjgovoqJjkuovjga/jgYLjgorjgb7jgZvjgpPjgIInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdGQVHlhajmlofmpJzntKLvvIjkvovvvJoiSm9obipuIuOAgSJXaWxsKiLvvIknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbHMnfSA9ICfoqbPntLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICfoqJjkuovjga7jgq3jg7zjg6/jg7zjg4nmpJzntKInOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9IHx8PSAn5YWs6ZaLJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn6KmV5L6h44Gu57WQ5p6c6KGo56S644KI44GG44Gu44Kr44Op44O877yI44K544K/44Kk44Or44K344O844OI77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICfjgqvjg4bjgrTjg6rjg7znrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn5oqV56Wo44Gu57WQ5p6c44Gu5bCP5pWw54K55Lul5LiL44Gu5qGB5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICfml6Llrprjga7jgqvjg4bjgrTjg6onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ+imj+WumuOBruiogOiqnu+8iOWNmOS4gOiogOiqnuODouODvOODieOBp+mBi+eUqOaZgu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFR44G444Gu5Y+W44KK6L6844G/44KS6KGM44GG44OB44Kx44OD44OI44Gu5YSq5YWI6aCG5L2N44Gu5pei5a6a5YCkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICfoqJjkuovjgqjjg7Pjg4jjg6rjg7zmmYLjga7opo/lrprjga7jgrnjg4bjg7zjgr/jgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZBUeOBuOOBruWPluOCiui+vOOBv+OCkuihjOOBhuODgeOCseODg+ODiOOBruWEquWFiOmghuS9jeOBruaXouWumuWApCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0gJ+WFrOmWi+eUu+mdoueUqOODkeODqeODoeODvOOCv+OBruODh+ODleOCqeODq+ODiOWApOOAguODkeODqeODoeODvOOCv++8iEFjdGlvbj1YWFhYWFjvvInjga/jgIHjgrnjgq/jg6rjg5fjg4jjgafkvb/nlKjjgZXjgozjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0gJ+ewoeaYk+eJiEZBUeOCuOODo+ODvOODiuODq+ihqOekuueUqOODouOCuOODpeODvOODq+OBruamguimgeOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPSAn57Ch5piT54mIRkFR5LiA6Kan6KGo56S655So44Oi44K444Ol44O844Or44Gu5qaC6KaB44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAn44Ko44O844K444Kn44Oz44OI55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICfjgqjjg7zjgrjjgqfjg7Pjg4jnlKjnlLvpnaLvvIhGQVHkuIDopqfvvInjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPmm7/jgYjjgavliKnnlKjjgZnjgovlsZ7mgKfpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAn6aGn5a6i55So55S76Z2i77yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICflhazplovnlLvpnaLvvIhGQVHkuIDopqfvvInjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPmm7/jgYjjgavliKnnlKjjgZnjgovlsZ7mgKfpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAn44Ko44O844K444Kn44Oz44OI55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gu6KGo56S66aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gu6KGo56S66aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBruihqOekuumghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglwnVXBcJ+KGkuWPpOOBhOmghiAvIFwnRG93blwn4oaS5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICfjgqjjg7zjgrjjgqfjg7Pjg4jnlKjnlLvpnaLvvIhGQVHkuIDopqfvvInjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIJcJ1VwXCfihpLlj6TjgYTpoIYgLyBcJ0Rvd25cJ+KGkuaWsOOBl+OBhOmghic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCXCdVcFwn4oaS5Y+k44GE6aCGIC8gXCdEb3duXCfihpLmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICflhazplovnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIJcJ1VwXCfihpLlj6TjgYTpoIYgLyBcJ0Rvd25cJ+KGkuaWsOOBl+OBhOmghic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAn44Ko44O844K444Kn44Oz44OI55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gn44Gu6KGo56S66aCF55uu44Gu6Kit5a6a44CC44GT44Gu6Kit5a6a44Gr44KI44Gj44Gm6aCF55uu44Gu5Lim44Gz6aCG44KS5Yi25b6h44GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ+mhp+WuoueUqOeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBp+OBruihqOekuumgheebruOBruioreWumuOAguOBk+OBruioreWumuOBq+OCiOOBo+OBpumgheebruOBruS4puOBs+mghuOCkuWItuW+oeOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBp+OBruihqOekuumgheebruOBruioreWumuOAguOBk+OBruioreWumuOBq+OCiOOBo+OBpumgheebruOBruS4puOBs+mghuOCkuWItuW+oeOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLiBOb3RlOiBBZ2VudFRpY2tldEFjdGlvbkNvbW1vbiBpbmNsdWRlcyBBZ2VudFRpY2tldE5vdGUsIEFnZW50VGlja2V0Q2xvc2UsIEFnZW50VGlja2V0RnJlZVRleHQsIEFnZW50VGlja2V0T3duZXIsIEFnZW50VGlja2V0UGVuZGluZywgQWdlbnRUaWNrZXRQcmlvcml0eSBhbmQgQWdlbnRUaWNrZXRSZXNwb25zaWJsZS4nfSA9ICflrprnvqnmuIjjga7opoHntKDjgavjg6rjg7Pjgq/jgpLku5jliqDjgZnjgovjg6Ljgrjjg6Xjg7zjg6vjgafjgZnjgILnlLvlg4/opoHntKDjgavjgaTjgYTjgabjga8y6YCa44KK44Gu5YWl5Yqb5pa55rOV44GM44GC44KK44G+44GZ44CC44Gy44Go44Gk44Gv44CMZmFxLnBuZ+OAjeOBruOCiOOBhuOBq+eUu+WDj+OBruODleOCoeOCpOODq+WQjeOCkuaMh+WumuOBmeOCi+aWueazleOAguOBk+OBruOCseODvOOCueOBp+OBr09UUlPjga7jgqTjg6Hjg7zjgrjjg5HjgrnjgYzkvb/nlKjjgZXjgozjgb7jgZnjgILjgoLjgYbjgbLjgajjgaTjga9VUkzjgpLmjIflrprjgZnjgovmlrnms5XjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRkFR44Gu44OV44Oq44O844OG44Kt44K544OI44OV44Kj44O844Or44OJ44Gu5a6a576p44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ+OBk+OBruiomOS6i+OCkuWJiumZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAn44GT44Gu6KiY5LqL44KS57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICflpJroqIDoqp7jgpLmnInlirnjgavjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICfoqZXkvqHjga7mqZ/og73jgpLmnInlirnjgavjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEg44K444Oj44O844OK44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVHjgrjjg6Pjg7zjg4rjg6vkuIDopqcoUynjga7ooajnpLrmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVHkuIDopqcoUynjga7ooajnpLrmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnRkFR44K444Oj44O844OK44Or5LiA6KanKFMp44GuMeODmuODvOOCuOavjuOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnRkFR5LiA6KanKFMp44GuMeODmuODvOOCuOavjuOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgcGF0aCBzZXBhcmF0b3IuJ30gPSAn44OR44K544Kk44Oz44OV44Kp44KS5L2/55So44GZ44KL6Zqb44Gu44K744OR44Os44O844K/5paH5a2X77yI5L6L77yaXCcvXCfvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ+OCqOODvOOCuOOCp+ODs+ODiOeUqOeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeaknOe0ouOBruODkOODg+OCr+OCqOODs+ODieODq+ODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICflhazplovnlLvpnaLjga7jg5Xjg63jg7Pjg4jjgqjjg7Pjg4njg6Ljgrjjg6Xjg7zjg6vjga7lrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFR44Gu6KiY5LqL44Gu5om/6KqN44Gu44Gf44KB44Gu44Kw44Or44O844OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICfjgZPjga7oqJjkuovjga7lsaXmrbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0ZBUeeUseadpeOBruODgeOCseODg+ODiOOBq+WQq+OBvuOCjOOCi+WGhemDqOmgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0ZBUeeUseadpeOBruODgeOCseODg+ODiOOBq+WQq+OBvuOCjOOCi+WGhemDqOmgheebruOBmeOBueOBpuOBruWQjeensCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAn5qSc57Si56qT44KS6KGo56S644GZ44KL55S76Z2i44KS6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICfjgrjjg6Pjg7zjg4rjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ+iogOiqnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ+iogOiqnuODleOCoeOCpOODq++8iCpfRkFRLnBt77yJ44Gn5a6a576p44GV44KM44Gm44GE44KLTGFuZ3VhZ2VrZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAn44GT44Gu6KiY5LqL44GL44KJ5LuW44Gu6KiY5LqL44G444Gu44Oq44Oz44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICfjgqjjg7zjgrjjgqfjg7Pjg4jnlLvpnaLjga5GQVHkuIDopqfjgafooajnpLrjgZnjgovoqJjkuovjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ+mhp+WuoueUqOeUu+mdouOBrkZBUeS4gOimp+OBp+ihqOekuuOBmeOCi+iomOS6i+OBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ+WFrOmWi+eUu+mdouOBrkZBUeS4gOimp+OBp+ihqOekuuOBmeOCi+iomOS6i+OBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ+OCqOODvOOCuOOCp+ODs+ODiOeUu+mdouOBrkZBUeOCuOODo+ODvOODiuODq+OBp+ihqOekuuOBmeOCi+iomOS6i+OBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSB8fD0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSB8fD0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gfHw9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9IHx8PSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9IHx8PSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSB8fD0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9IHx8PSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSB8fD0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9IHx8PSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAn44CM5pyA6L+R44Gu5aSJ5pu044CN44Gr5L2V5Lu244G+44Gn6KGo56S644GZ44KL44GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAn44CM5pyA5paw44Gu5paw6KaP5L2c5oiQ44CN44Gr5L2V5Lu244G+44Gn6KGo56S644GZ44KL44GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAn44CM44OI44OD44OXMTDoqJjkuovjgI3jgavkvZXku7bjgb7jgafooajnpLrjgZnjgovjgYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0gJ+ewoeaYk+eJiEZBUeOCuOODo+ODvOODiuODq+S4gOimp+OBruODmuODvOOCuOaMh+WumueUqOOBruODkeODqeODoeODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0gJ+ewoeaYk+eJiEZBUeamguimgeOBruODmuODvOOCuOaMh+WumueUqOOBruODkeODqeODoeODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ+OBk+OBruiomOS6i+OCkuWNsOWItyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfoqJjkuovmib/oqo3jgq3jg6Xjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICfoqZXkvqHnjofjgILjgq3jg7zjga/jgIHjg5Hjg7zjgrvjg7Pjg4jjgafmjIflrprjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0ZBUeOCkuaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICdcJ0FnZW50RkFRWm9vbVNtYWxsXCfjga7oqK3lrprjgILlhazplovnlLvpnaLjgavjgYrjgYTjgabjgIzjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgovjgI3jg5zjgr/jg7PjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICdcJ0FnZW50RkFRWm9vbVNtYWxsXCfjga7oqK3lrprjgILlhazplovnlLvpnaLjgavjgYrjgYTjgabjgIzjg4bjgq3jgrnjg4jjgajjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgovjgI3jg5zjgr/jg7PjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0gJ1wnQWdlbnRGQVFab29tU21hbGxcJ+OBruioreWumuOAguOAjOODhuOCreOCueODiOOCkuaMv+WFpeOBmeOCi+OAjeODnOOCv+ODs+OCkuihqOekuuOBmeOCiy/ooajnpLrjgZfjgarjgYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAn6KiY5LqL44GnSFRNTOOCv+OCsOOCkuihqOekuuOBmeOCiy/ooajnpLrjgZfjgarjgYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAn6KiY5LqL44Gu44OR44K544KS6KGo56S644GZ44KLL+ihqOekuuOBl+OBquOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IFdZU0lXWUcgZWRpdG9yIGluIGFnZW50IGludGVyZmFjZS4nfSA9ICfjgqjjg7zjgrjjgqfjg7Pjg4jnlLvpnaLjgavjgYrjgYTjgaZXWVNJV1lH44Ko44OH44Kj44K/44KS6KGo56S644GZ44KLL+ihqOekuuOBl+OBquOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAn44K144OW44Kr44OG44K044Oq44O844Gu44OI44OU44OD44Kv44KS6KGo56S644GZ44KLL+ihqOekuuOBl+OBquOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfmnIDmlrDjga7lpInmm7TjgpLooajnpLrjgZnjgovnlLvpnaLvvIjjgqjjg7zjgrjjgqfjg7Pjg4jnlKgv6aGn5a6i55SoL+WFrOmWi++8ieOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn5pyA5paw44Gu5paw6KaP5L2c5oiQ44KS6KGo56S644GZ44KL55S76Z2i77yI44Ko44O844K444Kn44Oz44OI55SoL+mhp+WuoueUqC/lhazplovvvInjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+ODiOODg+ODlzEw44KS6KGo56S644GZ44KL55S76Z2i77yI44Ko44O844K444Kn44Oz44OI55SoL+mhp+WuoueUqC/lhazplovvvInjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+ipleS+oeOCkuihqOekuuOBmeOCi+eUu+mdou+8iOOCqOODvOOCuOOCp+ODs+ODiOeUqC/poaflrqLnlKgv5YWs6ZaL77yJ44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9IHx8PSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9IHx8PSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9IHx8PSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gfHw9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSB8fD0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSB8fD0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gfHw9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJ+KAmE5vcm1hbOKAmeODquODs+OCr+ODu+OCv+OCpOODl+OCkuS9v+eUqOOBl+OBpuOAgeKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBjOS7luOBruKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBqOODquODs+OCr+OBleOCjOOCi+OCiOOBhuOBq+OAgeWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICfigJhQYXJlbnRDaGlsZOKAmeODquODs+OCr+ODu+OCv+OCpOODl+OCkuS9v+eUqOOBl+OBpuOAgeKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBjOS7luOBruKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBqOODquODs+OCr+OBleOCjOOCi+OCiOOBhuOBq+OAgeWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAn4oCYTm9ybWFs4oCZ44Oq44Oz44Kv44O744K/44Kk44OX44KS5L2/55So44GX44Gm44CB4oCYRkFR4oCZ44Kq44OW44K444Kn44Kv44OI44GM5LuW44Gu4oCYVGlja2V04oCZ44Kq44OW44K444Kn44Kv44OI44Go44Oq44Oz44Kv44GV44KM44KL44KI44GG44Gr44CB5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJ+KAmFBhcmVudENoaWxk4oCZ44Oq44Oz44Kv44O744K/44Kk44OX44KS5L2/55So44GX44Gm44CB4oCYRkFR4oCZ44Kq44OW44K444Kn44Kv44OI44GM5LuW44Gu4oCYVGlja2V04oCZ44Kq44OW44K444Kn44Kv44OI44Go44Oq44Oz44Kv44GV44KM44KL44KI44GG44Gr44CB5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSB8fD0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gfHw9ICcnOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBjYXRlZ29yeS4nfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjgavjgqLjgq/jgrvjgrnlj6/og73jgarjgqjjg7zjgrjjgqfjg7Pjg4jjgrDjg6vjg7zjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcmllcyd9ID0gJ+OCq+ODhuOCtOODqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxTZWFyY2gnfSA9ICfoqbPntLDmpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcnkgYWNjZXNzaWJsZS4gVG8gY3JlYXRlIGFuIGFydGljbGUgeW91IG5lZWQgYWNjZXNzIHRvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeS4gUGxlYXNlIGNoZWNrIHlvdXIgZ3JvdXAvY2F0ZWdvcnkgcGVybWlzc2lvbiB1bmRlciAtY2F0ZWdvcnkgbWVudS0hJ30gPSAn44Kr44OG44K044Oq44Gr44Ki44Kv44K744K544Gn44GN44G+44Gb44KT44CC6KiY5LqL44KS5L2c5oiQ44GZ44KL44Gr44Gv44CBMeOBpOS7peS4iuOBruOCq+ODhuOCtOODquOBq+OCouOCr+OCu+OCueOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAguOCq+ODhuOCtOODquOBruODoeODi+ODpeODvOOBq+OBiuOBhOOBpuOAgeOBguOBquOBn+OBruOCsOODq+ODvOODly/jgqvjg4bjgrTjg6rjgavmqKnpmZDjgpLkuI7jgYjjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2tTZWFyY2gnfSA9ICfmpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcmllcyd9IHx8PSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5iX05PX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncHVibGlzZXJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2Vrc3Rlcm50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdPU1MtbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1Npc3Qgb3BwZGF0ZXJ0ZSBPU1MtYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnU2lzdCBvcHByZXR0ZWRlIE9TUy1hcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wcCAxMCBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdJbmdlbiByYXRpbmcgdmFsZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnb2ZmZW50bGlnIChhbGxlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAna3VuIHRpbCBrdW5kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2t1biBpbnRlcm50IChhZ2VudGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdTdGFydGRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ03DpW5lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCB5ZWFyJ30gPSAnw4VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBkYXknfSA9ICdTbHV0dGRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICdNw6VuZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICfDhXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVGFrayBmb3IgZGluIHN0ZW1tZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdEdSBoYXIgYWxsZXJlZGUgc3RlbXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdVdHNrcmlmdCBhdiBPU1MtYXJ0aWtrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnT1NTLWFydGlrbGVyIChUb3BwIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ09TUy1hcnRpa2xlciAobnlsaWcgb3BwcmV0dGV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnT1NTLWFydGlrbGVyIChueWxpZyBlbmRyZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ09TUy1rYXRlZ29yaSBvcHBkYXRlcnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdPU1Mta2F0ZWdvcmkgbGFndCB0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnRW4ga2F0ZWdvcmkgbcOlIGhhIGV0IG5hdm4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdEZW5uZSBrYXRlZ29yaWVuIGVrc2lzdGVyZXIgYWxsZXJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ09TUy1zcHLDpWsgbGFndCB0aWwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ09TUy1zcHLDpWsgb3BwZGF0ZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdOYXZuIGVyIHDDpWtyZXZkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0RldHRlIHNwcsOla2V0IGZpbm5lcyBhbGxlcmVkZSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdMZWdnIHRpbCBPU1MtYXJ0aWtrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaSBlciBvYmxpZ2F0b3Jpc2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnR29ka2plbm5pbmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnS2F0ZWdvcmlvcHBzZXR0IGZvciBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnTGVnZyB0aWwga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnU2xldHQga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdMZWdnIHRpbCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRW5kcmUga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1ZpbCB2aXNlcyBzb20ga29tbWVudGFyIGkgdXRmb3Jza2VyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ1Nha3NiZWhhbmRsZXJncnVwcGVyIHNvbSBoYXIgdGlsZ2FuZyB0aWwgYXJ0aWtsZXIgaSBkZW5uZSBrYXRlZ29yaWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdWaWwgZHUgdmlya2VsaWcgc2xldHRlIGRlbm5lIGthdGVnb3JpZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0gJ0R1IGthbiBpa2tlIHNsZXR0ZSBkZW5uZSBrYXRlZ29yaWVuLCBmb3JkaSBkZW4gZXIgYnJ1a3QgaSBtaW5zdCBlbiBPU1MtYXJ0aWtrZWwgb2cvZWxsZXIgZm9yZWxkcmUgdGlsIG1pbnN0IGVuIGFubmVuIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRGVubmUga2F0ZWdvcmllbiBlciBicnVrdCBpIGbDuGxnZW5kZSBPU1MtYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRGVubmUga2F0ZWdvcmllbiBlciBmb3JlbGRyZSB0aWwgZsO4bGdlbmRlIHVuZGVya2F0ZWdvcmllcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdWaWwgZHUgdmlya2VsaWcgc2xldHRlIGRlbm5lIGFydGlra2VsZW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdVdGZvcnNrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnSHVydGlnc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdBdmFuc2VydCBzw7hrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdVbmRlcmthdGVnb3JpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnT2Z0ZSBTdGlsdGUgU3DDuHJzbcOlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ0luZ2VuIHVuZGVya2F0ZWdvcmllciBmdW5uZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1NwcsOla29wcHNldHQgZm9yIE9TUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnTGVnZyB0aWwgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ1NsZXR0IHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdMZWdnIHRpbCBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VuZHJlIHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0luZ2VuIGFydGlrbGVyIGZ1bm5ldCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdTdGVtbWVyJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnT1NTLXPDuGsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mbyBvbSBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnUmF0aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnUmF0aW5nICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdhdiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0luZ2VuIHN0ZW1tZXIgZnVubmV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnSW5nZW4gc3RlbW1lciBhdmdpdHQhIEJsaSBkZW4gZsO4cnN0ZSB0aWwgw6Ugc3RlbW1lIHDDpSBkZW5uZSBhcnRpa2tlbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnTGFzdCBuZWQgdmVkbGVnZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9ICdWYXIgZGVubmUgYXJ0aWtrZWxlbiB0aWwgaGplbHA/IFbDpnIgc25pbGwgb2cgZ2kgb3NzIGRpbiBzdGVtbWUsIHNsaWsgYXQgdmkga2FuIGZvcmJlZHJlIGRhdGFiYXNlbi4gVHVzZW4gdGFrayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdpa2tlIHRpbCBoamVscCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd2ZWxkaWcgbnl0dGlnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnU2V0dCBpbm4gT1NTLXRla3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ1NldHQgaW5uIE9TUy1sZW5rZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnU2V0dCBpbm4gT1NTLXRla3N0IG9nIC1sZW5rZSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ0luZ2VuIE9TUy1hcnRpa2xlciBibGUgZnVubmV0JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnRnVsbHRla3N0c8O4ayBpIE9TUy1hcnRpa2xlciAoZi5la3MuICJPbCoiIGVsbGVyICJBbmRyZWFzKm4iJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxzJ30gPSAnRGV0YWxqZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdTw7hrIGV0dGVyIGFydGlrbGVyIG1lZCBuw7hra2Vsb3JkJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDU1MtZmFyZ2UgZm9yIGF2c3RlbW5pbmdzcmVzdWx0YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3Jpb3Bwc2V0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdBbnRhbGwgZGVzaW1hbGVyIGZvciBhdnN0ZW1uaW5nc3Jlc3VsdGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdGb3J2YWxndCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGFuZGFyZCBwcmlvcml0ZXQgZm9yIHNha2VyIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdTdGFuZGFyZCBzdGF0dXMgZm9yIGV0IE9TUy1vYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGFuZGFyZCBzdGF0dXMgZm9yIHNha2VyIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaXNqb24gYXYgZnJpdGVrc3RmZWx0IGZvciBPU1MtYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnU2xldHQgZGVubmUgYXJ0aWtrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRW5kcmUgZGVubmUgYXJ0aWtrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnT1NTLWpvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgcGF0aCBzZXBhcmF0b3IuJ30gPSAnU2VwYXJhdG9yIGZvciBPU1Mtc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICdPU1Mtb21yw6VkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdNb2R1bHJlZ2lzdHJlcmluZyBmb3IgZGVuIG9mZmVudGxpZ2UgZGVsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cHBlIHNvbSBza2FsIGdvZGtqZW5uZSBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0b3Jpa2sgb3ZlciBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0dyZW5zZXNuaXR0IGRlciBodXJ0aWdzw7hrZXQgc2thbCB2aXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnU3Byw6Vrb3Bwc2V0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ0xhbmd1YWdlS2V5IGRlZmluZXJ0IGkgc3Byw6VrZmlsZW4gKl9GQVEucG0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGVuayBvcHAgZXQgYW5uZXQgb2JqZWt0IHRpbCBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOeSBPU1MtYXJ0aWtrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTnllIGFydGlrbGVyIHRyZW5nZXIgZ29ka2plbm5pbmcgZsO4ciBkZSBrYW4gcHVibGlzZXJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnQW50YWxsIG9iamVrdGVyIHZpc3QgaSBzaXN0ZSBlbmRyaW5nZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQW50YWxsIHZpc3RlIG9iamVrdGVyIHVuZGVyIHNpc3Qgb3BwcmV0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ0FudGFsbCB2aXN0ZSBhcnRpa2xlciBpICJUb3BwIDEwIi1mdW5rc2pvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdTa3JpdiB1dCBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0vDuCBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1JhdGVyIGZvciBhdnN0ZW1taW5nLiBOw7hra2VsIG3DpSB2w6ZyZSBpIHByb3NlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdWaXMgSFRNTCBpIE9TUy1hcnRpa2tlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnVmlzIE9TUy1zdGkgKGphL25laSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnVmlzIFdZU0lXWUctcmVkaWdlcmVyIGkgYWdlbnQtZGVsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdWaXMgaW5uaG9sZCBpIHVuZGVya2F0ZWdvcmllci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVmlzIHNpc3QgZW5kcmVkZSBhcnRpa2xlciBpIGRlZmluZXJ0ZSBncmVuc2Vzbml0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ZpcyBzaXN0IG9wcHJldHRlZGUgYXJ0aWtsZXIgaSBkZWZpbmVydGUgZ3JlbnNlc25pdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ZpcyAiVG9wcCAxMCIgaSBkZWZpbmVydGUgZ3JlbnNlc25pdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdWaXMgYXZzdGVtbWluZyBpIGRlZmluZXJ0ZSBncmVuc2Vuc25pdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRpbWUgdXNlIGNvbXBsZXRlIGRlc2NyaXB0aW9uIChkYXlzLCBob3VycywgbWludXRlcyksIGlmIHNldCB0byAiWWVzIjsgb3IganVzdCBmaXJzdCBsZXR0ZXIgKGQsIGgsIG0pLCBpZiBzZXQgdG8gIk5vIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0gJ0lkZW50aWZpa2F0b3IgZm9yIGVuIE9TUy1hcnRpa2tlbCwgZi5la3MuIEZBUSMsIEtCIywgT1NTIywgTWluT1NTIy4gU3RhbmRhcmQgZXIgRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBPU1MtYXJ0aWtsZXIgbWVkICJOb3JtYWwiIGxlbmtldHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPSAnRGVubmUgaW5uc3RpbGxpbmdlbiBkZWZpbmVyZXIgYXQgZW4gT1NTLWFydGlra2VsIGthbiBsZW5rZXMgdGlsIGFuZHJlIE9TUy1hcnRpa2xlciBtZWQgIkZvcmVsZHJlL0Jhcm4iLWxlbmtldHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBzYWtlciBtZWQgIk5vcm1hbCIgbGVua2V0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICdEZW5uZSBpbm5zdGlsbGluZ2VuIGRlZmluZXJlciBhdCBlbiBPU1MtYXJ0aWtrZWwga2FuIGxlbmtlcyB0aWwgYW5kcmUgc2FrZXIgbWVkICJGb3JlbGRyZS9CYXJuIi1sZW5rZXR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdTYWtzaW5uaG9sZCBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnU2Frc2VtbmUgZm9yIGdvZGtqZW5uaW5nIGF2IE9TUy1hcnRpa2xlci4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBuZWVkcyBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cCEnfSA9ICdFbiBrYXRlZ29yaSB0cmVuZ2VyIG1pbnN0IMOpbiB0aWxnYW5nc2dydXBwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgY29tbWVudCEnfSA9ICdFbiBrYXRlZ29yaSBtw6UgaGEgZW4ga29tbWVudGFyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ0FnZW50LWdydXBwZXIgc29tIGhhciB0aWxnYW5nIHRpbCBkZW5uZSBrYXRlZ29yaWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdLYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5lcmVyIGh2b3IgIlNldHQgaW5uIE9TUyItbGVua2VuIHNrYWwgdmlzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ0RldGFsanPDuGsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIENhdGVnb3J5Pyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBzbGV0dGUgZGVubmUga2F0Z29yaWVuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgTGFuZ3VhZ2U/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZXR0ZSBzcHLDpWtldD8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5J30gPSAnT1NTLWthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3J5IGFjY2Vzc2libGUuIFRvIGNyZWF0ZSBhbiBhcnRpY2xlIHlvdSBuZWVkIGFjY2VzcyB0byBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkuIFBsZWFzZSBjaGVjayB5b3VyIGdyb3VwL2NhdGVnb3J5IHBlcm1pc3Npb24gdW5kZXIgLWNhdGVnb3J5IG1lbnUtISd9ID0gJ0luZ2VuIHRpbGdhbmcgdGlsIGthdGVnb3JpLiBGb3Igw6Ugb3BwcmV0dGUgZW4gYXJ0aWtrZWwgbcOlIGR1IGhhIHRpbGdhbmcgdGlsIG1pbnN0IMOpbiBrYXRlZ29yaS4gVmVubmxpZ3N0IHNqZWtrIGRpbmUgZ3J1cHBlLS9rYXRlZ29yaS10aWxnYW5nZXIgdW5kZXIgLWthdGVnb3JpbWVueS0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2tTZWFyY2gnfSA9ICdIdXJ0aWdzw7hrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICdVbmRlcmthdGVnb3JpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHRpdGxlIGlzIHJlcXVpcmVkLid9ID0gJ0VtbmUgZXIgb2JsaWdhdG9yaXNrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIENhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIFN1YkNhdGVnb3JpZXMnfSA9ICdEZW5uZSBrYXRlZ29yaWVuIGVyIGZvcmVsZGVyIHRpbCBmw7hsZ2VuZGUgdW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2UocyknfSA9ICdEZW5uZSBrYXRlZ29yaWVuIGJydWtlcyBpIGbDuGxnZW5kZSBPU1MtYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBMYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdEZXR0ZSBzcHLDpWtldCBlciBpIGJydWsgcMOlIGbDuGxnZW5kZSBhcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZmlubmVzIGFsbGVyZWRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGVkJ30gPSAnT3BwZGF0ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIENhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBhbm90aGVyIENhdGVnb3J5J30gPSAnRHUga2FuIGlra2Ugc2xldHRlIGRlbm5lIGthdGVnb3JpZW4uIERlbiBicnVrZXMgYXYgbWluc3Qgw6luIGFydGlra2VsIG9nL2VsbGVyIGF2IG1pbnN0IMOpbiB1bmRlcmthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIExhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEnfSA9ICdEdSBrYW4gaWtrZSBzbGV0dGUgZGV0dGUgc3Byw6VrZXQsIGRldCBlciBpIGJydWsgcMOlIG1pbnN0IMOpbiBhcnRpa2tlbC4nOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5sX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdwdWJsaWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVEgbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0xhYXRzdCBnZXdpanppZ2RlIGFydGlrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMYWF0c3QgYWFuZ2VtYWFrdGUgYXJ0aWtlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdQb3B1bGFpcnN0ZSBhcnRpa2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTdWJjYXRlZ29yaWUgdmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnR2VlbiB3YWFyZGVyaW5nIGdlc2VsZWN0ZWVyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncHVibGllayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJuIChrbGFudGVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuIChnZWJydWlrZXJzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBkYXknfSA9ICdFZXJzdGUgZGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnRWVyc3RlIG1hYW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICdFZXJzdGUgamFhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnTGFhdHN0ZSBkYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAnTGFhdHN0ZSBtYWFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgeWVhcid9ID0gJ0xhYXRzdGUgamFhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdCZWRhbmt0IHZvb3IgdXcgc3RlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdVIGhlZWZ0IGFsIGdlc3RlbWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnQXJ0aWtlbCBhZmRydWtrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWtlbGVuICh0b3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWtlbGVuIChuaWV1dyBhYW5nZW1hYWt0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0aWtlbGVuIChsYWF0c3QgZ2V3aWp6aWdkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdGQVEgY2F0ZWdvcmllIGJpamdld2Vya3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdGQVEgY2F0ZWdvcmllIHRvZWdldm9lZ2QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0dlZWYgZWVuIG5hYW0gb3Agdm9vciBkZSBjYXRlZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdEZXplIGNhdGVnb3JpZSBiZXN0YWF0IGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdUYWFsIHRvZWdldm9lZ2QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ1RhYWwgYmlqZ2V3ZXJrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdEZSBuYWFtIGlzIHZlcnBsaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdEZXplIHRhYWwgYmVzdGFhdCBhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdPdmVyemljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdPdmVyemljaHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBcnRpa2VsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0tpZXMgZWVuIGNhdGVnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdHb2Vka2V1cmluZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEgY2F0ZWdvcmllYmVoZWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0NhdGVnb3JpZSB0b2V2b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQ2F0ZWdvcmllIHZlcndpamRlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnQ2F0ZWdvcmllIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnQ2F0ZWdvcmllIGJld2Vya2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdXb3JkdCBpbiB3ZWJpbnRlcmZhY2UgZ2V0b29uZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdTZWxlY3RlZXIgdGVubWluc3RlIMOpw6luIHBlcm1pc3NpZWdyb2VwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR2VicnVpa2VycyBtZXQgcmVjaHRlbiBvcCBhcnRpa2VsZW4gaW4gZGV6ZSBjYXRlZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdXaWx0IHUgZGV6ZSBjYXRlZ29yaWUgdmVyd2lqZGVyZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0gJ1Uga3VudCBkZXplIGNhdGVnb3JpZSBuaWV0IHZlcndpamRlcmVuLiBIaWogd29yZHQgZ2VicnVpa3QgaW4gZWVuIG9mIG1lZXIgYXJ0aWtlbGVuIGVuL29mIGhlZWZ0IG9uZGVybGlnZ2VuZGUgY2F0ZWdvcmnDq24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRGV6ZSBjYXRlZ29yaWUgd29yZHQgZ2VicnVpa3QgZG9vciBkZSB2b2xnZW5kZSBhcnRpa2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRGV6ZSBjYXRlZ29yaWUgaGVlZnQgZGUgdm9sZ2VuZGUgc3ViY2F0ZWdvcmnDq24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnV2lsdCB1IGRpdCBhcnRpa2VsIHZlcndpamRlcmVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUSB2ZXJrZW5uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnWm9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1VpdGdlYnJlaWQgem9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yacOrbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpa2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdHZWVuIHN1YmNhdGVnb3Jpw6tuIGdldm9uZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdHZWVuIGRhdGEgZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB0YWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9ICdHZWJydWlrIGRlemUgZmVhdHVyZSBhbHMgdSBtZXQgbWVlcmRlcmUgdGFsZW4gd2lsdCB3ZXJrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ1RhYWwgdG9ldm9lZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ1RhYWwgdmVyd2lqZGVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnVGFhbCB0b2V2b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ1RhYWwgYmV3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1dpbHQgdSBkZXplIHRhYWwgdmVyd2lqZGVyZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9ICdVIGt1bnQgZGV6ZSB0YWFsIG5pZXQgdmVyd2lqZGVyZW4sIGhpaiB3b3JkdCBnZWJydWlrdCBkb29yIGVlbiBvZiBtZWVyIGFydGlrZWxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdEZXplIHRhYWwgaXMgZ2VicnVpa3Qgdm9vciBkZSB2b2xnZW5kZSBhcnRpa2VsZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FhbnRhbCBhcnRpa2VsZW4gcGVyIHBhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdHZWVuIEZBUSBkYXRhIGdldm9uZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICdGQVEgSW5mb3JtYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1N0ZW1tZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1pvZWtlbiBpbiBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFRIHpvZWtlbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ0Jlb29yZGVsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnQmVvb3JkZWxpbmcgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3ZhbiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0dlZW4gc3RlbW1lbiBnZXZvbmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnR2VlbiBzdGVtbWVuIGdldm9uZGVuLiBXZWVzIGRlIGVlcnN0ZSBvbSBkaXQgYXJ0aWtlbCB0ZSBiZW9vcmRlbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnU2xhIGJpamxhZ2Ugb3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPSAnSGllbHAgZGl0IGFydGlrZWwgYmlqIGhldCBiZWFudHdvb3JkZW4gdmFuIHV3IHZyYWFnPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ2hlbGVtYWFsIG5pZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnaGVlbCBlcmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdWb2VnIEZBUSB0ZWtzdCBpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdWb2VnIGxpbmsgbmFhciBGQVEgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ1ZvZWcgRkFRIHRla3N0IGVuIGxpbmsgaW4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdHZWVuIGFydGlrZWxlbiBnZXZvbmRlbi4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdab2VrZW4gaW4gdGVrc3QgdmFuIGFydGlrZWxlbiAoYmlqdi4gIkphbnMqZW4iIG9mICJQcmludCoiKSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlscyd9ID0gJ0RldGFpbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdab2VrIG9wIGFydGlrZWxlbiBtZXQgdHJlZndvb3JkJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdPcGVuYmFhcic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnQmVoZWVyIGNhdGVnb3Jpw6tuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnU3RhbmRhYXJkIGNhdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdWZXJ3aWpkZXIgZGl0IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0Jld2VyayBkaXQgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnRkFRIGpvdXJuYWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnS25vd2xlZGdlIEJhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnR2VzY2hpZWRlbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnTG9nYm9layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnQmVoZWVyIHRhbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0tvcHBlbCBlZW4gYW5kZXIgb2JqZWN0IGFhbiBkaXQgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTmlldXcgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdBcnRpa2VsIGFmZHJ1a2tlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1pvZWtlbiBpbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdUb29uIEZBUSBwYWQgamEvbmVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1Rvb24gc3RlbS1mZWF0dXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgSW5mb3JtYXR5a2EgQm9ndXNsYXdza2kgc3AuIHogby5vLiBzcC5rLiwgaHR0cDovL3d3dy5pYi5wbC8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cGxfRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBQUFGQVEKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnd2V3bsSZdHJ6bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncHVibGljem5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnemV3bsSZdHJ6bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ051bWVyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdvc3RhdG5pbyB6bWllbmlvbmUgYXJ0eWt1xYJ5IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdvc3RhdG5pbyB1dHdvcnpvbmUgYXJ0eWt1xYJ5IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnMTAgbmFqbGVwc3p5Y2ggYXJ0eWt1xYLDs3cgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnUG9ka2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnTmllIHd5YnJhxYJlxZsgb2NlbnkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3B1YmxpY3puZSAod3N6eXNjeSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ3pld27EmXRyem5lIChrbGllbmNpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnd2V3bsSZdHJ6bmUgKGFnZW5jaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAnRHppZcWEIHBvY3rEhXRrb3d5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnTWllc2nEhWMgcG9jesSFdGtvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ1JvayBwb2N6xIV0a293eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnRHppZcWEIGtvxYRjb3d5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ01pZXNpxIVjIGtvxYRjb3d5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAnUm9rIGtvxYRjb3d5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ0R6acSZa3VqZW15IHphIG9kZGFuaWUgZ8WCb3N1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0p1xbwgcmF6IGfFgm9zb3dhxYJlxZshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnRHJ1a3VqIGFydHlrdcWCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnR5a3XFgnkgRkFRICgxMCBuYWpsZXBzenljaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnR5a3XFgnkgRkFRIChub3dlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0eWt1xYJ5IEZBUSAob3N0YXRuaW8gem1pZW5pb25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdLYXRlZ29yaWEgRkFRIHpha3R1YWxpem93YW5hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnS2F0ZWdvcmlhIEZBUSBkb2RhbmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0thdGVnb3JpYSBwb3dpbm5hIHBvc2lhZGHEhyBuYXp3xJkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdUYSBrYXRlZ29yaWEganXFvCBpc3RuaWVqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnSsSZenlrIEZBUSBkb2RhbnkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0rEmXp5ayBGQVEgemFrdHVhbGl6b3dhbnkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ05hendhIGplc3Qgd3ltYWdhbmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnVGVuIGrEmXp5ayBqdcW8IGlzdG5pZWplISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0RvZGFqIGFydHlrdcWCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0thdGVnb3JpYSBqZXN0IHd5bWFnYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ1phdHdpZXJkemVuaWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGthdGVnb3JpYW1pIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdEb2RhaiBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ1VzdcWEIGthdGVnb3JpxJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdEb2RhaiBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZHl0dWoga2F0ZWdvcmnEmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnWm9zdGFuaWUgcG9rYXphbnkgamFrbyBrb21lbnRhcnogdyBla3NwbG9yZXJ6ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdaYXpuYWN6IHByenluYWptbmllaiBqZWRuxIUgZ3J1cMSZIHVwcmF3bmllxYQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVweSBhZ25ldMOzdywga3TDs3JlIG1hasSFIGRvc3TEmXAgZG8gdGVqIGthdGVnb3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0N6eSBuYSBwZXdubyBjaGNlc3ogdXN1bsSFxIcgdMSZIGthdGVnb3JpxJk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0gJ05pZSBtb8W8ZXN6IHVzdW7EhcSHIHRlaiBrYXRlZ29yaWkuIEplc3Qgb25hIHXFvHl3YW5hIHByemV6IHByenluYWptbmllaiBqZWRlbiBhcnR5a3XFgiBGQVEgbHViL2kgamVzdCByb2R6aWNlbSBwcnpuYWptbmllaiBqZWRuZWogaW5uZWoga2F0ZWdvcmlpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnVGEga2F0ZWdvcmlhIGplc3QgdcW8eXdhbmEgdyBuYXN0xJlwdWrEhWN5Y2ggYXJ0eWt1xYJhY2ggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ1RhIGthdGVnb3JpYSBqZXN0IHJvZHppY2VtIG5hc3TEmXB1asSFY3ljaCBwb2RrYXRlZ29yaWknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0ZW4gYXJ0eWt1xYIgRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0Vrc3Bsb3JlciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnU3p5YmtpZSB3eXN6dWtpd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnV3lzenVraXdhbmllIHphYXdhbnNvd2FuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnUG9ka2F0ZWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydHlrdcWCeSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdCcmFrIHBvZGthdGVnb3JpaS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnQnJhayBkYW55Y2ggdyBkemllbm5pa3UgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgasSZenlrYW1pIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWdlcy4nfSA9ICdVxbx5aiB0ZWogZnVua2NqaSBqZcWbbGkgY2hjZXN6IHByYWNvd2HEhyB6IHdpZWxvbWEgasSZenlrYW1pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdEb2RhaiBqxJl6eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnVXN1xYQgasSZenlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0RvZGFqIGrEmXp5ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWR5dHVqIGrEmXp5ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0ZW4gasSZenlrPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPSAnTmllIG1vxbxlc3ogdXN1bsSFxIcgdGVnbyBqxJl6eWthLiBKZXN0IG9uIHXFvHl3YW55IHcgcHJ6eW5ham1uaWVqIGplZG55bSBhcnR5a3VsZSBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnVGVuIGrEmXp5ayBqZXN0IHXFvHl3YW55IHcgbmFzdMSZcHVqxIVjeWNoIGFydHVrdcWCYWNoIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ1VzdGF3aWVuaWEga29udGVrc3Rvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnTGljemJhIGFydHlrdcWCw7N3IEZBUSBuYSBzdHJvbsSZJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0JyYWsgZGFueWNoIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnSW5mby1GQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdHxYJvc3knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUSBwZcWCbm90ZWtzdG93byc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdXeXN6dWtpd2FuaWUgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjamUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ09jZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnT2NlbmEgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3ogNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdCcmFrIGfFgm9zw7N3ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnQnJhayBnxYJvc8OzdyEgQsSFZMW6IHBpZXJ3c3p5IGkgb2NlxYQgdGVuIGFydHlrdcWCIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ1BvYmllcnogemHFgsSFY3puaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPSAnSmFrIHBvbW9jbnkgYnnFgiB0ZW4gYXJ0eWt1xYI/IFByb3NpbXkgbyB0d29qxIUgb2NlbsSZIGkgcG9tb2MgcHJ6eSB1ZG9za29uYWxhbml1IGJhenkgRkFRLiBEemnEmWt1amVteSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduaWVwcnp5ZGF0bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAncG9tb2NuZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ1dzdGF3IHRla3N0IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdXc3RhdyBvZG5vxZtuaWsgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdXc3RhdyB0ZWtzdCBpIG9kbm/Fm25payBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdOaWUgem5hbGV6aW9ubyBhcnR5a3XFgsOzdyBGQVEuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnV3lzenVraXdhbmllIHBlxYJub3Rla3N0b3dlIHcgYXJ0eWt1xYJhY2ggRkFRIChucC4gIk5haipwc3p5IiBsdWIgIktvd2Fsc2sqIiknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbHMnfSA9ICdTemN6ZWfDs8WCeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1N6dWthaiBhcnR5a3XFgsOzdyB6YSBwb21vY8SFIHPFgm93YSBrbHVjem93ZWdvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQb2JsaWN6bmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBmcmVlIHRleHQgb3B0aW9ucyBzaG93biBpbiB0aGUgdGlja2V0IG1lc3NhZ2Ugc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuIE5PVEUuIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlc2UgZmllbGRzIGFsc28gaW4gdGhlIHRpY2tldCB6b29tIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHlvdSBoYXZlIHRvIGVuYWJsZSB0aGVtIGluIEN1c3RvbWVyVGlja2V0Wm9vbSMjI0F0dHJpYnV0ZXNWaWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0tvbG9yIENTUyBkbGEgd3luaWvDs3cgZ8WCb3Nvd2FuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUga2F0ZWdvcmlhbWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHlvdXIgb3duIGxvZyB0ZXh0IGZvciBQR1AuJ30gPSAnU2tvbmZpZ3VydWogc3fDs2ogd8WCYXNueSB0ZWtzdCBsb2dhIGRsYSBQR1AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSB0ZXh0IGZvciB0aGUgcGFnZSBzaG93biB0byBjdXN0b21lcnMgdGhhdCBoYXZlIG5vIHRpY2tldHMgeWV0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdNaWVqc2NhIHBvIHBvdHJ6ZWNpbmt1IHcgd3luaWthY2ggZ8WCb3Nvd2FuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdEb215xZtsbmEgbmF6d2Ega2F0ZWdvcmlpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnRG9tecWbbG55IGrEmXp5ayBkbGEgYXJ0eWt1xYLDs3cgRkFRIHcgdHJ5YmllIHBvamVkeW5jemVnbyBqxJl6eWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRG9tecWbbG55IHByaW9yeXRldCB6Z8WCb3N6ZcWEIGRsYSB6YXR3aWVyZHplxYQgYXJ0eWt1xYLDs3cgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnRG9tecWbbG55IHN0YW4gZGxhIHBvenljamkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaWNqYSBwb2xhIGZyZWUgdGV4dCBwb3p5Y2ppIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnVXN1xYQgdG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdFZHl0dWogdG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdXxYLEhWN6IHdpZWxlIGrEmXp5a8OzdyB3IG1vZHVsZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnV8WCxIVjeiBtZWNoYW5pem0gZ8WCb3Nvd2FuaWEgdyBtb2R1bGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0R6aWVubmlrIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXQgRkFRIHcgcHJ6ZWdsxIVkemllIGR6aWVubmlrYSB3IHRyeWJpZSAiTWHFgmUiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXQgRkFRIHcgcHJ6ZWdsxIVkemllIHcgdHJ5YmllICJNYcWCZSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnTGltaXQgRkFRIG5hIHN0cm9uxJkgdyBwcnplZ2zEhWR6aWUgZHppZW5uaWthIHcgdHJ5YmllICJNYcWCZSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0xpbWl0IEZBUSBuYSBzdHJvbsSZIHcgcHJ6ZWdsxIVkemllIHcgdHJ5YmllICJNYcWCZSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ1NlcGFyYXRvciDFm2NpZcW8a2kgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUFyZWEnfSA9ICdGQVE6IGN6xJlzdG8gemFkYXdhbmUgcHl0YW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cGFhIGRsYSBha2NlcHRhY2ppIGFydHlrdcWCw7N3IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlhIHRlZ28gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lnbm9yZSBhcnRpY2xlIHdpdGggc3lzdGVtIHNlbmRlciB0eXBlIGZvciBuZXcgYXJ0aWNsZSBmZWF0dXJlIChlLiBnLiBhdXRvIHJlc3BvbnNlcyBvciBlbWFpbCBub3RpZmljYXRpb25zKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdEemllbm5payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGrEmXp5a2FtaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ0xhbmd1YWdla2V5LCBrdMOzZSBqZXN0IHpkZWZpbmlvd2FuZSB3IHBsaWt1IGrEmXp5a2EgKl9GQVEucG0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ1BvxYLEhWN6IGlubnkgb2JpZWt0IHogdHltIGVsZW1lbnRlbSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ05vd3kgYXJ0eWt1xYIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ05vd2UgYXJ0eWt1xYJ5IEZBUSB3eW1hZ2FqxIUgemF0d2llcmR6ZW5pYSBwcnplZCBwdWJsaWthY2rEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdXeWRydWt1aiB0byBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnS29sZWprYSBkbGEgemF0d2llcmR6ZcWEIGFhcnR5a3XFgsOzdyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdTenVrYWogRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGlzIHRvIHllcyBpZiB5b3UgdHJ1c3QgaW4gYWxsIHlvdXIgcHVibGljIGFuZCBwcml2YXRlIHBncCBrZXlzLCBldmVuIGlmIHRoZXkgYXJlIG5vdCBjZXJ0aWZpZWQgd2l0aCBhIHRydXN0ZWQgc2lnbmF0dXJlLid9ID0gJ1VzdGF3IG5hIHRhayBqZcWbbGkgdWZhc3ogd3N6c3l0a2ltIHN3b2ltIHB1YmxpY3pueW0gaSBwcnl3YXRueW0ga2x1Y3pvbSBQR1AsIG5hd2V0IGplxZtsaSBuaWUgc8SFIG9uZSBjZXJ0eWZpa293YW5lIHphdWZhbnltIHBvZHBpc2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IFdZU0lXWUcgZWRpdG9yIGluIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRpbWUgdXNlIGNvbXBsZXRlIGRlc2NyaXB0aW9uIChkYXlzLCBob3VycywgbWludXRlcyksIGlmIHNldCB0byAiWWVzIjsgb3IganVzdCBmaXJzdCBsZXR0ZXIgKGQsIGgsIG0pLCBpZiBzZXQgdG8gIk5vIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBmcmVlIHRleHQgb3B0aW9ucyBzaG93biBpbiB0aGUgdGlja2V0IG1lc3NhZ2Ugc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuIE5PVEUuIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlc2UgZmllbGRzIGFsc28gaW4gdGhlIHRpY2tldCB6b29tIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHlvdSBoYXZlIHRvIGVuYWJsZSB0aGVtIGluIEN1c3RvbWVyVGlja2V0Wm9vbSMjI0F0dHJpYnV0ZXNWaWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZnJlZSB0aW1lIG9wdGlvbnMgc2hvd24gaW4gdGhlIHRpY2tldCBtZXNzYWdlIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLiBOT1RFLiBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZXNlIGZpZWxkcyBhbHNvIGluIHRoZSB0aWNrZXQgem9vbSBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB5b3UgaGF2ZSB0byBlbmFibGUgdGhlbSBpbiBDdXN0b21lclRpY2tldFpvb20jIyNBdHRyaWJ1dGVzVmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXB5IGFnZW50w7N3LCBrdMOzcmUgbWFqxIUgZG9zdMSZcCBkbyB0ZWoga2F0ZWdvcmlpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3JpZXMnfSA9ICdLYXRlZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlsU2VhcmNoJ30gPSAnRG9rxYJhZG5lIHd5c3p1a2l3YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnknfSA9ICdLYXRlZ29yaWEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3J5IGFjY2Vzc2libGUuIFRvIGNyZWF0ZSBhbiBhcnRpY2xlIHlvdSBuZWVkIGFjY2VzcyB0byBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkuIFBsZWFzZSBjaGVjayB5b3VyIGdyb3VwL2NhdGVnb3J5IHBlcm1pc3Npb24gdW5kZXIgLWNhdGVnb3J5IG1lbnUtISd9ID0gJ0JyYWsgemRlZmluaW93YW55Y2gga2F0ZWdvcmlpLiBBYnUgdXR3b3J6ecSHIGFydHlrdcWCIG11c2kgaXN0bmllxIcgY28gbmFqbW5pZWogamVkbmEga2F0ZWdvcmlhLiBTcHJhd2TFuiBwcm9zesSZIHN3b2plIHVwcmF3bmllbmlhIHcgbWVudSBLYXRlZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrU2VhcmNoJ30gPSAnU3p5YmtpZSB3eXN6dWtpd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcmllcyd9ID0gJ1BvZGthdGVnb3JpZSc7CgogICAgIwogICAgIyBPVEhFUgogICAgIwoKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnRWtzcGxvcmVyJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOw7ptZXJvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdBcnRpZ29zIG1vZGlmaWNhZG9zIHJlY2VudGVtZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfDmmx0aW1vcyBhcnRpZ29zIGFkaWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdPcyAxMCBhcnRpZ29zIG1haXMgYWNlc3NhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcmlhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnU2VsZWNpb25lIGEgcG9udHVhw6fDo28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3DDumJsaWNvICh0b2RvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybm8gKGNsaWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5vIChhdGVuZGVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ0RpYSBkZSBpbsOtY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAnTcOqcyBkZSBpbsOtY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICdBbm8gZGUgaW7DrWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAnRGlhIGRlIHTDqXJtaW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBtb250aCd9ID0gJ03DqnMgZGUgdMOpcm1pbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICdBbm8gZGUgdMOpcm1pbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnT2JyaWdhZG8gcG9yIHNldSBWb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVm9jw6ogasOhIHZvdG91ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWlyIEFydGlnbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWdvcyBGQVEgKFRvcCAxMCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnRpZ29zIEZBUSAoY3JpYWRvIG5vdm8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpZ29zIEZBUSAoYWx0ZXJhZG9zIHJlY2VudGVtZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnQ2F0ZWdvcmlhIEZBUSBhdHVhbGl6YWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnQ2F0ZWdvcmlhIEZBUSBhZGljaW9uYWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdVbWEgY2F0ZWdvcmlhIHByZWNpc2EgdGVyIHVtIG5vbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdFc3RhIGNhdGVnb3JpYSBqw6EgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnSWRpb21hIEZBUSBhZGljaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdJZGlvbWEgRkFRICBhdHVhbGl6YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdPIG5vbWUgw6kgb2JyaWdhdMOzcmlvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0Vzc2UgaWRpb21hIGrDoSBleGlzdGUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBBcnRpY2xlJ30gPSAnQWRpY2lvbmFyIEFydGlnbyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdBIGNhdGVnb3JpYSDDqSBuZWNlc3PDoXJpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvdmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXJlbmNpYW1lbnRvIGRlIENhdGVnb3JpYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWRpY2lvbmFyIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdFeGNsdWlyIENhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0FkaWNpb25hciBDYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0FsdGVyYXIgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTZXLDoSBleGliaWRvIGNvbW8gY29tZW50w6FyaW8gbm8gRXhwbG9yZXJhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnUG9yIGZhdm9yLCBzZWxlY2lvbmUgcGVsbyBtZW5vcyB1bSBncnVwbyBkZSBwZXJtaXNzw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cG9zIGRlIGF0ZW5kZW50ZXMgcXVlIHBvZGVtIGFjZXNzYXIgYXJ0aWdvcyBuZXN0YSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdWb2PDqiByZWFsbWVudGUgcXVlciBhcGFnYXIgZXN0YSBjYXRlZ29yaWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWdvIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPSAnVm9jw6ogbsOjbyBwb2RlIGV4Y2x1aXIgZXN0YSBjYXRlZ29yaWEuIEVsYSDDqSB1c2FkYSBlbSBwZWxvIG1lbm9zIHVtIGFydGlnbyBGQVEgZS9vdSDDqSBwYWkgZGUgcGVsbyBtZW5vcyB1bWEgb3V0cmEgY2F0ZWdvcmlhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0VzdGEgY2F0ZWdvcmlhIMOpIHV0aWxpemFkYSBubyhzKSBzZWd1aW50ZShzKSBhcnRpZ28ocykgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0VzdGEgY2F0ZWdvcmlhIMOpIHBhaSBkYXMgc2VndWludGVzIHN1YmNhdGVnb3JpYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVm9jw6ogcmVhbG1lbnRlIHF1ZXIgZXhjbHVpciBlc3RlIGFydGlnbyBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXhwbG9yZXJhZG9yIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdCdXNjYSBSw6FwaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1Blc3F1aXNhIEF2YW7Dp2FkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViY2F0ZWdvcmlhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpZ29zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ1N1YmNhdGVnb3JpYXMgbsOjbyBlbmNvbnRyYWRhcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBKb3JuYWwgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXJlbmNpYW1lbnRvIGRlIElkaW9tYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0gJ1VzZSBlc3NlIHJlY3Vyc28gc2Ugdm9jw6ogZGVzZWphIHRyYWJhbGhhciBjb20gbcO6bHRpcGxvcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSd9ID0gJ0V4Y2x1aXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkaXRhciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1ZvY8OqIHJlYWxtZW50ZSBxdWVyIGV4Y2x1aXIgZXN0ZSBpZGlvbWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9ICdWb2PDqiBuw6NvIHBvZGUgZXhjbHVpciBlc3RlIGlkaW9tYS4gRWxlIMOpIHVzYWRvIGVtIHBlbG8gbWVub3MgdW0gYXJ0aWdvIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdFc3RlIGlkaW9tYSDDqSB1c2FkbyBub3Mgc2VndWludGVzIGFydGlnbyhzKSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdDb25maWd1cmHDp8O1ZXMgZGUgQ29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0aWdvcyBGQVEgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBGQVEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ0ZBUSBJbmZvcm1hw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRLVRleHRvQ29tcGxldG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnQnVzY2EgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8OjbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnTm90YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcgJSd9ID0gJ05vdGEgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3JlZHV6aWRvIGRlIDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnTmVuaHVtIHZvdG8gZW5jb250cmFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ05lbmh1bSB2b3RvIGVuY29udHJhZG8hIFNlamEgbyBwcmltZWlybyBhIGF2YWxpYXIgZXN0ZSBhcnRpZ28gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnQmFpeGFyIGFuZXhvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9ICdFc3RlIGFydGlnbyB0ZSBhanVkb3U/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbsOjbyBhanVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdtdWl0byDDunRpbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0ZBUSBJbnNlcmlyIFRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0ZBUSBJbnNlcmlyIExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0ZBUSBJbnNlcmlyIFRleHRvIGUgTGluayc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05lbmh1bSBhcnRpZ28gRkFRIGVuY29udHJhZG8uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnUGVzcXVpc2EgY29tcGxldGEgZGUgdGV4dG9zIGVtIGFydGlnb3MgRkFRIChwb3IgZXhlbXBsbywgIkpvKm8iIG9yICJXaWxsKiIpJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxzJ30gPSAnRGV0YXRoZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdQcm9jdXJlIHBvciBhcnRpZ29zIGNvbSBwYWxhdnJhcy1jaGF2ZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9ICdVbSBmaWx0cm8gZGUgc2HDrWRhIEhUTUwgcGFyYSBhZGljaW9uYXIgbGlua3MgcGFyYSB0csOhcyB1bWEgc2Vxw7zDqm5jaWEgZGVmaW5pZGEuIE8gZWxlbWVudG8gZGUgaW1hZ2VtIHBlcm1pdGUgZG9pcyB0aXBvcyBkZSBlbnRyYWRhLiBQcmltZWlybywgbyBub21lIGRlIHVtYSBpbWFnZW0gKGZhcS5wbmcsIHBvciBleGVtcGxvKS4gTmVzdGUgY2FzbywgbyBjYW1pbmhvIGRhIGltYWdlbSBPVFJTIHNlcsOhIHVzYWRvLiBBIHNlZ3VuZGEgcG9zc2liaWxpZGFkZSDDqSBpbnNlcmlyIG8gbGluayBwYXJhIGEgaW1hZ2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUyBjb3IgcGFyYSBvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXJlbmNpYW1lbnRvIGRlIENhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDYXNhcyBkZWNpbWFpcyBkbyByZXN1bHRhZG8gZGEgdm90YcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnTm9tZSBwYWRyw6NvIGRhIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0lkaW9tYSBwYWRyw6NvIHBhcmEgb3MgYXJ0aWdvcyBGQVEgbm8gbW9kbyBkZSBpZGlvbWEgw7puaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUHJpb3JpZGFkZSBwYWRyw6NvIGRlIGNoYW1hZG9zIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFc3RhZG8gcGFkcsOjbyBkZSBlbnRyYWRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0VzdGFkbyBwYWRyw6NvIGRlIGNoYW1hZG9zIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPSAnVmFsb3IgcGFkcsOjbyBwYXJhIG8gcGFyw6JtZXRybyBkZSBSZWN1cnNvIHBhcmEgYSBpbnRlcmZhY2UgcMO6YmxpY2EuIE8gcGFyw6JtZXRybyBkZSBhw6fDo28gw6kgdXNhZG8gbm9zIHNjcmlwdHMgZG8gc2lzdGVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0gJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHJlc3VtbyBwYXJhIG1vc3RyYXIgYSB2aXN1YWxpemHDp8OjbyBwZXF1ZW5hIGRlIHVtIGpvcm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9ICdEZWZpbmUgdW0gbcOzZHVsbyBkZSByZXN1bW8gcGFyYSBtb3N0cmFyIGEgdmlzdWFsaXphciBkZSB1bWEgcGVxdWVuYSBsaXN0YSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIGVtIHVtYSBwZXNxdWlzYSBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgbm8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5vIEdlcmVuY2lhZG9yIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBubyBqb3JuYWwgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbmEgcGVzcXVpc2EgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPSAnRGVmaW5lIG9uZGUgbyBsaW5rIFwnSW5zZXJpciBGQVFcJyBzZXLDoSBleGliaWRvLiBOb3RhOiBPcyBSZWN1cnNvIGNvbXVtIGRvIEF0ZW5kZW50ZSBpbmNsdWkgQWJyaXIgQ2hhbWFkbywgRmVjaGFyIENoYW1hZG8sIENoYW1hZG8gZGUgVGV4dG8gTGl2cmUsIENoYW1hZG8gZG8gcHJvcHJpZXTDoXJpbywgQ2hhbWFkbyBwZW5kZW50ZSwgQ2hhbWFkbyBwcmlvcml0w6FyaW8gZSBSZXNwb25zw6F2ZWwgcGVsbyBDaGFtYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmnDp8OjbyBkZSBjYW1wb3MgZGUgdGV4dG8gbGl2cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0V4Y2x1aXIgZXN0ZSBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdFZGl0YXIgZXN0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ1Blcm1pdGlyIHbDoXJpb3MgaWRpb21hcyBubyBtw7NkdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdQZXJtaXRpciBtZWNhbmlzbW8gZGUgQXZhbGlhw6fDo28gbm8gbcOzZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnSm9ybmFsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRhIFZpc8OjbyBHZXJhbCAiUGVxdWVubyIgZG8gSm9ybmFsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSBWaXPDo28gR2VyYWwgRkFRICJQZXF1ZW5vIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMaW1pdGUgZGUgRkFRcyBwb3IgcMOhZ2luYSBkYSBWaXPDo28gR2VyYWwgIlBlcXVlbm8iIGRvIEpvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0xpbWl0ZSBkZSBGQVFzIHBvciBww6FnaW5hIGRhIFZpc8OjbyBHZXJhbCAiUGVxdWVubyIgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdEZWxpbWl0YWRvciBkZSBjYW1pbmhvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0ZBUSBidXNjYSBzZXJ2aWRvciByb3RlYWRvciBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ8OBcmVhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdGcm9udGVuZCBkZSByZWdpc3RvIGRvIG3Ds2R1bG8gcGFyYSBhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cG8gcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3TDs3JpY28gZGVzdGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGNhbXBvcyBpbnRlcm5vcyBkZSB1bSBDaGFtYWRvIGJhc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgbyBub21lIGRlIGNhZGEgY2FtcG8gZW0gdW0gQ2hhbWFkbyBiYXNlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjZXMgb25kZSBhIGJ1c2NhIHLDoXBpZGEgZGV2ZSBzZXIgZGVtb25zdHJhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKb3JuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3TDo28gZGUgaWRpb21hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ0lkaW9tYSBjaGF2ZSBxdWUgZXN0w6EgZGVmaW5pZG8gbm8gYXJxdWl2byBkZSBpZGlvbWEgKl9GQVEucG0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0xpbmsgZGUgb3V0cm8gYXJ0aWdvIHBhcmEgZXN0ZSBpdGVtIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIGpvcm5hbCBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcHVibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBmYXEgc2VhcmNoLid9ID0gJ03Ds2R1bG8gcGFyYSBnZXJhciBodG1sICJPcGVuU2VhcmNoIiBwZXJmaWwgZGUgcGVzcXVpc2EgZmFxIGN1cnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOb3ZvIGFydGlnbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTm92b3MgYXJ0aWdvcyBGQVEgcHJlY2lzYW0gZGUgYXByb3Zhw6fDo28gYW50ZXMgZGUgc2VyIHB1YmxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdOw7ptZXJvIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gR2VyZW5jaWFkb3IgRkFRIGRvIGludGVyZmFjZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIEdlcmVuY2lhZG9yIEZBUSBkbyBpbnRlcmZhY2UgcHVibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdOw7ptZXJvIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcHVibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ07Dum1lcm8gZGUgaXRlbnMgbW9zdHJhZG9zIGVtIMO6bHRpbWFzIGFsdGVyYcOnw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOw7ptZXJvIGRlIGl0ZW5zIG1vc3RyYWRvcyBlbSDDumx0aW1hcyBjcmlhw6fDtWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ07Dum1lcm8gZGUgaXRlbnMgbW9zdHJhZG9zIG5vIHJlY3Vyc28gdG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPSAnUGFyw6JtZXRyb3MgZGUgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBGQVEgc8OjbyBtb3N0cmFkb3MpIGRhIHZpc8OjbyBnZXJhbCBwZXF1ZW5hIGRvIGpvcm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPSAnUGFyw6JtZXRyb3MgZGUgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBGQVEgc8OjbyBtb3N0cmFkb3MpIGRhIHZpc8OjbyBnZXJhbCBwZXF1ZW5hIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdJbXByaW1pciBlc3RlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGaWxhIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnQ29uZGnDp8OjbyBwYXJhIGEgYXZhbGlhw6fDo28uIENoYXZlIGRldmUgc2VyIGVtIHBlcmNlbnR1YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdQZXNxdWlzYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnTW9zdHJhIGJvdMOjbyAiSW5zZXJpciBMaW5rIEZBUSIgZW0gQW1wbGlhw6fDo28gcGVxdWVuYSBwYXJhIG8gYXJ0aWdvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICdNb3N0cmEgYm90w6NvICJJbnNlcmlyIHRleHRvIGUgTGluayBGQVEiIGVtIEFtcGxpYcOnw6NvIHBlcXVlbmEgcGFyYSBvIGFydGlnb3MgRkFRIHDDumJsaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdNb3N0cmFyIGJvdMOjbyAiSW5zZXJpciBGQVEgVGV4dG8iIGNvbSBwZXF1ZW5hIGFtcGxpYcOnw6NvIHBhcmEgbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ01vc3RyYXIgYXJ0aWdvIEZBUSBjb20gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnTW9zdHJhciBjYW1pbmhvIEZBUSBzaW0gLyBuw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IFdZU0lXWUcgZWRpdG9yIGluIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmFyIGVkaXRvciBXWVNJV1lHIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdNb3N0cmFyIGl0ZW5zIGRlIHN1YmNhdGVnb3JpYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgYXMgw7psdGltYXMgYWx0ZXJhw6fDtWVzIGRlIGl0ZW5zIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBvcyDDumx0aW1vcyBpdGVucyBjcmlhZG9zIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBvcyAxMCBpdGVucyBzdXBlcmlvciBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgdm90YcOnw6NvIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGxpZ2FyIHVtIEZBUSBjb20gb3V0cm8gb2JqZXRvIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGV4Y2x1aXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgYWNlc3NhciBvIGhpc3TDs3JpY28gZGUgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSB2b2x0YXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgaW1wcmltaXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPSAnTyBpZGVudGlmaWNhZG9yIHBhcmEgdW0gRkFRLCBleGVtcGxvIEZBUSAjIEtCICMgIyBNeUZBUS4gTyBwYWRyw6NvIMOpIEZBUSAjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0ZBUVwnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdOb3JtYWxcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnRkFRXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ1BhaSBlIGZpbGhvXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdDaGFtYWRvXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdDaGFtYWRvXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ1BhaSBlIGZpbGhvXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0NvcnBvIGRvIGNoYW1hZG8gcGFyYSBhcHJvdmHDp8OjbyBkZSB1bSBhcnRpZ28gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnTyBhc3N1bnRvIGRvIGNoYW1hZG8gcGFyYSBhcHJvdmHDp8OjbyBkZSB1bSBhcnRpZ28gRkFRLic7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgRXhwbG9yZXIgcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGU6ICd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICcnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDEyIEZDQ04gLSBSdWkgRnJhbmNpc2NvIDxydWkuZnJhbmNpc2NvQGZjY24ucHQ+CiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X1BUX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOw7ptZXJvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3RDaGFuZ2VkSXRlbXMnfSA9ICdBcnRpZ29zIG1vZGlmaWNhZG9zIHJlY2VudGVtZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3RDcmVhdGVkSXRlbXMnfSA9ICfDmmx0aW1vcyBhcnRpZ29zIGFkaWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcDEwSXRlbXMnfSA9ICdPcyAxMCBhcnRpZ29zIG1haXMgYWNlZGlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViQ2F0ZWdvcnlPZid9ID0gJ1N1YmNhdGVnb3JpYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ1NlbGVjaW9uZSBhIHBvbnR1YcOnw6NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdww7pibGljbyAodG9kb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5vIChjbGllbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAoYWdlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydERheSd9ID0gJ0RpYSBkZSBpbsOtY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0TW9udGgnfSA9ICdNw6pzIGRlIGluw61jaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRZZWFyJ30gPSAnQW5vIGRlIGluw61jaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kRGF5J30gPSAnRGlhIGRlIGZpbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmRNb250aCd9ID0gJ03DqnMgZGUgZmltJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZFllYXInfSA9ICdBbm8gZGUgZmltJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ09icmlnYWRvIHBlbGEgc3VhIGNvbGFib3Jhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdKw6EgcGFydGljaXBvdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdJbXByaW1pciBBcnRpZ28gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGlnb3MgRkFRIChUb3AgMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWdvcyBGQVEgKGNyaWFkbyBub3ZvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0aWdvcyBGQVEgKGFsdGVyYWRvcyByZWNlbnRlbWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0NhdGVnb3JpYSBGQVEgYXR1YWxpemFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0NhdGVnb3JpYSBGQVEgYWRpY2lvbmFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnQSBjYXRlZ29yaWEgcHJlY2lzYSB0ZXIgdW0gbm9tZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0VzdGEgY2F0ZWdvcmlhIGrDoSBleGlzdGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdJZGlvbWEgRkFRIGFkaWNpb25hZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0lkaW9tYSBGQVEgIGF0dWFsaXphZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ08gbm9tZSDDqSBvYnJpZ2F0w7NyaW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnTyBpZGlvbWEgasOhIGV4aXN0ZSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGljaW9uYXIgQXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0EgY2F0ZWdvcmlhIMOpIG9icmlnYXTDs3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvdmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIENhdGVnb3JpYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWRpY2lvbmFyIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdBcGFnYXIgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnQWRpY2lvbmFyIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnQWx0ZXJhciBjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlcsOhIGV4aWJpZG8gY29tbyBjb21lbnTDoXJpbyBubyBicm93c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnUG9yIGZhdm9yLCBzZWxlY2lvbmUgcGVsbyBtZW5vcyB1bSBncnVwbyBkZSBwZXJtaXNzw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cG9zIGRlIGFnZW50ZXMgcXVlIHBvZGVtIGFjZWRlciBhb3MgYXJ0aWdvcyBuZXN0YSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdEZXNlamEgYXBhZ2FyIGVzdGEgY2F0ZWdvcmlhPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGlnbyBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0gJ07Do28gcG9kZSBhcGFnYXIgZXN0YSBjYXRlZ29yaWEuIMOJIHVzYWRhIGVtIHBlbG8gbWVub3MgdW0gYXJ0aWdvIEZBUSBlL291IMOpIHBhaSBkZSBwZWxvIG1lbm9zIHVtYSBvdXRyYSBjYXRlZ29yaWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRXN0YSBjYXRlZ29yaWEgw6kgdXRpbGl6YWRhIG5vKHMpIHNlZ3VpbnRlKHMpIGFydGlnbyhzKSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRXN0YSBjYXRlZ29yaWEgw6kgcGFpIGRhcyBzZWd1aW50ZXMgc3ViLWNhdGVnb3JpYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnRGVzZWphIGFwYWdhciBlc3RlIGFydGlnbyBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXhwbG9yYWRvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnUGVzcXVpc2EgUsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdQZXNxdWlzYSBBdmFuw6dhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1Yi1jYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlnb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnU3ViY2F0ZWdvcmlhcyBuw6NvIGVuY29udHJhZGFzLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZG9zIGRhZG9zIGRlIEpvcm5hbCBGQVEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3TDo28gZGUgSWRpb21hcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPSAnVXRpbGl6ZSBlc3RhIGZ1bmNpb25hbEFudGlndWlkYWRlIGNhc2VvIGRlc2VqYSB0cmFiYWxoYXIgY29tIG3Dumx0aXBsb3MgaWRpb21hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnQWRpY2lvbmFyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICdBcGFnYXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkaXRhciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0Rlc2VqYSBhcGFnYXIgZXN0ZSBpZGlvbWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9ICdOw6NvIHBvZGUgYXBhZ2FyIGVzdGUgaWRpb21hLiDDiSB1c2FkbyBlbSBwZWxvIG1lbm9zIHVtIGFydGlnbyBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBpZGlvbWEgw6kgdXNhZG8gbm9zIHNlZ3VpbnRlcyBhcnRpZ28ocykgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQ29uZmlndXJhw6fDtWVzIGRlIENvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlnb3MgRkFRIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkb3MgZGFkb3MgZGUgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFQcmludAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRLUluZm8nfSA9ICdGQVEgSW5mb3JtYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90b3MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUS1UZXh0b0NvbXBsZXRvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ1Blc3F1aXNhIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDo28gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ05vdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICdOb3RhICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdyZWR1emlkbyBkZSA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ05lbmh1bSB2b3RvIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdOZW5odW0gdm90byBlbmNvbnRyYWRvISBTZWphIG8gcHJpbWVpcm8gYSBhdmFsaWFyIGVzdGUgYXJ0aWdvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0Rlc2NhcnJlZ2FyIGFuZXhvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlVm90aW5nUXVlc3Rpb24nfSA9ICdFc3RlIGFydGlnbyBmb2kgw7p0aWwgPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ27Do28gYWp1ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnbXVpdG8gw7p0aWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdGQVEgSW5zZXJpciBUZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdGQVEgSW5zZXJpciBMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdGQVEgSW5zZXJpciBUZXh0byBlIExpbmsnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdOZW5odW0gYXJ0aWdvIEZBUSBlbmNvbnRyYWRvLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1Blc3F1aXNhIGNvbXBsZXRhIGRlIHRleHRvcyBlbSBhcnRpZ29zIEZBUSAocG9yIGV4ZW1wbG8sICJKbypvIiBvciAiV2lsbCoiKSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlscyd9ID0gJ0RldGFsaGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnUGVzcXVpc2UgcG9yIGFydGlnb3MgY29tIHBhbGF2cmFzLWNoYXZlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQw7pibGljbyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVpvb20KCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0gJ1VtIGZpbHRybyBkZSBzYcOtZGEgSFRNTCBwYXJhIGFkaWNpb25hciBsaW5rcyBwYXJhIGF0csOhcyB1bWEgc2Vxw7zDqm5jaWEgZGVmaW5pZGEuIE8gZWxlbWVudG8gZGUgaW1hZ2VtIHBlcm1pdGUgZG9pcyB0aXBvcyBkZSBlbnRyYWRhLiBQcmltZWlybywgbyBub21lIGRhIGltYWdlbSAoZXg6ZmFxLnBuZykuIE5lc3RlIGNhc28sIG8gY2FtaW5obyBkYSBpbWFnZW0gT1RSUyBzZXLDoSB1dGlsaXphZG8uIEEgc2VndW5kYSBwZXJtaXRlIGluc2VyaXIgbyBsaW5rIHBhcmEgYSBpbWFnZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ8O0ciBDU1MgcGFyYSBvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIENhdGVnb3JpYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ2FzYXMgZGVjaW1haXMgZG8gcmVzdWx0YWRvIGRhIHZvdGHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbWUgcG9yIG9taXNzw6NvIGRlIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0lkaW9tYSBwb3Igb21pc3PDo28gcGFyYSBvcyBhcnRpZ29zIEZBUSBubyBtb2RvIGRlIGlkaW9tYSDDum5pY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdQcmlvcmlkYWRlIHBvciBvbWlzc8OjbyBkZSB0aWNrZXRzIHBhcmEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnRXN0YWRvIHBvciBvbWlzc8OjbyBkZSBlbnRyYWRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0VzdGFkbyBwb3Igb21pc3PDo28gZGUgdGlja2V0cyBwYXJhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9ICdWYWxvciBwb3Igb21pc3PDo28gcGFyYSBvIHBhcsOibWV0cm8gZGUgUmVjdXJzbyBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuIE8gcGFyw6JtZXRybyBkZSBhw6fDo28gw6kgdXRpbGl6YWRvIG5vcyBzY3JpcHRzIGRvIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9ICdEZWZpbmUgdW0gbcOzZHVsbyBkZSByZXN1bW8gcGFyYSBtb3N0cmFyIGEgdmlzdGEgcGVxdWVuYSBkZSB1bSBqb3JuYWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPSAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgcmVzdW1vIHBhcmEgbW9zdHJhciBhIHZpc3VhbGl6YXIgZGUgdW1hIHBlcXVlbmEgbGlzdGEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0RlZmluZSBvIGF0cmlidXRvIHBvciBvbWlzc8OjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBhIEZBUSBudW1hIHBlc3F1aXNhIEZBUSBubyBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ0RlZmluZSBvIGF0cmlidXRvIHBvciBvbWlzc8OjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBhIEZBUSBudW1hIHBlc3F1aXNhIEZBUSBubyBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnRGVmaW5lIG8gYXRyaWJ1dG8gcG9yIG9taXNzw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIGEgRkFRIGVtIHVtYSBwZXNxdWlzYSBGQVEgbmEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdEZWZpbmUgbyBhdHJpYnV0byBwb3Igb21pc3PDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgbmEgZ2VzdMOjbyBGQVEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdEZWZpbmUgbyBhdHJpYnV0byBwb3Igb21pc3PDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgbm8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdEZWZpbmUgbyBhdHJpYnV0byBwb3Igb21pc3PDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgbmEgZ2VzdMOjbyBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJ0RlZmluZSBhIG9yZGVtIHBvciBvbWlzc8OjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIGdlc3TDo28gRkFRIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgYSBvcmRlbSBwb3Igb21pc3PDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBuYSBnZXN0w6NvIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgYSBvcmRlbSBwb3Igb21pc3PDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBuYSBnZXN0w6NvIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGEgb3JkZW0gcG9yIG9taXNzw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICdEZWZpbmUgYSBvcmRlbSBwb3Igb21pc3PDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnRGVmaW5lIGEgb3JkZW0gcG9yIG9taXNzw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIHDDumJsaWNhLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBuYSBnZXN0w6NvIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBubyBqb3JuYWwgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbmEgcGVzcXVpc2EgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPSAnRGVmaW5lIG9uZGUgbyBsaW5rIFwnSW5zZXJpciBGQVFcJyBzZXLDoSBleGliaWRvLiBOb3RhOiBPcyBSZWN1cnNvIGNvbXVtcyBkbyBhZ2VudGUgaW5jbHVlbSBBYnJpciB0aWNrZXQsIEZlY2hhciB0aWNrZXQsIHRpY2tldCBkZSBUZXh0byBMaXZyZSwgcHJvcHJpZXTDoXJpbyBkbyB0aWNrZXQsIHRpY2tldCBwZW5kZW50ZSwgUHJpb3JpZGFkZSBlIHJlc3BvbnPDoXZlbCBkbyB0aWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluacOnw6NvIGRlIGNhbXBvcyBkZSB0ZXh0byBsaXZyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnQXBhZ2FyIGVzdGEgRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRWRpdGFyIGVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdQZXJtaXRpciB2w6FyaW9zIGlkaW9tYXMgbm8gbcOzZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnUGVybWl0aXIgbWVjYW5pc21vIGRlIEF2YWxpYcOnw6NvIG5vIG3Ds2R1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0pvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSB2aXN0YSAiUGVxdWVuYSIgZG8gSm9ybmFsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSB2aXN0YSAgRkFRICJQZXF1ZW5vIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMaW1pdGUgZGUgRkFRcyBwb3IgcMOhZ2luYSBuYSB2aXN0YSAiUGVxdWVubyIgZG8gSm9ybmFsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnTGltaXRlIGRlIEZBUXMgcG9yIHDDoWdpbmEgbmEgdmlzdGEgIlBlcXVlbmEiIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgcGF0aCBzZXBhcmF0b3IuJ30gPSAnRGVsaW1pdGFkb3IgZGUgY2FtaW5obyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdSb3V0ZXIgZGUgcGVzcXVpc2EgRkFRIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnw4FyZWEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0Zyb250ZW5kIGRlIHJlZ2lzdG8gZG8gbcOzZHVsbyBwYXJhIGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwbyBwYXJhIGEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnSGlzdMOzcmljbyBkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgY2FtcG9zIGludGVybm9zIGRlIHVtIHRpY2tldCBiYXNlYWRvIGVtIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIG8gbm9tZSBkZSBjYWRhIGNhbXBvIG51bSB0aWNrZXQgYmFzZWFkbyBlbSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIG9uZGUgYSBidXNjYSByw6FwaWRhIGRldmUgc2VyIHZpc3VhbGl6YWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm9ybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIGlkaW9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2VrZXkgd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGUgbGFuZ3VhZ2UgZmlsZSAqX0ZBUS5wbS4nfSA9ICdJZGlvbWEgY2hhdmUgcXVlIGVzdMOhIGRlZmluaWRvIG5vIGFycXVpdm8gZGUgaWRpb21hICpfRkFRLnBtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdMaW5rIGRlIG91dHJvIGFydGlnbyBwYXJhIGVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSB2aXN1YWxpemFkbyBuYSBnZXN0w6NvIEZBUSBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gbmEgZ2VzdMOjbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gbmEgZ2VzdMOjbyBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHZpc3VhbGl6YWRvIG5vIGpvcm5hbCBGQVEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gbm8gcmVzdXRsYWRvIGRlIHVtYSBwZXNxdWlzYSBubyBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSB2aXN1YWxpemFkbyBubyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgdmlzdWFsaXphZG8gbyBubyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPSAnTcOzZHVsbyBwYXJhIGdlcmFyIGh0bWwgIk9wZW5TZWFyY2giZGUgcGVzcXVpc2EgZmFxIGN1cnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOb3ZvIGFydGlnbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTm92b3MgYXJ0aWdvcyBGQVEgcHJlY2lzYW0gZGUgYXByb3Zhw6fDo28gYW50ZXMgZGUgc2VyIHB1YmxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICdOw7ptZXJvIGRlIGFydGlnb3MgRkFRIHZpc3VhbGl6YWRvIG5hIGdlc3TDo28gRkFRIGRvIGludGVyZmFjZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSB2aXN1YWxpemFkbyBuYSBnZXN0w6NvIEZBUSBkbyBpbnRlcmZhY2UgcHVibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSB2aXN1YWxpemFkbyBwb3IgcMOhZ2luYSBkZSByZXN1bHRhZG9zIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSB2aXN1YWxpemFkbyBwb3IgcMOhZ2luYSBkZSByZXN1bHRhZG9zIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTsO6bWVybyBkZSBpdGVucyB2aXN1YWxpemFkb3MgbmFzIMO6bHRpbWFzIGFsdGVyYcOnw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOw7ptZXJvIGRlIGl0ZW5zIHZpc3VhbGl6YWRvcyBuYXMgw7psdGltYXMgY3JpYcOnw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOw7ptZXJvIGRlIGl0ZW5zIHZpc3VhbGl6YWRvcyBlbSB0b3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9ICdQYXLDom1ldHJvcyBkZSBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIEZBUSBzw6NvIHZpc3VhbGl6YWRvcykgZGEgdmlzdGEgcGVxdWVuYSBkbyBqb3JuYWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0gJ1BhcsOibWV0cm9zIGRlIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgRkFRIHPDo28gdmlzdWFsaXphZG9zKSBkYSB2aXN0YSBwZXF1ZW5hIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdJbXByaW1pciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRmlsYSBwYXJhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdDb25kacOnw6NvIHBhcmEgYSBhdmFsaWHDp8Ojby4gQ2hhdmUgZW0gcGVyY2VudGFnZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdQZXNxdWlzYXIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJ01vc3RyYXIgYm90w6NvICJJbnNlcmlyIExpbmsgRkFRIiBuYSB2aXN0YSBwZXF1ZW5hIGRlIGFydGlnb3MgRkFRIHDDumJsaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnTW9zdHJhIGJvdMOjbyAiSW5zZXJpciB0ZXh0byBlIExpbmsgRkFRIiBuYSB2aXN0YSBwZXF1ZW5hIGRlIGFydGlnb3MgRkFRIHDDumJsaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9ICdNb3N0cmFyIGJvdMOjbyAiSW5zZXJpciBGQVEgVGV4dG8iIG5hIHZpc3RhIHBhcmEgbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ01vc3RyYXIgYXJ0aWdvIEZBUSBjb20gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnTW9zdHJhciBjYW1pbmhvIEZBUSBzaW0gLyBuw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IFdZU0lXWUcgZWRpdG9yIGluIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmFyIGVkaXRvciBXWVNJV1lHIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdNb3N0cmFyIHN1YmNhdGVnb3JpYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgYXMgw7psdGltYXMgYWx0ZXJhw6fDtWVzIGRlIGl0ZW5zIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBvcyDDumx0aW1vcyBpdGVucyBjcmlhZG9zIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBhcyAxMCBtYWlzIHZpc3VhbGl6YWRhcyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgdm90YcOnw6NvIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGxpZ2FyIGEgRkFRIGNvbSBvdXRybyBvYmpldG8gbmEgdmlzdGEgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGV4Y2x1aXIgdW0gRkFRIG5hIHZpc3RhIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhY2VkZXIgYW8gaGlzdMOzcmljbyBkYSBGQVEgbmEgdmlzdGEgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW1hIEZBUSBuYSB2aXN0YSBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSB2b2x0YXIgdW1hIEZBUSBuYSB2aXN0YSBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgaW1wcmltaXIgdW1hIEZBUSBuYSB2aXN0YSBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPSAnTyBpZGVudGlmaWNhZG9yIHBhcmEgRkFRLCBleGVtcGxvIEZBUSAjIEtCICMgIyBNeUZBUS4gTyB2YWxvciBwb3Igb21pc3PDo28gw6kgRkFRICMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9ICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnRkFRXCcgY29tIGxpZ2HDp8OjbyBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdGQVFcJyBjb20gbGlnYcOnw6NvIFwnUGFpIGUgZmlsaG9cJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ1RpY2tldFwnIGNvbSBsaWdhw6fDo28gXCdOb3JtYWxcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnVGlja2V0XCcgY29tIGxpZ2HDp8OjbyBcJ1BhaSBlIGZpbGhvXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0NvcnBvIGRvIHRpY2tldCBwYXJhIGFwcm92YcOnw6NvIGRlIHVtIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdPIGFzc3VudG8gZG8gdGlja2V0IHBhcmEgYXByb3Zhw6fDo28gZGUgdW0gYXJ0aWdvIEZBUS4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIEV4cGxvcmVyIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlOiAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAxMSBBbGV4IFNhdnZpbiA8c2F2dmluIGF0IG1haWwucnU+CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cnVfRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBQUFGQVEKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn0YHQu9GD0LbQtdCx0L3QvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ9C+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn0L7RgtC60YDRi9GC0L7QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J/QvtGB0LvQtdC00L3QuNC1INC+0LHQvdC+0LLQu9C10L3QuNGPINGB0YLQsNGC0LXQuSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J3QvtCy0YvQtSDRgdGC0LDRgtGM0LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAg0YHRgtCw0YLQtdC5IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9Cf0L7QtNGA0LDQt9C00LXQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9Ce0YbQtdC90LrQsCDQvtGC0YHRg9GC0YHRgtCy0YPQtdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICfQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QtSAo0LLRgdC10LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICfQvtGC0LrRgNGL0YLQvtC1ICjQutC70LjQtdC90YLQsNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn0YHQu9GD0LbQtdCx0L3QvtC1ICjQsNCz0LXQvdGC0LDQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAn0J3QsNGH0LDQu9C+INC00L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBtb250aCd9ID0gJ9Cd0LDRh9Cw0LvQsCDQvNC10YHRj9GG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgeWVhcid9ID0gJ9Cd0LDRh9Cw0LvQviDQs9C+0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAn0JrQvtC90LXRhiDQtNC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG1vbnRoJ30gPSAn0JrQvtC90LXRhiDQvNC10YHRj9GG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICfQmtC+0L3QtdGGINCz0L7QtNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ9Ch0L/QsNGB0LjQsdC+INC30LAg0LLQsNGI0YMg0L7RhtC10L3QutGDISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ9CS0Ysg0YPQttC1INC/0L7RgdGC0LDQstC40LvQuCDQvtGG0LXQvdC60YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAn0J/QtdGH0LDRgtGMINGB0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAn0KHRgtCw0YLRjNC4IEZBUSAoVG9wIDEwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEgKNC90L7QstGL0LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfQodGC0LDRgtGM0LggRkFRICjQvtCx0L3QvtCy0LvRkdC90L3Ri9C1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8gRkFRINC40LfQvNC10L3QtdC90LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8gRkFRINC00L7QsdCw0LLQu9C10L3QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn0KMg0LrQsNGC0LXQs9C+0YDQuNC4INC00L7Qu9C20L3QviDQsdGL0YLRjCDQvdCw0LfQstCw0L3QuNC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAn0KLQsNC60LDRjyDQutCw0YLQtdCz0L7RgNC40Y8g0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAn0K/Qt9GL0Log0LTQu9GPIEZBUSDQtNC+0LHQsNCy0LvQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfQr9C30YvQuiDQtNC70Y8gRkFRINC40LfQvNC10L3RkdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICfQndC10L7QsdGF0L7QtNC40LzQviDQt9Cw0LTQsNGC0Ywg0L3QsNC30LLQsNC90LjQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfQotCw0LrQvtC5INGP0LfRi9C6INGD0LbQtSDRgdGD0YnQtdGB0YLQstGD0LXRgiEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGB0YLQsNGC0YzRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfQndGD0LbQvdC+INCy0YvQsdGA0LDRgtGMINC60LDRgtC10LPQvtGA0LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfQntC00L7QsdGA0LXQvdC+JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60LDRgtC10LPQvtGA0LjRj9C80LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ9Cj0LTQsNC70LjRgtGMINC60LDRgtC10LPQvtGA0LjRjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfQo9C00LDQu9C40YLRjCDQutCw0YLQtdCz0L7RgNC40Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ9CR0YPQtNC10YIg0L/QvtC60LDQt9Cw0L3QviDQsiBFeHBsb3JlciDQutCw0Log0LrQvtC80LzQtdC90YLQsNGA0LjQuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfQo9C60LDQttC40YLQtSDRhdC+0YLRjyDQsdGLINC+0LTQvdGDINCz0YDRg9C/0L/Rgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CT0YDRg9C/0L/RiyDQsNCz0LXQvdGC0L7Qsiwg0LjQvNC10Y7RidC40YUg0LTQvtGB0YLRg9C/INC6INGB0YLQsNGC0YzRj9C8INGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7QuSDQutCw0YLQtdCz0L7RgNC40LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0gJ9Ct0YLRgyDQutCw0YLQtdCz0L7RgNC40Y4g0YPQtNCw0LvRj9GC0Ywg0L3QtdC70YzQt9GPISDQkiDQvdC10Lkg0YHQvtC00LXRgNC20LjRgtGB0Y8g0LrQsNC6INC80LjQvdC40LzRg9C8INC+0LTQvdCwINGB0YLQsNGC0YzRjyBGQVEg0Lgv0LjQu9C4INC+0L3QsCDRj9Cy0LvRj9C10YLRgdGPINGA0L7QtNC40YLQtdC70YzRgdC60L7QuSDQtNC70Y8g0LTRgNGD0LPQuNGFINC60LDRgtC10LPQvtGA0LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ9CSINGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuCDQuNC80LXRjtGC0YHRjyDRgdC70LXQtNGD0Y7RidC40LUg0YHRgtCw0YLRjNC4IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICfQrdGC0LAg0LrQsNGC0LXQs9C+0YDQuNGPINGP0LLQu9GP0LXRgtGB0Y8g0YDQvtC00LjRgtC10LvRjNGB0LrQvtC5INC00LvRjyDRgdC70LXQtNGD0Y7RidC40YUg0L/QvtC00YDQsNC30LTQtdC70L7Qsic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICfQn9C+0LTRgtCy0LXRgNC00LjRgtC1INGD0LTQsNC70LXQvdC40LUg0Y3RgtC+0Lkg0YHRgtCw0YLRjNC4IEZBUSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEgRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn0JHRi9GB0YLRgNGL0Lkg0L/QvtC40YHQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfQoNCw0YHRiNC40YDQtdC90L3Ri9C5INC/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ9Cf0L7QtNGA0LDQt9C00LXQu9GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfQn9C+0LTRgNCw0LfQtNC10LvRiyDQvdC1INC90LDQudC00LXQvdGLLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICfQlNCw0L3QvdGL0YUg0LbRg9GA0L3QsNC70LAgRkFRINC90LXRgi4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0Y/Qt9GL0LrQsNC80LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0gJ9CY0YHQv9C+0LvRjNC30YPQudGC0LUg0Y3RgtGDINGE0YPQvdC60YbQuNGOINC/0YDQuCDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCDRgNCw0LHQvtGC0Ysg0YEg0L3QtdGB0LrQvtC70YzQutC40LzQuCDRj9C30YvQutCw0LzQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn0JTQvtCx0LDQstC40YLRjCDRj9C30YvQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICfQo9C00LDQu9C40YLRjCDRj9C30YvQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGP0LfRi9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICfQmNC30LzQtdC90LjRgtGMINGP0LfRi9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfQn9C+0LTRgtCy0LXRgNC00LjRgtC1INGD0LTQsNC70LXQvdC40LUg0Y3RgtC+0LPQviDRj9C30YvQutCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPSAn0K3RgtC+0YIg0Y/Qt9GL0Log0YPQtNCw0LvRj9GC0Ywg0L3QtdC70YzQt9GPLiDQndCwINC90ZHQvCDQvdCw0L/QuNGB0LDQvdCwINC60LDQuiDQvNC40L3QuNC80YPQvCDQvtC00L3QsCDRgdGC0LDRgtGM0Y8gRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ9Ct0YLQvtGCINGP0LfRi9C6INC40YHQv9C+0LvRjNC30L7QstCw0L0g0LIg0YHQu9C10LTRg9GO0YnQuNGFINGB0YLQsNGC0YzRj9GFIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ9Cd0LDRgdGC0YDQvtC50LrQsCDQutC+0L3RgtC10LrRgdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5INC90LAg0YHRgtGA0LDQvdC40YbRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICfQlNCw0L3QvdGL0LUgRkFRINC90LUg0L3QsNC50LTQtdC90YsuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9CT0L7Qu9C+0YHQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ9Cf0L7QuNGB0Log0LIgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfQntGG0LXQvdC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICfQntGG0LXQvdC60LAgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ9C40LcgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfQntGG0LXQvdC+0Log0L3QtSDQvdCw0LnQtNC10L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ9Ce0YbQtdC90L7QuiDQvdC1INC90LDQudC00LXQvdC+ISDQntGG0LXQvdC40YLQtSDRjdGC0YMg0YHRgtCw0YLRjNGOIEZBUSDQv9C10YDQstGL0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICfQodC60LDRh9Cw0YLRjCDQstC70L7QttC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0gJ9Cd0LDRgdC60L7Qu9GM0LrQviDQsdGL0LvQsCDQv9C+0LvQtdC30L3QsCDRjdGC0LAg0YHRgtCw0YLRjNGPPyDQn9C+0LbQsNC70YPQudGB0YLQsCwg0L7RhtC10L3QuNGC0LUg0LXRkSwg0YfRgtC+0LHRiyDQvNGLINC80L7Qs9C70Lgg0YPQu9GD0YfRiNC40YLRjCDQsdCw0LfRgyBGQVEuINCh0L/QsNGB0LjQsdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ9Cx0LXRgdC/0L7Qu9C10LfQvdCw0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn0L7Rh9C10L3RjCDQv9C+0LvQtdC30L3QsNGPJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn0JLRgdGC0LDQstC40YLRjCDRgtC10LrRgdGCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICfQktGB0YLQsNCy0LjRgtGMINGB0YHRi9C70LrRgyDQvdCwIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAn0JLRgdGC0LDQstC40YLRjCDRgtC10LrRgdGCIEZBUSDQuCDRgdGB0YvQu9C60YMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICfQodGC0LDRgtGM0LggRkFRINC90LUg0L3QsNC50LTQtdC90YsuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAn0J/QvtC70L3QvtGC0LXQutGB0YLQvtCy0YvQuSDQv9C+0LjRgdC6INCyINGB0YLQsNGC0YzRj9GFIEZBUSAo0L3QsNC/0YDQuNC80LXRgCwgItCw0LLRgtC+0Lwq0LrQuCIg0LjQu9C4ICLQnNC+0YHQuioiKSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlscyd9ID0gJ9Cf0L7QtNGA0L7QsdC90LXQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ9Cf0L7QuNGB0Log0YHRgtCw0YLQtdC5INC/0L4g0LrQu9GO0YfQtdCy0L7QvNGDINGB0LvQvtCy0YMnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUUV4cGxvcmVyCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRUHJpbnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2gKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ9Ce0LHRidC10LTQvtGB0YLRg9C/0L3QvtC1JzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPSAnRWluIEZpbHRlciB6dXIgYXV0b21hdGlzY2hlbiBHZW5lcmllcnVuZyB2b24gRkFRLUxpbmtzLCB3ZW5uIGVpbiBIaW53ZWlzIGF1ZiBlaW5lbiBGQVEtQXJ0aWtlbCBpZGVudGlmaXppZXJ0IHdpcmQuIERhcyBFbGVtZW50IEltYWdlIGVybGF1YnQgendlaSBFaW5nYWJlZm9ybWVuOiBFcnN0ZW5zIGRlciBOYW1lIGVpbmVzIEljb25zICh6LiBCLiBmYXEucG5nKS4gSW4gZGllc2VtIEZhbGwgd2lyZCBhdWYgZGFzIEdyYWZpay1WZXJ6ZWljaG5pcyBkZXMgT1RSUyB6dWdlZ3JpZmZlbi4gQWxzIHp3ZWl0ZSBN0YZnbGljaGtlaXQga2FubiBtYW4gYWJlciBhdWNoIGRlbiBkaXJla3RlbiBMaW5rIHp1ciBHcmFmaWsgYW5nZWJlbiAoei4gQi4gaHR0cDovL290cnMub3JnL2ZhcS5wbmcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUy1GYXJiZSBm0YxyIGRhcyBCZXdlcnR1bmdzLUVyZ2VibmlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0LrQsNGC0LXQs9C+0YDQuNGP0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ9Cd0LDQt9Cy0LDQvdC40LUg0LrQsNGC0LXQs9C+0YDQuNC4INC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAn0K/Qt9GL0Log0YHRgtCw0YLQtdC5IEZBUSDQv9C+LdGD0LzQvtC70YfQsNC90LjRjiDQsiDQvtC00L3QvtGP0LfRi9GH0L3QvtC8INGA0LXQttC40LzQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9Cf0YDQuNC+0YDQuNGC0LXRgiDQt9Cw0Y/QstC+0Log0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLQtdC5IEZBUSDQv9C+LdGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ9Ch0YLQsNGC0YPRgSDQt9Cw0L/QuNGB0LggRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn0KHRgtCw0YLRg9GBINC30LDRj9Cy0L7QuiDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtC10LkgRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0gJ9CX0L3QsNGH0LXQvdC40LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0L/QsNGA0LDQvNC10YLRgNCwIEFjdGlvbiDQtNC70Y8g0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LPQviDRhNGA0L7QvdGC0LXQvdC00LAuINCf0LDRgNCw0LzQtdGC0YAgQWN0aW9uINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQsiDRgdC60YDQuNC/0YLQsNGFINGB0LjRgdGC0LXQvNGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCBGQVEg0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0L/QvtC40YHQutCwINCyIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAgRkFRINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwINGB0L7RgNGC0LjRgNC+0LLQutC4INGA0LXQt9GD0LvRjNGC0LDRgtCwINC/0L7QuNGB0LrQsCDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAg0YHQvtGA0YLQuNGA0L7QstC60Lgg0LIgRkFRIEV4cGxvcmVyZSDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwINGB0L7RgNGC0LjRgNC+0LLQutC4INCyIEZBUSBFeHBsb3JlcmUg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCDRgdC+0YDRgtC40YDQvtCy0LrQuCDQsiBGQVEgRXhwbG9yZXJlINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8ICDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFIEZBUSBFeHBsb3JlciDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuIFVwOiDQv9C+0LfQtNC90LXQtSDQvdCw0LLQtdGA0YXRgy4gRG93bjog0L3QvtCy0L7QtSDQvdCw0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFIEZBUSBFeHBsb3JlciDQuNC90YLQtdGA0YTQtdC50YHQsCDQutC70LjQtdC90YLQsC4gVXA6INC/0L7Qt9C00L3QtdC1INC90LDQstC10YDRhdGDLiBEb3duOiDQvdC+0LLQvtC1INC90LDQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFIEZBUSBFeHBsb3JlciDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4gVXA6INC/0L7Qt9C00L3QtdC1INC90LDQstC10YDRhdGDLiBEb3duOiDQvdC+0LLQvtC1INC90LDQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICfQo9C00LDQu9C40YLRjCDRjdGC0L7RgiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ9CY0LfQvNC10L3QuNGC0Ywg0Y3RgtC+0YIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICfQoNCw0LfRgNC10YjQuNGC0Ywg0LzQvdC+0LPQvtGP0LfRi9GH0L3QvtGB0YLRjCDQsiDQvNC+0LTRg9C70LUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ9Cg0LDQt9GA0LXRiNC40YLRjCDRhNGD0L3QutGG0LjRjiDQvtGG0LXQvdC60Lgg0LIg0LzQvtC00YPQu9C1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICfQltGD0YDQvdCw0LsgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHBhdGggc2VwYXJhdG9yLid9ID0gJ9Cg0LDQt9C00LXQu9C40YLQtdC70Ywg0L/Rg9GC0LggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQk9GA0YPQv9C/0LAg0LTQu9GPINC+0LTQvtCx0YDQtdC90LjRjyDRgdGC0LDRgtC10LkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAn0JjRgdGC0L7RgNC40Y8g0Y3RgtC+0LPQviBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAn0JjQvdGC0LXRgNGE0LXQudGB0YssINCyINC60L7RgtC+0YDRi9GFINC/0L7QutCw0LfRi9Cy0LDQtdGC0YHRjyDQsdGL0YHRgtGA0YvQuSDQv9C+0LjRgdC6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn0JbRg9GA0L3QsNC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDRj9C30YvQutCw0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJ9Ca0LvRjtGHINGP0LfRi9C60LAsINGD0LrQsNC30LDQvdC90YvQuSDQsiDRj9C30YvQutC+0LLQvtC8INGE0LDQudC70LUgKl9GQVEucG0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ9Cf0YDQuNCy0Y/Qt9Cw0YLRjCDQtNGA0YPQs9C+0Lkg0L7QsdGK0LXQutGCINC6INGN0YLQvtC80YMg0Y3Qu9C10LzQtdC90YLRgyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80L7QtSDQsiBGQVEgRXhwbG9yZXIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzQvtC1INCyIEZBUSBFeHBsb3JlciDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNC+0LUg0LIgRkFRIEV4cGxvcmVyINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDQttGD0YDQvdCw0LvQtSBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LUg0L/QvtC40YHQutCwINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINCyINGA0LXQt9GD0LvRjNGC0LDRgtC1INC/0L7QuNGB0LrQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAn0J3QvtCy0LDRjyDRgdGC0LDRgtGM0Y8g0LIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ9Cd0L7QstCw0Y8g0YHRgtCw0YLRjNGPIEZBUSDQv9C10YDQtdC0INC/0YPQsdC70LjQutCw0YbQuNC10Lkg0YLRgNC10LHRg9C10YIg0L7QtNC+0LHRgNC10L3QuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0LIgRkFRIEV4cGxvcmVyINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINCyIEZBUSBFeHBsb3JlciDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINC90LAg0LrQsNC20LTQvtC5INGB0YLRgNCw0L3QuNGG0LUg0YDQtdC30YPQu9GM0YLQsNGC0LAg0L/QvtC40YHQutCwINCyICDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQvdCwINC60LDQttC00L7QuSDRgdGC0YDQsNC90LjRhtC1INGA0LXQt9GD0LvRjNGC0LDRgtCwINC/0L7QuNGB0LrQsCDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/QvtC30LjRhtC40Lkg0LIg0L/QvtGB0LvQtdC00L3QuNGFINC40LfQvNC10L3QtdC90LjRj9GFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQv9C+0LfQuNGG0LjQuSDQsiDQvdC+0LLRi9GFINGB0YLQsNGC0YzRj9GFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQv9C+0LfQuNGG0LjQuSDQsiDRhNGD0L3QutGG0LjQuCBUb3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICfQn9C10YfQsNGC0Ywg0Y3RgtC+0LPQviBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn0J7Rh9C10YDQtdC00Ywg0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ9Cf0L7QuNGB0Log0LIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDRgdGC0LDRgtGM0Y4gRkFRINCyIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC/0YPRgtGMIEZBUSDQtNCwL9C90LXRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0YwgV1lTSVdZRyDRgNC10LTQsNC60YLQvtGAINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINGB0L7QtNC10YDQttC40LzQvtC1INC/0L7QtNGA0LDQt9C00LXQu9C+0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC/0L7RgdC70LXQtNC90LjQtSDQuNC30LzQtdC90LXQvdC40Y8g0LIg0YPQutCw0LfQsNC90YvRhSDQuNC90YLQtdGA0YTQtdC50YHQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0L3QvtCy0YvQtSDQv9GD0L3QutGC0Ysg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCBUb3AgMTAg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDQvtGG0LXQvdC60YMg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPSAn0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAgRkFRLCDQvdCw0L/RgNC40LzQtdGALCBGQVEjLCBLQiMsIE15RkFRIy4g0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4gLSBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAn0KLQtdC70L4g0LfQsNGP0LLQutC4INC90LAg0L7QtNC+0LHRgNC10L3QuNC1INGB0YLQsNGC0YzQuCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICfQotC10LzQsCDQt9Cw0Y/QstC60Lgg0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLRjNC4IEZBUS4nOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIEV4cGxvcmVyIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlOiAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBleHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IFRleHQgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnVrX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfQntGB0YLQsNC90L3RjyDQt9C80ZbQvdC10L3QsCDRgdGC0LDRgtGC0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J7RgdGC0LDQvdC90Y8g0YHRgtCy0L7RgNC10L3QsCDRgdGC0LDRgtGC0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ9Ci0L7QvyAxMCDRgdGC0LDRgtGC0LXQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9Cf0ZbQtNC60LDRgtC10LPQvtGA0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9Cd0LXQvNCw0ZQg0L7QsdGA0LDQvdC+0Zcg0LrQsNGC0LXQs9C+0YDRltGXISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IGRheSd9ID0gJ9Cf0L7Rh9Cw0YLQvtC6INC00L7QsdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAn0J/QvtGH0LDRgtC+0Log0LzRltGB0Y/RhtGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICfQn9C+0YfQsNGC0L7QuiDRgNC+0LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgZGF5J30gPSAn0JrRltC90LXRhtGMINC00L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICfQmtGW0L3QtdGG0Ywg0LzRltGB0Y/RhtGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCB5ZWFyJ30gPSAn0JrRltC90LXRhtGMINGA0L7QutGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ9CU0Y/QutGD0ZTQvNC+LCDQt9CwINGC0LUsINGJ0L4g0L/RgNC+0LPQvtC70L7RgdGD0LLQsNC70LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn0JLQuCDQstC20LUg0LPQvtC70L7RgdGD0LLQsNC70LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ9Cj0YLQvtGH0L3QuNGC0Ywg0YHQvNGL0YHQuyDQuCDQuNC30LzQtdC90LjRgtGMKEFwcHJvdmFsKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn0JHRg9C00LUg0L/QvtC60LDQt9Cw0L3Qviwg0Y/QuiDQutC+0LzQtdC90YLQsNGAINGDINCf0YDQvtCy0ZbQtNC90LjQutGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICfQkdCw0LfQsCDQt9C90LDQvdGMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVByaW50CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9CT0L7Qu9C+0YHRltCyJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nICUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFFeHBsb3JlcgoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoCgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFab29tCgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBmcmVlIHRleHQgb3B0aW9ucyBzaG93biBpbiB0aGUgdGlja2V0IG1lc3NhZ2Ugc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuIE5PVEUuIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlc2UgZmllbGRzIGFsc28gaW4gdGhlIHRpY2tldCB6b29tIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHlvdSBoYXZlIHRvIGVuYWJsZSB0aGVtIGluIEN1c3RvbWVyVGlja2V0Wm9vbSMjI0F0dHJpYnV0ZXNWaWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB5b3VyIG93biBsb2cgdGV4dCBmb3IgUEdQLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gdGV4dCBmb3IgdGhlIHBhZ2Ugc2hvd24gdG8gY3VzdG9tZXJzIHRoYXQgaGF2ZSBubyB0aWNrZXRzIHlldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuIE5vdGU6IEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIGluY2x1ZGVzIEFnZW50VGlja2V0Tm90ZSwgQWdlbnRUaWNrZXRDbG9zZSwgQWdlbnRUaWNrZXRGcmVlVGV4dCwgQWdlbnRUaWNrZXRPd25lciwgQWdlbnRUaWNrZXRQZW5kaW5nLCBBZ2VudFRpY2tldFByaW9yaXR5IGFuZCBBZ2VudFRpY2tldFJlc3BvbnNpYmxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEtQXJlYSd9ID0gJ9CR0LDQt9CwINC30L3QsNC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lnbm9yZSBhcnRpY2xlIHdpdGggc3lzdGVtIHNlbmRlciB0eXBlIGZvciBuZXcgYXJ0aWNsZSBmZWF0dXJlIChlLiBnLiBhdXRvIHJlc3BvbnNlcyBvciBlbWFpbCBub3RpZmljYXRpb25zKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWlja3NlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZWtleSB3aGljaCBpcyBkZWZpbmVkIGluIHRoZSBsYW5ndWFnZSBmaWxlICpfRkFRLnBtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IGZhcSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ9C90L7QstCwINGB0YLQsNGC0YLRjyDQkdCXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhpcyB0byB5ZXMgaWYgeW91IHRydXN0IGluIGFsbCB5b3VyIHB1YmxpYyBhbmQgcHJpdmF0ZSBwZ3Aga2V5cywgZXZlbiBpZiB0aGV5IGFyZSBub3QgY2VydGlmaWVkIHdpdGggYSB0cnVzdGVkIHNpZ25hdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBXWVNJV1lHIGVkaXRvciBpbiBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aW1lIHVzZSBjb21wbGV0ZSBkZXNjcmlwdGlvbiAoZGF5cywgaG91cnMsIG1pbnV0ZXMpLCBpZiBzZXQgdG8gIlllcyI7IG9yIGp1c3QgZmlyc3QgbGV0dGVyIChkLCBoLCBtKSwgaWYgc2V0IHRvICJObyIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZnJlZSB0ZXh0IG9wdGlvbnMgc2hvd24gaW4gdGhlIHRpY2tldCBtZXNzYWdlIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLiBOT1RFLiBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZXNlIGZpZWxkcyBhbHNvIGluIHRoZSB0aWNrZXQgem9vbSBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB5b3UgaGF2ZSB0byBlbmFibGUgdGhlbSBpbiBDdXN0b21lclRpY2tldFpvb20jIyNBdHRyaWJ1dGVzVmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGZyZWUgdGltZSBvcHRpb25zIHNob3duIGluIHRoZSB0aWNrZXQgbWVzc2FnZSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4gTk9URS4gSWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGVzZSBmaWVsZHMgYWxzbyBpbiB0aGUgdGlja2V0IHpvb20gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgeW91IGhhdmUgdG8gZW5hYmxlIHRoZW0gaW4gQ3VzdG9tZXJUaWNrZXRab29tIyMjQXR0cmlidXRlc1ZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwoKICAgICMKICAgICMgT0JTT0xFVEUgRU5UUklFUyBGT1IgUkVGRVJFTkNFLCBETyBOT1QgVFJBTlNMQVRFIQogICAgIwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBjYXRlZ29yeS4nfSA9ICfQktC40LTRltC70ZbRgtGMINCz0YDRg9C/0LgsINGP0LrQuNGWINC80L7QttGD0YLRjCDQvtGC0YDQuNC80LDRgtC4INC00L7RgdGC0YPQvyDQtNC+INC60LDRgtC10LPQvtGA0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yaWVzJ30gPSAn0JrQsNGC0LXQs9C+0YDRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbFNlYXJjaCd9ID0gJ9CU0LXRgtCw0LvRltC30L7QstCw0L3QuNC5INC/0L7RiNGD0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfQn9GA0L7QstGW0LTQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5J30gPSAn0JrQsNGC0LXQs9C+0YDRltGXINCR0JcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE5ld3MgKFRvcCAxMCknfSA9ICfQndC+0LLQuNC90Lgg0JHQlyjQotCe0J8gMTApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOZXdzIChuZXcgY3JlYXRlZCknfSA9ICfQndC+0LLQuNC90Lgg0JHQlyjQvdC+0LLRliDRgdGC0LDRgtGC0ZYpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOZXdzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ9Cd0L7QstC40L3QuCDQkdCXKNC90LXQtNCw0LLQvdC+INC30LzRltC90LXQvdGWKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9ICfQndC10LzQsNGUINC00L7RgdGC0YPQv9C90LjRhSDQutCw0YLQtdCz0L7RgNGW0LkuINCp0L7QsSDRgdGC0LLQvtGA0LjRgtC4INGB0YLQsNGC0YLRjiDQstCw0Lwg0L3QtdC+0LHRhdGW0LTQvdC+INC+0LTQtdGA0LbQsNGC0Lgg0LTQvtGB0YLRg9C/LCDQv9GA0LjQvdCw0LnQvNC90ZYg0LTQviDQvtC00L3RltC5INC60LDRgtC10LPQvtGA0ZbRly4g0JHRg9C00Ywg0LvQsNGB0LrQsCwg0L/QtdGA0LXQstGW0YDRgtC1INCy0LDRiNGDINCz0YDRg9C/0YMv0LrQsNGC0LXQs9C+0YDRltGOINC00L7RgdGC0YPQv9GDINC00LvRjyAt0LrQsNGC0LXQs9C+0YDRltGXINC80LXQvdGOLSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2tTZWFyY2gnfSA9ICfQqNCy0LjQtNC60LjQuSDQv9C+0YjRg9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YkNhdGVnb3JpZXMnfSA9ICfQn9GW0LTQutCw0YLQtdCz0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsn0JfQtNGA0LDRgdGC0YPQudGC0LUnfSA9ICfQktGW0YLQsNGU0LzQvic7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBRkFRCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ+WGhemDqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICflhazlvIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICflpJbpg6gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfmnIDov5Hkv67mlLnnmoTmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn5pyA5paw5Yib5bu655qE5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICfmnIDluLjnlKjnmoTmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICflrZDnm67lvZXkuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfmsqHmnInpgInmi6nor4TliIYhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgZGF5J30gPSAn5byA5aeL5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IG1vbnRoJ30gPSAn5byA5aeL5pyI5Lu9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IHllYXInfSA9ICflvIDlp4vlubTku70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIGRheSd9ID0gJ+e7k+adn+aXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgbW9udGgnfSA9ICflvIDlp4vmnIjku70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIHllYXInfSA9ICfnu5PmnZ/lubTku70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn5oSf6LCi5oKo55qE6K+E5YiGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn5oKo5bey57uP6K+E5YiGISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdGQVEg5pu05pawJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRIOabtOaWsCjmlrDliJvlu7opJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdGQVEg5pu05pawKOacgOi/keabtOaUuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnRkFRIOebruW9leW3suabtOaWsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUSDnm67lvZXlt7Llop7liqAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ+ebruW9leW6lOivpeimgeacieS4gOS4quWQjeensCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFRIOivreiogOW3sue7j+WinuWKoCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnRkFRIOivreiogOW3sue7j+abtOaWsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAn5b+F6aG76KaB5pyJ5LiA5Liq6K+t6KiA5ZCN56ewISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ+ivpeivreiogOW3sue7j+WtmOWcqCEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICflop7liqAgRkFRIOaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ+ebruW9leaYr+W/hemhu+eahC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICforqTlj6/luqYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIOebruW9leeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn5Yig6Zmk55uu5b2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ+WinuWKoOebruW9lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAn57yW6L6R55uu5b2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfms6jph4rlsIbmtY/op4jml7bmmL7npLouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ+ecn+eahOimgeWIoOmZpOivpSBGQVEg5paH56ug5ZCXPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUSDmtY/op4jlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAn5a2Q55uu5b2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ+ayoeacieaJvuWIsOWtkOebruW9lS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUSDor63oqIDnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VnZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UnfSA9ICfliKDpmaTor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAn5aKe5Yqg6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICfnvJbovpHor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICfmsqHmnInmib7liLAgRkFRIOaVsOaNri4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUHJpbnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1JbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAn6K+E5YiGJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoUmVzdWx0UHJpbnQKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUSDor6bnu4bkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAn6K+E5YiGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyAlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAn6LaF6L+H5LqU5pifJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ+ayoeacieaJvuWIsOivhOWIhiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ+ayoeacieaJvuWIsOivhOWIhiEg6L+Z5bCG5piv6K+lIEZBUSDmlofnq6DnmoTnrKzkuIDkuKror4TliIYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAn5rKh5pyJ5biu5YqpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ+W+iOacieW4ruWKqSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24KCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2hSZXN1bHRTaG9ydAoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlscyd9ID0gJ+ivpue7hic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRRXhwbG9yZXIKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRQcmludAoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRWm9vbQoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgZnJlZSB0ZXh0IG9wdGlvbnMgc2hvd24gaW4gdGhlIHRpY2tldCBtZXNzYWdlIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLiBOT1RFLiBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZXNlIGZpZWxkcyBhbHNvIGluIHRoZSB0aWNrZXQgem9vbSBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB5b3UgaGF2ZSB0byBlbmFibGUgdGhlbSBpbiBDdXN0b21lclRpY2tldFpvb20jIyNBdHRyaWJ1dGVzVmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgeW91ciBvd24gbG9nIHRleHQgZm9yIFBHUC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIHRleHQgZm9yIHRoZSBwYWdlIHNob3duIHRvIGN1c3RvbWVycyB0aGF0IGhhdmUgbm8gdGlja2V0cyB5ZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+S7peWNgeWIhuWItuaYvuekuuivhOWIhue7k+aenC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ+m7mOiupOeahOebruW9leWQjS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFRIOaWh+eroOaJueWHhuivt+axgueahCBUaWNrZXQg55qE5LyY5YWI57qnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAn6buY6K6k55qEIEZBUSDnu5/orqHmnaHnm64uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGQVEg5paH56ug5om55YeG6K+35rGC55qEIFRpY2tldCDnmoTpu5jorqTnirbmgIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4gTm90ZTogQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gaW5jbHVkZXMgQWdlbnRUaWNrZXROb3RlLCBBZ2VudFRpY2tldENsb3NlLCBBZ2VudFRpY2tldEZyZWVUZXh0LCBBZ2VudFRpY2tldE93bmVyLCBBZ2VudFRpY2tldFBlbmRpbmcsIEFnZW50VGlja2V0UHJpb3JpdHkgYW5kIEFnZW50VGlja2V0UmVzcG9uc2libGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ+WumuS5iSBGQVEg6aG555uu55qE5LiN5Y+X6ZmQ5paH5a2X5a2X5q61Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICfliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ+e8lui+kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnRkFRIOaXpeW/lyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBwYXRoIHNlcGFyYXRvci4nfSA9ICdGQVEg6Lev5b6E5YiG6ZqU56ymLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUS1BcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfmibnlh4YgRkFRIOaWh+eroOivt+axgueahOe+pOe7hC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ+WOhuWPsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZ25vcmUgYXJ0aWNsZSB3aXRoIHN5c3RlbSBzZW5kZXIgdHlwZSBmb3IgbmV3IGFydGljbGUgZmVhdHVyZSAoZS4gZy4gYXV0byByZXNwb25zZXMgb3IgZW1haWwgbm90aWZpY2F0aW9ucykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2tzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ+WcqOS7i+mdoueahOmCo+mHjOaYvuekuuW/q+mAn+aQnOe0oi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdla2V5IHdoaWNoIGlzIGRlZmluZWQgaW4gdGhlIGxhbmd1YWdlIGZpbGUgKl9GQVEucG0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ+mTvuaOpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgZmFxIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAn5re75Yqg5paw5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ+aWsOeahCBGQVEg5paH56ug5Zyo5Y+R5biD5YmN6ZyA6KaB5om55YeGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfmmL7npLrmnIDov5Hmm7TmlLnpobnnm67nmoTmlbDph48uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAn5pi+56S65pyA5paw5Yib5bu66aG555uu55qE5pWw6YePLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ+aYvuekuueCueWHu+mHj+WJjeWNgeS9jemhueebrueahOaVsOmHjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ+aJk+WNsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfmibnlh4YgRkFRIOaWh+eroOivt+axgueahOmYn+WIly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICflpb3or4TnjocsIOmUruWAvOW/hemhu+WcqOeZvuWIhuavlOS7peWGhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhpcyB0byB5ZXMgaWYgeW91IHRydXN0IGluIGFsbCB5b3VyIHB1YmxpYyBhbmQgcHJpdmF0ZSBwZ3Aga2V5cywgZXZlbiBpZiB0aGV5IGFyZSBub3QgY2VydGlmaWVkIHdpdGggYSB0cnVzdGVkIHNpZ25hdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfmmK8v5ZCm5pi+56S6IEZBUSDot6/lvoQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgV1lTSVdZRyBlZGl0b3IgaW4gYWdlbnQgaW50ZXJmYWNlLid9ID0gJ+WcqOacjeWKoeS6uuWRmOS7i+mdouaYvuekuiBXWVNJV1lHKOaJgOingeWNs+aJgOW+lynnvJbovpHlmaguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICfmmL7npLrlrZDnm67lvZXnmoTmlbDph48uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOS7i+mdouS4iuaYvuekuuacgOi/keabtOaUueeahOmhueebri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOS7i+mdouS4iuaYvuekuuacgOaWsOWIm+W7uueahOmhueebri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOS7i+mdouS4iuaYvuekuueCueWHu+mHj+WJjeWNgeS9jS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WumuS5ieaYvuekuuivhOWIhueahOS7i+mdoi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRpbWUgdXNlIGNvbXBsZXRlIGRlc2NyaXB0aW9uIChkYXlzLCBob3VycywgbWludXRlcyksIGlmIHNldCB0byAiWWVzIjsgb3IganVzdCBmaXJzdCBsZXR0ZXIgKGQsIGgsIG0pLCBpZiBzZXQgdG8gIk5vIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0gJ0ZBUSDnmoTmoIfor4bnrKYsIOS+i+WmgiAo5bi46KeB6Zeu6aKYKUZBUSMsICjnn6Xor4blupMpS0IjLCDpu5jorqTkuLogRkFRIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnRkFRIOaWh+eroOaJueWHhuivt+axgueahCBUaWNrZXQg5YaF5a65Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZnJlZSB0ZXh0IG9wdGlvbnMgc2hvd24gaW4gdGhlIHRpY2tldCBtZXNzYWdlIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLiBOT1RFLiBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZXNlIGZpZWxkcyBhbHNvIGluIHRoZSB0aWNrZXQgem9vbSBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB5b3UgaGF2ZSB0byBlbmFibGUgdGhlbSBpbiBDdXN0b21lclRpY2tldFpvb20jIyNBdHRyaWJ1dGVzVmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGZyZWUgdGltZSBvcHRpb25zIHNob3duIGluIHRoZSB0aWNrZXQgbWVzc2FnZSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4gTk9URS4gSWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGVzZSBmaWVsZHMgYWxzbyBpbiB0aGUgdGlja2V0IHpvb20gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgeW91IGhhdmUgdG8gZW5hYmxlIHRoZW0gaW4gQ3VzdG9tZXJUaWNrZXRab29tIyMjQXR0cmlidXRlc1ZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdGQVEg5paH56ug5om55YeG6K+35rGC55qEIFRpY2tldCDkuLvpopguJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgbmVlZHMgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAhJ30gPSAn6Iez5bCR6KaB5oyH5a6a5LiA5Liq576k57uE5a+56K+l55uu5b2V5oul5pyJ5p2D6ZmQISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgY29tbWVudCEnfSA9ICfnm67lvZXlupTor6XopoHmnInkuIDkuKrms6jph4ohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB3aGljaCBjYW4gYWNjZXNzIHRoaXMgY2F0ZWdvcnkuJ30gPSAn5ZOq5LiA5Liq576k57uE5Y+v5Lul6K6/6Zeu5q2k55uu5b2VLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlcyd9ID0gJ+aWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgZmxhZy4nfSA9ICfor4TliIbmoIforrDnmoQgQ1NTIOminOiJsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcmllcyd9ID0gJ+ebruW9lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRhaWxTZWFyY2gnfSA9ICfpq5jnuqfmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIENhdGVnb3J5Pyd9ID0gJ+ecn+eahOimgeWIoOmZpOivpeebruW9leWQlz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIExhbmd1YWdlPyd9ID0gJ+ecn+eahOimgeWIoOmZpOivpeivreiogOWQlz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfmtY/op4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5J30gPSAnRkFRIOebruW9lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yeSBhY2Nlc3NpYmxlLiBUbyBjcmVhdGUgYW4gYXJ0aWNsZSB5b3UgbmVlZCBhY2Nlc3MgdG8gYXQgbGVhc3Qgb25lIGNhdGVnb3J5LiBQbGVhc2UgY2hlY2sgeW91ciBncm91cC9jYXRlZ29yeSBwZXJtaXNzaW9uIHVuZGVyIC1jYXRlZ29yeSBtZW51LSEnfSA9ICfmsqHmnInlvZLnsbvliLDnm67lvZUuIOimgeWIm+W7uuS4gOevh+aWh+eroOmcgOimgeW9kuexu+WIsOebruW9lemHjCwg6K+35ZyoIC3nm67lvZXoj5zljZUtIOmHjOmAieaLqeaCqOacieadg+mZkOWIm+W7uuaWh+eroOeahOebruW9lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJDYXRlZ29yaWVzJ30gPSAn5a2Q55uu5b2VJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB0aXRsZSBpcyByZXF1aXJlZC4nfSA9ICfmoIfpopjmmK/lv4XpobvnmoQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgQ2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgU3ViQ2F0ZWdvcmllcyd9ID0gJ+ivpeebruW9leaYr+S7peS4i+WtkOebruW9leeahOeItuebruW9lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIENhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNlKHMpJ30gPSAn6K+l55uu5b2V5q2j6KKr5Lul5LiL55qEIEZBUSDmlofnq6DmiYDkvb/nlKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBMYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICfor6Xor63oqIDmraPooqvku6XkuIvnmoQgRkFRIOaWh+eroOaJgOS9v+eUqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ+ivpeebruW9leW3sue7j+WcqOWtmOWcqCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlZCd9ID0gJ+abtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBDYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIEFydGljbGUhIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3QgYW5vdGhlciBDYXRlZ29yeSd9ID0gJ+S4jeiDveWIoOmZpOivpeebruW9lS4g5a6D6Iez5bCR6L+Y6KKr5LiA56+HIEZBUSDmlofnq6DmiYDkvb/nlKgg5bm2L+aIliDlroPmmK/lhbbkuK3nm67lvZXnmoTniLbnm67lvZUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIExhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgQXJ0aWNsZSEnfSA9ICfkuI3og73liKDpmaTor6Xor63oqIAuIOWug+iHs+Wwkei/mOiiq+S4gOevhyBGQVEg5paH56ug5omA5L2/55SoISc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFBZGQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhbGlkOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIGFsbCBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBDb25maWdPYmplY3QgTG9nT2JqZWN0KSkgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntWYWxpZE9iamVjdH0gICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6VmFsaWQtPm5ldyglUGFyYW0pOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKSB8fCAnJzsKCiAgICAjIGdldCBmb3JtIGlkCiAgICAkU2VsZi0+e0Zvcm1JRH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtSUQnICk7CgogICAgIyBjcmVhdGUgZm9ybSBpZAogICAgaWYgKCAhJFNlbGYtPntGb3JtSUR9ICkgewogICAgICAgICRTZWxmLT57Rm9ybUlEfSA9ICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURDcmVhdGUoKTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1ldGVycwogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgIHF3KFRpdGxlIENhdGVnb3J5SUQgU3RhdGVJRCBMYW5ndWFnZUlEIFZhbGlkSUQgS2V5d29yZHMgQXBwcm92ZWQgRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYgKQogICAgICAgICkKICAgIHsKICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKICAgIH0KCiAgICAjIGdldCBjYXRlZ29yaWVzICh3aXRoIGNhdGVnb3J5IGxvbmcgbmFtZXMpIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoYXQgdGhlcmUgYXJlIGNhdGVnb3JpZXMgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXIKICAgIGlmICgKICAgICAgICAhJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzCiAgICAgICAgfHwgcmVmICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyBuZSAnSEFTSCcKICAgICAgICB8fCAhJXskVXNlckNhdGVnb3JpZXNMb25nTmFtZXN9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNob3cgdGhlIGZhcSBhZGQgc2NyZWVuCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICEkU2VsZi0+e1N1YmFjdGlvbn0gKSB7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0+ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcywKCiAgICAgICAgICAgICMgbGFzdCB2aWV3ZWQgY2F0ZWdvcnkgZnJvbSBzZXNzaW9uICh3cml0dGVuIGJ5IGZhcSBleHBsb3JlcikKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU2VsZi0+e0xhc3RWaWV3ZWRDYXRlZ29yeX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2F2ZSB0aGUgZmFxCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFRpdGxlIENhdGVnb3J5SUQpKSB7CgogICAgICAgICAgICAjIGlmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbiwgYWRkIHNlcnZlciBlcnJvciBjbGFzcwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIGFuIGF0dGFjaG1lbnQgbXVzdCBiZSBkZWxldGVkCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gMzIgKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSBkZWxldGUgYnV0dG9uIHdhcyBwcmVzc2VkIGZvciB0aGlzIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJERlbGV0ZSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gIkF0dGFjaG1lbnREZWxldGUkTnVtYmVyIiApOwoKICAgICAgICAgICAgIyBjaGVjayBuZXh0IGF0dGFjaG1lbnQgaWYgaXQgd2FzIG5vdCBwcmVzc2VkCiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJERlbGV0ZTsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgdGhhdCB3ZSBuZWVkIHRvIHNob3cgdGhlIHBhZ2UgYWdhaW4KICAgICAgICAgICAgJEVycm9ye0F0dGFjaG1lbnR9ID0gMTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBhdHRhY2htZW50IGZyb20gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlEUmVtb3ZlRmlsZSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJE51bWJlciwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgdGhlcmUgd2FzIGFuIGF0dGFjaG1lbnQgdXBsb2FkCiAgICAgICAgaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdBdHRhY2htZW50VXBsb2FkJyApICkgewoKICAgICAgICAgICAgIyByZW1lbWJlciB0aGF0IHdlIG5lZWQgdG8gc2hvdyB0aGUgcGFnZSBhZ2FpbgogICAgICAgICAgICAkRXJyb3J7QXR0YWNobWVudH0gPSAxOwoKICAgICAgICAgICAgIyBnZXQgdGhlIHVwbG9hZGVkIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJVVwbG9hZFN0dWZmID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgICAgIFBhcmFtICA9PiAnRmlsZVVwbG9hZCcsCiAgICAgICAgICAgICAgICBTb3VyY2UgPT4gJ3N0cmluZycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgJVVwbG9hZFN0dWZmLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHNlcnZlciBlcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmcKICAgICAgICAjIG9yIGFuIGF0dGFjaG1lbnQgd2FzIGRlbGV0ZWQgb3IgdXBsb2FkZWQKICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIGlmIHRoZXJlIHdhcyBhbiBhdHRhY2htZW50IGRlbGV0ZSBvciB1cGxvYWQKICAgICAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCB0byBzaG93IHZhbGlkYXRpb24gZXJyb3JzIGZvciBvdGhlciBmaWVsZHMKICAgICAgICAgICAgaWYgKCAkRXJyb3J7QXR0YWNobWVudH0gKSB7CiAgICAgICAgICAgICAgICAlRXJyb3IgPSAoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tOZXcoCiAgICAgICAgICAgICAgICBVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyA9PiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMsCiAgICAgICAgICAgICAgICBBdHRhY2htZW50cyAgICAgICAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgdGhlIG5ldyBmYXEgYXJ0aWNsZQogICAgICAgIG15ICRGQVFJRCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRQWRkKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGVycm9yIGlmIGZhcSBjb3VsZCBub3QgYmUgYWRkZWQKICAgICAgICBpZiAoICEkRkFRSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgZnJvbSB1cGxvYWQgY2FjaGUKICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlER2V0QWxsRmlsZXNEYXRhKAogICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICk7CgogICAgICAgICMgd3JpdGUgYXR0YWNobWVudHMKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIGF0dGFjaG1lbnQgaXMgYW4gaW5saW5lIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJElubGluZSA9IDA7CiAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICkgewoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgdGhhdCBpdCBpcyBpbmxpbmUKICAgICAgICAgICAgICAgICRJbmxpbmUgPSAxOwoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgaWYgdGhpcyBpbmxpbmUgYXR0YWNobWVudCBpcyB1c2VkIGluIGFueSBmYXEgYXJ0aWNsZQogICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJREZvdW5kOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgYWxsIGZpZWxkcyBmb3IgY29udGVudCBpZAogICAgICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgZmFxIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgbXkgJEZpZWxkID0gJEdldFBhcmFteyAnRmllbGQnIC4gJE51bWJlciB9OwoKICAgICAgICAgICAgICAgICAgICAjIHNraXAgZW1wdHkgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZpZWxkOwoKICAgICAgICAgICAgICAgICAgICAjIHNraXAgZmllbGRzIHRoYXQgZG8gbm90IGNvbnRhaW4gdGhlIGNvbnRlbnQgaWQKICAgICAgICAgICAgICAgICAgICBuZXh0IEZJRUxEIGlmICRGaWVsZCAhfiBteyAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gfXhtczsKCiAgICAgICAgICAgICAgICAgICAgIyBmb3VuZCB0aGUgY29udGVudCBpZAogICAgICAgICAgICAgICAgICAgICRDb250ZW50SURGb3VuZCA9IDE7CgogICAgICAgICAgICAgICAgICAgICMgd2UgZG8gbm90IG5lZWQgdG8gc2VhcmNoIGZ1cnRoZXIKICAgICAgICAgICAgICAgICAgICBsYXN0IEZJRUxEOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgd2UgZG8gbm90IHdhbnQgdG8ga2VlcCB0aGlzIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaXQgd2FzIGRlbGV0ZWQgaW4gdGhlIHJpY2h0IHRleHQgZWRpdG9yCiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRDb250ZW50SURGb3VuZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudAogICAgICAgICAgICBteSAkRmlsZUlEID0gJFNlbGYtPntGQVFPYmplY3R9LT5BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgSW5saW5lID0+ICRJbmxpbmUsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgICAgICBpZiAoICEkRmlsZUlEICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRJbmxpbmU7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QnJvd3NlclJpY2hUZXh0fTsKCiAgICAgICAgICAgICMgcmV3cml0ZSB0aGUgVVJMcyBvZiB0aGUgaW5saW5lIGltYWdlcyBmb3IgdGhlIHVwbG9hZGVkIHBpY3R1cmVzCiAgICAgICAgICAgIG15ICRPayA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSgKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgRmlsZUlEICAgICA9PiAkRmlsZUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgIGlmICggISRPayApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgdGhlIGlubGluZSBpbWFnZSBVUkxzICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiZm9yIEZBUSBJdGVtIyAnJEZBUUlEJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURSZW1vdmUoIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0gKTsKCiAgICAgICAgIyByZWRpcmVjdCB0byBGQVEgem9vbQogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPlJlZGlyZWN0KCBPUCA9PiAnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JyAuICRGQVFJRCApOwogICAgfQp9CgpzdWIgX01hc2tOZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ICAgICAgICA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZExpc3QoKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgIG15ICVEYXRhOwoKICAgICMgYnVpbGQgdmFsaWQgc2VsZWN0aW9uCiAgICAkRGF0YXtWYWxpZE9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VmFsaWRJRH0gfHwgJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgKTsKCiAgICAjIHNldCBubyBzZXJ2ZXIgZXJyb3IgY2xhc3MgYXMgZGVmYXVsdAogICAgJFBhcmFte0NhdGVnb3J5SURTZXJ2ZXJFcnJvcn0gfHw9ICcnOwoKICAgICMgYnVpbGQgY2F0ZWdvcnkgc2VsZWN0aW9uCiAgICAkRGF0YXtDYXRlZ29yeU9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkUGFyYW17VXNlckNhdGVnb3JpZXNMb25nTmFtZXN9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2F0ZWdvcnlJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgLiAkUGFyYW17Q2F0ZWdvcnlJRFNlcnZlckVycm9yfSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICk7CgogICAgIyBnZXQgdGhlIGxhbmd1YWdlIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UKICAgIG15ICRTZWxlY3RlZExhbmd1YWdlOwogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gJiYgJExhbmd1YWdlc3sgJFBhcmFte0xhbmd1YWdlSUR9IH0gKSB7CgogICAgICAgICMgZ2V0IGxhbmd1YWdlIGZyb20gZ2l2ZW4gbGFuZ3VhZ2UgaWQKICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYW5ndWFnZXN7ICRQYXJhbXtMYW5ndWFnZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgdXNlIHRoZSB1c2VyIGxhbmd1YWdlLCBvciBpZiBub3QgZm91bmQgJ2VuJwogICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57VXNlckxhbmd1YWdlfSB8fCAnZW4nOwoKICAgICAgICAjIGdldCB1c2VyIGxhbmd1YWdlIElECiAgICAgICAgbXkgJFNlbGVjdGVkTGFuZ3VhZ2VJRCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMb29rdXAoIE5hbWUgPT4gJFNlbGVjdGVkTGFuZ3VhZ2UgKTsKCiAgICAgICAgIyBjaGVjayBpZiBMYW5kdWFnZUlEIGRvZXMgbm90IGV4c2l0cwogICAgICAgIGlmICggISRTZWxlY3RlZExhbmd1YWdlSUQgKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbG93ZXN0IGxhbmd1YWdlIElECiAgICAgICAgICAgIG15IEBMYW5ndWFnZUlEcyA9IHNvcnQga2V5cyAlTGFuZ3VhZ2VzOwogICAgICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZUlEID0gJExhbmd1YWdlSURzWzBdOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGxhbmd1YWdlIHdpdGggbG93ZXN0IGxhbmd1YWdlIElEIGFzIHNlbGVjdGVkIGxhbmd1YWdlCiAgICAgICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExhbmd1YWdlc3skU2VsZWN0ZWRMYW5ndWFnZUlEfTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCB0aGUgbGFuZ3VhZ2Ugc2VsZWN0aW9uCiAgICAkRGF0YXtMYW5ndWFnZU9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVMYW5ndWFnZXMsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnTGFuZ3VhZ2VJRCcsCiAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRMYW5ndWFnZSwKICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDAsCiAgICApOwoKICAgICMgZ2V0IHRoZSBzdGF0ZXMgbGlzdAogICAgbXkgJVN0YXRlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBzZWxlY3RlZCBzdGF0ZQogICAgbXkgJFNlbGVjdGVkU3RhdGU7CiAgICBpZiAoICRQYXJhbXtTdGF0ZUlEfSAmJiAkU3RhdGVzeyAkUGFyYW17U3RhdGVJRH0gfSApIHsKCiAgICAgICAgIyBnZXQgc3RhdGUgZnJvbSBnaXZlbiBzdGF0ZSBpZAogICAgICAgICRTZWxlY3RlZFN0YXRlID0gJFN0YXRlc3sgJFBhcmFte1N0YXRlSUR9IH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgZGVmYXVsdCBzdGF0ZQogICAgICAgICRTZWxlY3RlZFN0YXRlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6U3RhdGUnKSB8fCAnaW50ZXJuYWwgKGFnZW50KSc7CiAgICB9CgogICAgIyBidWlsZCB0aGUgc3RhdGUgc2VsZWN0aW9uCiAgICAkRGF0YXtTdGF0ZU9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTdGF0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnU3RhdGVJRCcsCiAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRTdGF0ZSwKICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDEsCiAgICApOwoKICAgICMgc2hvdyBmYXEgYWRkIHNjcmVlbgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFBZGQnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvdyBsYW5ndWFnZXMgZmllbGQKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGdldCBkZWZhdWx0IGxhbmd1YWdlCiAgICAgICAgbXkgJERlZmF1bHRMYW5ndWFnZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkRlZmF1bHQ6Okxhbmd1YWdlJykgfHwgJ2VuJzsKCiAgICAgICAgIyBnZXQgZGVmYXVsdCBsYW5ndWFnZSBJRAogICAgICAgIG15ICRMYW5ndWFnZUlEID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAkRGVmYXVsdExhbmd1YWdlLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGRlZmF1bHQgbGFuZ3VhZ2UgaWYgaXQgd2FzIGRlbGV0ZWQgb3IgZG9lcyBub3QgZXhpc3RzCiAgICAgICAgaWYgKCAhJExhbmd1YWdlSUQgKSB7CiAgICAgICAgICAgIG15ICRJbnNlcnRMYW5ndWFnZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VBZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJERlZmF1bHRMYW5ndWFnZSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJEluc2VydExhbmd1YWdlICkgewoKICAgICAgICAgICAgICAgICMgcmV0dXJuIHdpdGggZXJyb3Igc2NyZWVuCiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW4ndCBjcmVhdGUgYSBuZXcgb25lLiIsCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBkZWZhdWx0IGxhbmd1YWdlIElECiAgICAgICAgICAgICRMYW5ndWFnZUlEID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJERlZmF1bHRMYW5ndWFnZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtMYW5ndWFnZUlEfSA9ICRMYW5ndWFnZUlEOwoKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBhcHByb3ZhbCBmaWVsZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBmYXEgYXBwcm92YWwgZ3JvdXAgZnJvbSBjb25maWcKICAgICAgICBteSAkQXBwcm92YWxHcm91cCA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsR3JvdXAnKSB8fCAnJzsKCiAgICAgICAgIyBidWlsZCB0aGUgYXBwcm92YWwgc2VsZWN0aW9uIGlmIHVzZXIgaXMgaW4gdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgaWYgKCAkR3JvdXBzeyRBcHByb3ZhbEdyb3VwfSApIHsKCiAgICAgICAgICAgICREYXRhe0FwcHJvdmFsT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBcHByb3ZlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAwID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgMSA9PiAnWWVzJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtBcHByb3ZlZH0gfHwgMCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FwcHJvdmFsJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IHRoZSBhdHRhY2htZW50IHVwbG9hZCBidXR0b24KICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFVwbG9hZCcsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBzaG93IGF0dGFjaG1lbnRzCiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnRzfSB9ICkgewoKICAgICAgICAjIGRvIG5vdCBzaG93IGlubGluZSBpbWFnZXMgYXMgYXR0YWNobWVudHMKICAgICAgICAjICh0aGV5IGhhdmUgYSBjb250ZW50IGlkKQogICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICYmICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnQnLAogICAgICAgICAgICBEYXRhID0+ICRBdHRhY2htZW50LAogICAgICAgICk7CiAgICB9CgogICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvciBqYXZhc2NyaXB0CiAgICAjIG9ubHkgaWYgYWN0aXZhdGVkIGFuZCB0aGUgYnJvd3NlciBjYW4gaGFuZGxlIGl0CiAgICAjIG90aGVyd2lzZSBqdXN0IGEgdGV4dGFyZWEgaXMgc2hvd24KICAgIGlmICggJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dCcsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFBZGQnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFDYXRlZ29yeTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhbGlkOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57VmFsaWRPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1ldGVycwogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KENhdGVnb3J5SUQgTmFtZSBQYXJlbnRJRCBDb21tZW50IFZhbGlkSUQpKSB7CiAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBjYXRlZ29yeSBpZAogICAgJEdldFBhcmFte0NhdGVnb3J5SUR9IHx8PSAwOwoKICAgICMgc2V0IGRlZmF1bHQgcGFyZW50IGlkCiAgICAkR2V0UGFyYW17UGFyZW50SUR9IHx8PSAwOwoKICAgICMgZ2V0IGFycmF5IHBhcmFtZXRlcnMKICAgIEB7ICRHZXRQYXJhbXtQZXJtaXNzaW9uR3JvdXBzfSB9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAnUGVybWlzc2lvbkdyb3VwcycgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRHZXRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICdOZWVkIENhdGVnb3J5SUQhJyApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY2F0ZWdvcnkgZGF0YQogICAgICAgIG15ICVDYXRlZ29yeURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgcGVybWlzc2lvbiBncm91cHMKICAgICAgICAkQ2F0ZWdvcnlEYXRhe1Blcm1pc3Npb25Hcm91cHN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdyb3VwR2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjaGFuZ2UgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2hhbmdlQWN0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhQYXJlbnRJRCBWYWxpZElEKSkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIk5lZWQgJFBhcmFtTmFtZSEiICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoTmFtZSBDb21tZW50IFBlcm1pc3Npb25Hcm91cHMpKSB7CgogICAgICAgICAgICAjIGlmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwoKICAgICAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBzdHJpbmcgZm9yIGNhdGVnb3J5IG5hbWUgZmllbGQKICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gJ0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2VuZCBzZXJ2ZXIgZXJyb3IgaWYgYW55IHJlcXVpcmVkIHBhcmFtZXRlciBpcyBtaXNzaW5nCiAgICAgICAgaWYgKCVFcnJvcikgewoKICAgICAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGR1cGxpY2F0ZSBjYXRlZ29yeSBuYW1lIHdpdGggdGhlIHNhbWUgcGFyZW50IGNhdGVnb3J5CiAgICAgICAgbXkgJENhdGVnb3J5RXhpc3RzQWxyZWFkeSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlEdXBsaWNhdGVDaGVjaygKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkR2V0UGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJEdldFBhcmFte05hbWV9LAogICAgICAgICAgICBQYXJlbnRJRCAgID0+ICRHZXRQYXJhbXtQYXJlbnRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyB0aGUgZWRpdCBzY3JlZW4gYWdhaW4KICAgICAgICBpZiAoJENhdGVnb3J5RXhpc3RzQWxyZWFkeSkgewoKICAgICAgICAgICAgIyBzZXQgc2VydmVyIGVycm9ycwogICAgICAgICAgICAkR2V0UGFyYW17TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkR2V0UGFyYW17TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPSAnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyc7CgogICAgICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgY2F0ZWdvcnkKICAgICAgICBteSAkQ2F0ZWdvcnlVcGRhdGVTdWNjZXNzZnVsID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVVwZGF0ZSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkQ2F0ZWdvcnlVcGRhdGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgY2F0ZWdvcnkgZ3JvdXAKICAgICAgICAkU2VsZi0+e0ZBUU9iamVjdH0tPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBHcm91cElEcyAgID0+ICRHZXRQYXJhbXtQZXJtaXNzaW9uR3JvdXBzfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IG5vdGlmaWNhdGlvbgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoIEluZm8gPT4gJ0ZBUSBjYXRlZ29yeSB1cGRhdGVkIScgKTsKCiAgICAgICAgIyBzaG93IG92ZXJ2aWV3CiAgICAgICAgJFNlbGYtPl9PdmVydmlldygpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFkZAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZCcgKSB7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhZGQgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkQWN0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhQYXJlbnRJRCBWYWxpZElEKSkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIk5lZWQgJFBhcmFtTmFtZSEiICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoTmFtZSBDb21tZW50IFBlcm1pc3Npb25Hcm91cHMpKSB7CgogICAgICAgICAgICAjIGlmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBhZGQgdmFsaWRhdGlvbiBjbGFzcyBhbmQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbU5hbWUgZXEgJ1Blcm1pc3Npb25Hcm91cHMnICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcnsgJFBhcmFtTmFtZSAuICdTZXJ2ZXJFcnJvcicgfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIHN0cmluZyBmb3IgY2F0ZWdvcnkgbmFtZSBmaWVsZAogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW1OYW1lIGVxICdOYW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPSAnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHNlcnZlciBlcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1ldGVycyBhcmUgbWlzc2luZwogICAgICAgIGlmICglRXJyb3IpIHsKCiAgICAgICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBkdXBsaWNhdGUgY2F0ZWdvcnkgbmFtZSB3aXRoIHRoZSBzYW1lIHBhcmVudCBjYXRlZ29yeQogICAgICAgIG15ICRDYXRlZ29yeUV4aXN0c0FscmVhZHkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5RHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgUGFyZW50SUQgICA9PiAkR2V0UGFyYW17UGFyZW50SUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgdGhlIGVkaXQgc2NyZWVuIGFnYWluCiAgICAgICAgaWYgKCRDYXRlZ29yeUV4aXN0c0FscmVhZHkpIHsKCiAgICAgICAgICAgICMgc2V0IHNlcnZlciBlcnJvcnMKICAgICAgICAgICAgJEdldFBhcmFte05hbWVTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEdldFBhcmFte05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gJ1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJzsKCiAgICAgICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBuZXcgY2F0ZWdvcnkKICAgICAgICBteSAkQ2F0ZWdvcnlJRCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBjYXRlZ29yeSBncm91cAogICAgICAgICRTZWxmLT57RkFRT2JqZWN0fS0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiAkR2V0UGFyYW17UGVybWlzc2lvbkdyb3Vwc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBub3RpZmljYXRpb24KICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm90aWZ5KCBJbmZvID0+ICdGQVEgY2F0ZWdvcnkgYWRkZWQhJyApOwoKICAgICAgICAjIHNob3cgb3ZlcnZpZXcKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgZGVsZXRlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIENhdGVnb3J5SUQKICAgICAgICBteSAkQ2F0ZWdvcnlJRCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5SUQnICkgfHwgJyc7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRDYXRlZ29yeUlEICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjYXRlZ29yeSBkYXRhCiAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVDYXRlZ29yeURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYWZmZWN0ZWQgRkFRIGFydGljbGVzCiAgICAgICAgbXkgQEFmZmVjdGVkSXRlbXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVNlYXJjaCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyRDYXRlZ29yeUlEXSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBhbGwgYWZmZWN0ZWQgU3ViQ2NhdGVnb3JpZXMKICAgICAgICBteSAkQWZmZWN0ZWRTdWJDYXRlZ29yaWVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNhbGwgRGVsZXRlIGJsb2NrCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVsZXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JUNhdGVnb3J5RGF0YX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgdGhlIGRpYWxvZyB0eXBlLiBBcyBkZWZhdWx0LCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgICAgICBteSAkRGlhbG9nVHlwZSA9ICdDb25maXJtYXRpb24nOwoKICAgICAgICAjIGRpc3BsYXkgbGlzdCBvZiBhZmZlY3RlZCBGQVEgYXJ0aWNsZXMgb3IgU3ViQ2F0ZWdvcmllcwogICAgICAgIGlmICggQEFmZmVjdGVkSXRlbXMgfHwgQHskQWZmZWN0ZWRTdWJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZSB0byBoYXZlIG9ubHkgMSBidXR0b246IE9rCiAgICAgICAgICAgICREaWFsb2dUeXBlID0gJ01lc3NhZ2UnOwoKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGRpc3BsYXkgQWZmZWN0ZWQgRkFRIGFydGljbGVzCiAgICAgICAgICAgIGlmIChAQWZmZWN0ZWRJdGVtcykgewoKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtcycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgSVRFTUlEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBBZmZlY3RlZEl0ZW1zKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGZhcSBhcnRpY2xlCiAgICAgICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBmYXEgYXJ0aWNsZQogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTUlEIGlmICElRkFRRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtc1JvdycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkaXNwbGF5IEFmZmVjdGVkIFN1YmNhdGVnb3JpZXMKICAgICAgICAgICAgaWYgKCBAeyRBZmZlY3RlZFN1YkNhdGVnb3JpZXN9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGNhdGVnb2llcyBsb25nIG5hbWVzCiAgICAgICAgICAgICAgICBteSAkQ2F0ZWdvcnlMb25nTmFtZXMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRTdWJDYXRlZ29yaWVzJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIENBVEVHT1JZSUQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBAeyRBZmZlY3RlZFN1YkNhdGVnb3JpZXN9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgIG15ICVDYXRlZ29yeURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCBjYXRlZ29yeSBsb25nIG5hbWUKICAgICAgICAgICAgICAgICAgICAkQ2F0ZWdvcnlEYXRhe0xvbmdOYW1lfSA9ICRDYXRlZ29yeUxvbmdOYW1lcy0+eyRDYXRlZ29yeUlEfTsKCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgIG5leHQgQ0FURUdPUllJRCBpZiAhJUNhdGVnb3J5RGF0YTsKCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRTdWJDYXRlZ29yaWVzUm93JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ2F0ZWdvcnlEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnTm9BZmZlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslQ2F0ZWdvcnlEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgb3V0cHV0IGNvbnRlbnQKICAgICAgICBteSAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCB0aGUgcmV0dXJuZWQgZGF0YSBzdHJ1Y3R1cmUKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgSFRNTCAgICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBEaWFsb2dUeXBlID0+ICREaWFsb2dUeXBlLAogICAgICAgICk7CgogICAgICAgICMgcmV0dXJuIEpTT04tU3RyaW5nIGJlY2F1c2Ugb2YgQUpBWC1Nb2RlCiAgICAgICAgbXkgJE91dHB1dEpTT04gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkpTT05FbmNvZGUoIERhdGEgPT4gXCVEYXRhICk7CgogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBkZWxldGUgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIENhdGVnb3J5SUQKICAgICAgICBteSAkQ2F0ZWdvcnlJRCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5SUQnICkgfHwgJyc7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRDYXRlZ29yeUlEICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjYXRlZ29yeSBkYXRhCiAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVDYXRlZ29yeURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgY2F0ZWdvcnkKICAgICAgICBteSAkQ291bGREZWxldGVDYXRlZ29yeSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlEZWxldGUoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ291bGREZWxldGVDYXRlZ29yeSkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBleHBsb3Jlciwgd2hlbiB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50RkFRQ2F0ZWdvcnkiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc2hvdyBlcnJvciBtZXNzYWdlLCB3aGVuIGRlbGV0ZSBmYWlsZWQKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAkQ2F0ZWdvcnlJRCEiLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgb3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgJFNlbGYtPl9PdmVydmlldygpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgX0VkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNob3cgb3ZlcnZpZXcKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBvdXRwdXQgb3ZlcnZpZXcgYmxvY2tzCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdBY3Rpb25MaXN0JyApOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnICk7CgogICAgIyBnZXQgdGhlIHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgICAgICAgID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkTGlzdCgpOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgbXkgJURhdGE7CgogICAgIyBidWlsZCB0aGUgdmFsaWQgc2VsZWN0aW9uCiAgICAkRGF0YXtWYWxpZE9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VmFsaWRJRH0gfHwgJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgKTsKCiAgICAjIGdldCBhbGwgdmFsaWQgZ3JvdXBzCiAgICBteSAlR3JvdXBzID0gJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTGlzdCggVmFsaWQgPT4gMSApOwoKICAgICMgc2V0IG5vIHNlcnZlciBlcnJvciBjbGFzcyBhcyBkZWZhdWx0CiAgICAkUGFyYW17UGVybWlzc2lvbkdyb3Vwc1NlcnZlckVycm9yfSB8fD0gJyc7CgogICAgIyBidWlsZCB0aGUgZ3JvdXAgc2VsZWN0aW9uCiAgICAkRGF0YXtHcm91cE9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVHcm91cHMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnUGVybWlzc2lvbkdyb3VwcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIENsYXNzICAgICAgPT4gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgLiAkUGFyYW17UGVybWlzc2lvbkdyb3Vwc1NlcnZlckVycm9yfSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtQZXJtaXNzaW9uR3JvdXBzfSwKICAgICk7CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMgd2l0aCB0aGVpciBsb25nIG5hbWVzCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgdGhlIGNhdG9nb3J5IHNlbGVjdGlvbgogICAgJERhdGF7Q2F0ZWdvcnlPcHRpb259ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgICA9PiAkQ2F0ZWdvcnlUcmVlLAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdQYXJlbnRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgICAgPT4gJFBhcmFte1BhcmVudElEfSwKICAgICAgICBQb3NzaWJsZU5vbmUgICA9PiAxLAogICAgICAgIERpc2FibGVkQnJhbmNoID0+ICRDYXRlZ29yeVRyZWUtPnsgJFBhcmFte0NhdGVnb3J5SUR9IH0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gICAgPT4gMCwKICAgICk7CgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld1VwZGF0ZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IGhlYWRlcgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnQ2hhbmdlJyApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdIZWFkZXJFZGl0JyApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnSGVhZGVyQWRkJyApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX092ZXJ2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dCA9ICcnOwoKICAgICMgb3V0cHV0IG92ZXJ2aWV3IGJsb2NrcwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnT3ZlcnZpZXcnICk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdBY3Rpb25MaXN0JyApOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uQWRkJyApOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHQnICk7CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMgd2l0aCB0aGVpciBsb25nIG5hbWVzCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgaWYgdGhlcmUgYXJlIGFueSBjYXRlZ29yaWVzLCB0aGV5IGFyZSBzaG93bgogICAgaWYgKCAkQ2F0ZWdvcnlUcmVlICYmIHJlZiAkQ2F0ZWdvcnlUcmVlIGVxICdIQVNIJyAmJiAleyRDYXRlZ29yeVRyZWV9ICkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgbGlzdAogICAgICAgIG15ICVWYWxpZExpc3QgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRMaXN0KCk7CgogICAgICAgICMgc29ydCB0aGUgY2F0ZWdvcnkgaWRzIGJ5IHRoZSBsb25nIGNhdGVnb3J5IG5hbWUKICAgICAgICBteSBAQ2F0ZWdvcnlJRHNTb3J0ZWQgPSBzb3J0IHsgJENhdGVnb3J5VHJlZS0+eyRhfSBjbXAgJENhdGVnb3J5VHJlZS0+eyRifSB9IGtleXMgJXskQ2F0ZWdvcnlUcmVlfTsKCiAgICAgICAgIyBzaG93IGFsbCBjYXRlZ29yaWVzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEIChAQ2F0ZWdvcnlJRHNTb3J0ZWQpIHsKCiAgICAgICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB2YWxpZCBzdHJpbmcgYmFzZWQgb24gVmFsaWRJRAogICAgICAgICAgICAkQ2F0ZWdvcnlEYXRhe1ZhbGlkfSA9ICRWYWxpZExpc3R7ICRDYXRlZ29yeURhdGF7VmFsaWRJRH0gfTsKCiAgICAgICAgICAgICMgb3ZlcndyaXRlIHRoZSBuYW1lIHdpdGggdGhlIGxvbmcgbmFtZQogICAgICAgICAgICAkQ2F0ZWdvcnlEYXRhe05hbWV9ID0gJENhdGVnb3J5VHJlZS0+eyRDYXRlZ29yeUlEfTsKCiAgICAgICAgICAgICMgb3V0cHV0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslQ2F0ZWdvcnlEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFEZWxldGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0IFVzZXJPYmplY3QgR3JvdXBPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScsCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBuZWVkZWQgSXRlbSBpZAogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewoKICAgICAgICAjIGVycm9yIHBhZ2UKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAiTm8gSXRlbUlEIGlzIGdpdmVuISIsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgIG15ICRQZXJtaXNzaW9uID0gJFNlbGYtPntGQVFPYmplY3R9LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZScgKSB7CgogICAgICAgICMgZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZQogICAgICAgIG15ICRDb3VsZERlbGV0ZUl0ZW0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRDb3VsZERlbGV0ZUl0ZW0pIHsKCiAgICAgICAgICAgICMgcmVkaXJlY3QgdG8gZXhwbG9yZXIsIHdoZW4gdGhlIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JEZBUURhdGF7Q2F0ZWdvcnlJRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc2hvdyBlcnJvciBtZXNzYWdlLCB3aGVuIGRlbGV0ZSBmYWlsZWQKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAkRkFRRGF0YXtJdGVtSUR9ISIsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCB0aGUgZGlhbG9nIHR5cGUuIEFzIGRlZmF1bHQsIHRoZSBkaWFsb2cgd2lsbCBoYXZlIDIgYnV0dG9uczogWWVzIGFuZCBObwogICAgbXkgJERpYWxvZ1R5cGUgPSAnQ29uZmlybWF0aW9uJzsKCiAgICAjIG91dHB1dCBjb250ZW50CiAgICBteSAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFEZWxldGUnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCB0aGUgcmV0dXJuZWQgZGF0YSBzdHJ1Y3R1cmUKICAgIG15ICVEYXRhID0gKAogICAgICAgIEhUTUwgICAgICAgPT4gJE91dHB1dCwKICAgICAgICBEaWFsb2dUeXBlID0+ICREaWFsb2dUeXBlLAogICAgKTsKCiAgICAjIHJldHVybiBKU09OLVN0cmluZyBiZWNhdXNlIG9mIEFKQVgtTW9kZQogICAgbXkgJE91dHB1dEpTT04gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkpTT05FbmNvZGUoIERhdGEgPT4gXCVEYXRhICk7CgogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57Q2hhcnNldH0sCiAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFFZGl0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CnVzZSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYWxpZDsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBhbGwgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0IChxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgQ29uZmlnT2JqZWN0IExvZ09iamVjdCkpIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57VmFsaWRPYmplY3R9ICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IikgfHwgJyc7CgogICAgIyBnZXQgZm9ybSBpZAogICAgJFNlbGYtPntGb3JtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybUlEJyApOwoKICAgICMgY3JlYXRlIGZvcm0gaWQKICAgIGlmICggISRTZWxmLT57Rm9ybUlEfSApIHsKICAgICAgICAkU2VsZi0+e0Zvcm1JRH0gPSAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlEQ3JlYXRlKCk7CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1J3fSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtZXRlcnMKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkUGFyYW1OYW1lICgKICAgICAgICBxdyhJdGVtSUQgVGl0bGUgQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVmFsaWRJRCBLZXl3b3JkcyBBcHByb3ZlZCBGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNiApCiAgICAgICAgKQogICAgewogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTm8gSXRlbUlEIGlzIGdpdmVuIScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW0gZGF0YQogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBlcnJvcgogICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIGNoZWNrIHVzZXIgcGVybWlzc2lvbgogICAgbXkgJFBlcm1pc3Npb24gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgKTsKCiAgICAjIHNob3cgZXJyb3IgbWVzc2FnZQogICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5IScsCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNob3cgdGhlIGZhcSBlZGl0IHNjcmVlbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlciggVHlwZSA9PiAnU21hbGwnICk7CgogICAgICAgICMgZ2V0IGFsbCBleGlzdGluZyBhdHRhY2htZW50cyAod2l0aG91dCBpbmxpbmUgYXR0YWNobWVudHMpCiAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgU2hvd0lubGluZSA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNvcHkgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzIHRvIHVwbG9hZCBjYWNoZQogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBleGlzdGluZyBhdHRhY2htZW50IGRhdGEKICAgICAgICAgICAgbXkgJUZpbGUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IGNvbnRlbnQgZGlzcG9zaXRpb24gKGlmIGl0cyBhbiBpbmxpbmUgYXR0YWNobWVudCkKICAgICAgICAgICAgbXkgJERpc3Bvc2l0aW9uID0gJEF0dGFjaG1lbnQtPntJbmxpbmV9ID8gJ2lubGluZScgOiAnJzsKCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fS0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxle0ZpbGVuYW1lfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWxle0NvbnRlbnR9LAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJEZpbGV7Q29udGVudFR5cGV9LAogICAgICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJERpc3Bvc2l0aW9uLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIG1ldGEgZGF0YSBmcm9tIHVwbG9hZCBjYWNoZQogICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXdyaXRlIG9sZCBzdHlsZSBpbmxpbmUgaW1hZ2UgVVJMcwogICAgICAgIEZJRUxEOgogICAgICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewoKICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZBUURhdGF7JEZpZWxkfTsKCiAgICAgICAgICAgICMgcmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbiwgdGFrZSBjYXJlIG9mIG9sZCBzdHlsZSBiZWZvcmUgRkFRIDIuMC54CiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0gPX4gc3sKICAgICAgICAgICAgICAgIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgICAgIH17QWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O31neG1zOwogICAgICAgIH0KCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgQXR0YWNobWVudHMgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNhdmUgdGhlIGZhcQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgbXkgJUVycm9yOwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhUaXRsZSBDYXRlZ29yeUlEKSkgewoKICAgICAgICAgICAgIyBpZiByZXF1aXJlZCBmaWVsZCBpcyBub3QgZ2l2ZW4sIGFkZCBzZXJ2ZXIgZXJyb3IgY2xhc3MKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEVycm9yeyAkUGFyYW1OYW1lIC4gJ1NlcnZlckVycm9yJyB9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBhbiBhdHRhY2htZW50IG11c3QgYmUgZGVsZXRlZAogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDMyICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgZGVsZXRlIGJ1dHRvbiB3YXMgcHJlc3NlZCBmb3IgdGhpcyBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICREZWxldGUgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICJBdHRhY2htZW50RGVsZXRlJE51bWJlciIgKTsKCiAgICAgICAgICAgICMgY2hlY2sgbmV4dCBhdHRhY2htZW50IGlmIGl0IHdhcyBub3QgcHJlc3NlZAogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISREZWxldGU7CgogICAgICAgICAgICAjIHJlbWVtYmVyIHRoYXQgd2UgbmVlZCB0byBzaG93IHRoZSBwYWdlIGFnYWluCiAgICAgICAgICAgICRFcnJvcntBdHRhY2htZW50fSA9IDE7CgogICAgICAgICAgICAjIHJlbW92ZSB0aGUgYXR0YWNobWVudCBmcm9tIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRFJlbW92ZUZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgRmlsZUlEID0+ICROdW1iZXIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhbiBhdHRhY2htZW50IHVwbG9hZAogICAgICAgIGlmICggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQXR0YWNobWVudFVwbG9hZCcgKSApIHsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgdGhhdCB3ZSBuZWVkIHRvIHNob3cgdGhlIHBhZ2UgYWdhaW4KICAgICAgICAgICAgJEVycm9ye0F0dGFjaG1lbnR9ID0gMTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSB1cGxvYWRlZCBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICVVcGxvYWRTdHVmZiA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRVcGxvYWRBbGwoCiAgICAgICAgICAgICAgICBQYXJhbSAgPT4gJ0ZpbGVVcGxvYWQnLAogICAgICAgICAgICAgICAgU291cmNlID0+ICdzdHJpbmcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudCB0byB0aGUgdXBsb2FkIGNhY2hlCiAgICAgICAgICAgICRTZWxmLT57VXBsb2FkQ2FjaGVPYmplY3R9LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICVVcGxvYWRTdHVmZiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2VuZCBzZXJ2ZXIgZXJyb3IgaWYgYW55IHJlcXVpcmVkIHBhcmFtZXRlciBpcyBtaXNzaW5nCiAgICAgICAgIyBvciBhbiBhdHRhY2htZW50IHdhcyBkZWxldGVkIG9yIHVwbG9hZGVkCiAgICAgICAgaWYgKCVFcnJvcikgewoKICAgICAgICAgICAgIyBpZiB0aGVyZSB3YXMgYW4gYXR0YWNobWVudCBkZWxldGUgb3IgdXBsb2FkCiAgICAgICAgICAgICMgd2UgZG8gbm90IHdhbnQgdG8gc2hvdyB2YWxpZGF0aW9uIGVycm9ycyBmb3Igb3RoZXIgZmllbGRzCiAgICAgICAgICAgIGlmICggJEVycm9ye0F0dGFjaG1lbnR9ICkgewogICAgICAgICAgICAgICAgJUVycm9yID0gKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICAgICAgQXR0YWNobWVudHMgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBuZXcgZmFxIGFydGljbGUKICAgICAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRVXBkYXRlKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGVycm9yIGlmIGZhcSBjb3VsZCBub3QgYmUgdXBkYXRlZAogICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIGZyb20gdXBsb2FkIGNhY2hlCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGEgbG9va3VwIGxvb2t1cCBoYXNoIG9mIHRoZSBuZXcgYXR0YWNobWVudHMKICAgICAgICBteSAlTmV3QXR0YWNobWVudDsKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyB0aGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlCiAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfQogICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfQogICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfTsKCiAgICAgICAgICAgICMgYXBwZW5kIGNvbnRlbnQgaWQgaWYgYXZhaWxhYmxlIChmb3IgbmV3IGlubGluZSBpbWFnZXMpCiAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICkgewogICAgICAgICAgICAgICAgJEtleSAuPSAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3RvcmUgYWxsIG9mIHRoZSBuZXcgYXR0YWNobWVudCBkYXRhCiAgICAgICAgICAgICROZXdBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnQ7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMsIHdpdGhvdXQgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgU2hvd0lubGluZSA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIHRoZSBleGlzdGluZyBhdHRhY2htZW50cwogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChARXhpc3RpbmdBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyB0aGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlCiAgICAgICAgICAgICMgKG5vIGNvbnRlbnQgaWQsIGFzIGV4aXN0aW5nIGF0dGFjaG1lbnRzIGRvbid0IGhhdmUgaXQpCiAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfQogICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfQogICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfTsKCiAgICAgICAgICAgICMgYXR0YWNobWVudCBpcyBhbHJlYWR5IGV4aXN0aW5nLCB3ZSBjYW4gZGVsZXRlIGl0IGZyb20gdGhlIG5ldyBhdHRhY2htZW50IGhhc2gKICAgICAgICAgICAgaWYgKCAkTmV3QXR0YWNobWVudHskS2V5fSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkTmV3QXR0YWNobWVudHskS2V5fTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBleGlzdGluZyBhdHRhY2htZW50IGlzIG5vIGxvbmdlciBpbiBuZXcgYXR0YWNobWVudHMgaGFzaAogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSB0aGUgZXhpc3RpbmcgYXR0YWNobWVudAogICAgICAgICAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3NmdWwgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudC0+e0ZpbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgICAgICAgICAgaWYgKCAhJERlbGV0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHdyaXRlIHRoZSBuZXcgYXR0YWNobWVudHMKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIHZhbHVlcyAlTmV3QXR0YWNobWVudCApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgYXR0YWNobWVudCBpcyBhbiBpbmxpbmUgYXR0YWNobWVudAogICAgICAgICAgICBteSAkSW5saW5lID0gMDsKICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gKSB7CgogICAgICAgICAgICAgICAgIyByZW1lbWJlciB0aGF0IGl0IGlzIGlubGluZQogICAgICAgICAgICAgICAgJElubGluZSA9IDE7CgogICAgICAgICAgICAgICAgIyByZW1lbWJlciBpZiB0aGlzIGlubGluZSBhdHRhY2htZW50IGlzIHVzZWQgaW4gYW55IGZhcSBhcnRpY2xlCiAgICAgICAgICAgICAgICBteSAkQ29udGVudElERm91bmQ7CgogICAgICAgICAgICAgICAgIyBjaGVjayBhbGwgZmllbGRzIGZvciBjb250ZW50IGlkCiAgICAgICAgICAgICAgICBGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBmYXEgZmllbGQKICAgICAgICAgICAgICAgICAgICBteSAkRmllbGQgPSAkR2V0UGFyYW17ICdGaWVsZCcgLiAkTnVtYmVyIH07CgogICAgICAgICAgICAgICAgICAgICMgc2tpcCBlbXB0eSBmaWVsZHMKICAgICAgICAgICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGQ7CgogICAgICAgICAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgdGhhdCBkbyBub3QgY29udGFpbiB0aGUgY29udGVudCBpZAogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgJEZpZWxkICF+IG17ICRBdHRhY2htZW50LT57Q29udGVudElEfSB9eG1zOwoKICAgICAgICAgICAgICAgICAgICAjIGZvdW5kIHRoZSBjb250ZW50IGlkCiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJREZvdW5kID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZnVydGhlcgogICAgICAgICAgICAgICAgICAgIGxhc3QgRklFTEQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCB0byBrZWVwIHRoaXMgYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgcmljaHQgdGV4dCBlZGl0b3IKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJENvbnRlbnRJREZvdW5kOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICRGaWxlSUQgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIElubGluZSA9PiAkSW5saW5lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgaWYgKCAhJEZpbGVJRCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkSW5saW5lOwogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jyb3dzZXJSaWNoVGV4dH07CgogICAgICAgICAgICAjIHJld3JpdGUgdGhlIFVSTHMgb2YgdGhlIGlubGluZSBpbWFnZXMgZm9yIHRoZSB1cGxvYWRlZCBwaWN0dXJlcwogICAgICAgICAgICBteSAkT2sgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50LAogICAgICAgICAgICAgICAgRm9ybUlEICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgRmlsZUlEICAgICA9PiAkRmlsZUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgIGlmICggISRPayApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgdGhlIGlubGluZSBpbWFnZSBVUkxzICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiZm9yIEZBUSBJdGVtIyAnJEdldFBhcmFte0l0ZW1JRH0nISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgdXBsb2FkIGNhY2hlCiAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoZU9iamVjdH0tPkZvcm1JRFJlbW92ZSggRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSApOwoKICAgICAgICAjIHJlbG9hZCB0aGUgcGFyZW50IHdpbmRvdyBhbmQgY2xvc2UgcG9wdXAKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Qb3B1cENsb3NlKAogICAgICAgICAgICBVUkwgPT4gIkFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRHZXRQYXJhbXtJdGVtSUR9IiwKICAgICAgICApOwogICAgfQp9CgpzdWIgX01hc2tOZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ICAgICAgICA9ICRTZWxmLT57VmFsaWRPYmplY3R9LT5WYWxpZExpc3QoKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgIG15ICVEYXRhOwoKICAgICMgYnVpbGQgdmFsaWQgc2VsZWN0aW9uCiAgICAkRGF0YXtWYWxpZE9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VmFsaWRJRH0gfHwgJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgKTsKCiAgICAjIGdldCBjYXRlZ29yaWVzICh3aXRoIGNhdGVnb3J5IGxvbmcgbmFtZXMpIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNldCBubyBzZXJ2ZXIgZXJyb3IgY2xhc3MgYXMgZGVmYXVsdAogICAgJFBhcmFte0NhdGVnb3J5SURTZXJ2ZXJFcnJvcn0gfHw9ICcnOwoKICAgICMgYnVpbGQgY2F0ZWdvcnkgc2VsZWN0aW9uCiAgICAkRGF0YXtDYXRlZ29yeU9wdGlvbn0gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeUlEJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgJyAuICRQYXJhbXtDYXRlZ29yeUlEU2VydmVyRXJyb3J9LAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGFuZ3VhZ2UgbGlzdAogICAgbXkgJUxhbmd1YWdlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBzZWxlY3RlZCBsYW5ndWFnZQogICAgbXkgJFNlbGVjdGVkTGFuZ3VhZ2U7CiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEfSAmJiAkTGFuZ3VhZ2VzeyAkUGFyYW17TGFuZ3VhZ2VJRH0gfSApIHsKCiAgICAgICAgIyBnZXQgbGFuZ3VhZ2UgZnJvbSBnaXZlbiBsYW5ndWFnZSBpZAogICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExhbmd1YWdlc3sgJFBhcmFte0xhbmd1YWdlSUR9IH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyB1c2UgdGhlIHVzZXIgbGFuZ3VhZ2UsIG9yIGlmIG5vdCBmb3VuZCAnZW4nCiAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2UgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyTGFuZ3VhZ2V9IHx8ICdlbic7CgogICAgICAgICMgZ2V0IHVzZXIgbGFuZ3VhZ2UgSUQKICAgICAgICBteSAkU2VsZWN0ZWRMYW5ndWFnZUlEID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxvb2t1cCggTmFtZSA9PiAkU2VsZWN0ZWRMYW5ndWFnZSApOwoKICAgICAgICAjIGNoZWNrIGlmIExhbmR1YWdlSUQgZG9lcyBub3QgZXhzaXRzCiAgICAgICAgaWYgKCAhJFNlbGVjdGVkTGFuZ3VhZ2VJRCApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBsb3dlc3QgbGFuZ3VhZ2UgSUQKICAgICAgICAgICAgbXkgQExhbmd1YWdlSURzID0gc29ydCBrZXlzICVMYW5ndWFnZXM7CiAgICAgICAgICAgICRTZWxlY3RlZExhbmd1YWdlSUQgPSAkTGFuZ3VhZ2VJRHNbMF07CgogICAgICAgICAgICAjIHNldCB0aGUgbGFuZ3VhZ2Ugd2l0aCBsb3dlc3QgbGFuZ3VhZ2UgSUQgYXMgc2VsZWN0ZWQgbGFuZ3VhZ2UKICAgICAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2UgPSAkTGFuZ3VhZ2VzeyRTZWxlY3RlZExhbmd1YWdlSUR9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIHRoZSBsYW5ndWFnZSBzZWxlY3Rpb24KICAgICREYXRhe0xhbmd1YWdlT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdMYW5ndWFnZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZExhbmd1YWdlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMCwKICAgICk7CgogICAgIyBnZXQgdGhlIHN0YXRlcyBsaXN0CiAgICBteSAlU3RhdGVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIHNlbGVjdGVkIHN0YXRlCiAgICBteSAkU2VsZWN0ZWRTdGF0ZTsKICAgIGlmICggJFBhcmFte1N0YXRlSUR9ICYmICRTdGF0ZXN7ICRQYXJhbXtTdGF0ZUlEfSB9ICkgewoKICAgICAgICAjIGdldCBzdGF0ZSBmcm9tIGdpdmVuIHN0YXRlIGlkCiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkU3RhdGVzeyAkUGFyYW17U3RhdGVJRH0gfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGdldCBkZWZhdWx0IHN0YXRlCiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpEZWZhdWx0OjpTdGF0ZScpIHx8ICdpbnRlcm5hbCAoYWdlbnQpJzsKICAgIH0KCiAgICAjIGJ1aWxkIHRoZSBzdGF0ZSBzZWxlY3Rpb24KICAgICREYXRhe1N0YXRlT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVN0YXRlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdTdGF0ZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZFN0YXRlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMSwKICAgICk7CgogICAgIyBzaG93IGZhcSBlZGl0IHNjcmVlbgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFFZGl0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlRGF0YSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIGZpZWxkCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBhcHByb3ZhbCBmaWVsZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBmYXEgYXBwcm92YWwgZ3JvdXAgZnJvbSBjb25maWcKICAgICAgICBteSAkQXBwcm92YWxHcm91cCA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsR3JvdXAnKSB8fCAnJzsKCiAgICAgICAgIyBidWlsZCB0aGUgYXBwcm92YWwgc2VsZWN0aW9uIGlmIHVzZXIgaXMgaW4gdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgaWYgKCAkR3JvdXBzeyRBcHByb3ZhbEdyb3VwfSApIHsKCiAgICAgICAgICAgICREYXRhe0FwcHJvdmFsT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBcHByb3ZlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAwID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgMSA9PiAnWWVzJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtBcHByb3ZlZH0gfHwgMCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FwcHJvdmFsJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IHRoZSBhdHRhY2htZW50IHVwbG9hZCBidXR0b24KICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFVwbG9hZCcsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBzaG93IGF0dGFjaG1lbnRzCiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnRzfSB9ICkgewoKICAgICAgICAjIGRvIG5vdCBzaG93IGlubGluZSBpbWFnZXMgYXMgYXR0YWNobWVudHMKICAgICAgICAjICh0aGV5IGhhdmUgYSBjb250ZW50IGlkKQogICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICYmICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnQnLAogICAgICAgICAgICBEYXRhID0+ICRBdHRhY2htZW50LAogICAgICAgICk7CiAgICB9CgogICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvciBqYXZhc2NyaXB0CiAgICAjIG9ubHkgaWYgYWN0aXZhdGVkIGFuZCB0aGUgYnJvd3NlciBjYW4gaGFuZGxlIGl0CiAgICAjIG90aGVyd2lzZSBqdXN0IGEgdGV4dGFyZWEgaXMgc2hvd24KICAgIGlmICggJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dCcsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFFZGl0JywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QgVXNlck9iamVjdCBHcm91cE9iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+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+ICdDYXRlZ29yeUlEJyApIHx8IDA7CgogICAgIyBjaGVjayBmb3Igbm9uIG51bWVyaWMgQ2F0ZWdvcnlJRAogICAgaWYgKCAkQ2F0ZWdvcnlJRCAhfiAvXGQrLyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRCA9IDA7CiAgICB9CgogICAgIyBnZXQgbmF2aWdhdGlvbiBiYXIgb3B0aW9uCiAgICBteSAkTmF2ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnTmF2JyApIHx8ICcnOwoKICAgICMgc2F2ZSBjYXRlZ29yeSBpZCB0byBzZXNzaW9uLCB0byBiZSB1c2VkIGluIEZBUSBhZGQgc2NyZWVuCiAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RWaWV3ZWRDYXRlZ29yeScsCiAgICAgICAgVmFsdWUgICAgID0+ICRDYXRlZ29yeUlELAogICAgKTsKCiAgICAjIHN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuIChmb3IgYmFjayBtZW51IGFjdGlvbikKICAgICMgYnV0IG9ubHkgaWYgdGhlIEZBUSBleHBsb3JlciBpcyBub3Qgc2hvd24gYXMgb3ZlcmxheQogICAgaWYgKCAhJE5hdiB8fCAkTmF2IG5lICdOb25lJyApIHsKCiAgICAgICAgbXkgJFVSTCA9ICJBY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtTb3J0Qnk9JFNlbGYtPntTb3J0Qnl9IgogICAgICAgICAgICAuICI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRDtOYXY9JE5hdiIKICAgICAgICAgICAgLiAiO09yZGVyQnk9JFNlbGYtPntPcmRlckJ5fTtTdGFydEhpdD0kU2VsZi0+e1N0YXJ0SGl0fSI7CiAgICAgICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRyeSB0byBnZXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgIG15ICVDYXRlZ29yeURhdGE7CiAgICBpZiAoJENhdGVnb3J5SUQpIHsKCiAgICAgICAgIyBnZXQgY2F0ZWdvcnkgZGF0YQogICAgICAgICVDYXRlZ29yeURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISVDYXRlZ29yeURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiVGhlIENhdGVnb3J5SUQgJENhdGVnb3J5SUQgaXMgaW52YWxpZC4iLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHVzZXIgcGVybWlzc2lvbgogICAgICAgIG15ICRQZXJtaXNzaW9uID0gJFNlbGYtPntGQVFPYmplY3R9LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICAgICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJywKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQ7CiAgICBpZiAoICROYXYgJiYgJE5hdiBlcSAnTm9uZScgKSB7CgogICAgICAgICMgb3V0cHV0IGhlYWRlciBzbWFsbCBhbmQgbm8gTmF2YmFyCiAgICAgICAgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIG91dHB1dCBoZWFkZXIgYW5kIG5hdmlnYXRpb24gYmFyCiAgICAgICAgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKICAgIH0KCiAgICAjIHNob3cgRkFRIHBhdGgKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRUGF0aFNob3coCiAgICAgICAgRkFRT2JqZWN0ICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBOYXYgICAgICAgID0+ICROYXYsCiAgICApOwoKICAgICMgZ2V0IGFsbCBkaXJlY3Qgc3ViY2F0ZWdvcmllcyBvZiB0aGUgc2VsZWN0ZWQgY2F0ZWdvcnkKICAgIG15ICRDYXRlZ29yeUlEc1JlZiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QWdlbnRDYXRlZ29yeVNlYXJjaCgKICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBzdWJjYXRlZ29yaWVzIGxpc3QKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ1N1YmNhdGVnb3JpZXMnICk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdPdmVydmlld1Jlc3VsdCcgKTsKCiAgICAjIGNoZWNrIGlmIHRoZXJlIGFyZSBzdWJjYXRlZ29yaWVzCiAgICBpZiAoICRDYXRlZ29yeUlEc1JlZiAmJiByZWYgJENhdGVnb3J5SURzUmVmIGVxICdBUlJBWScgJiYgQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAjIHNob3cgZGF0YSBmb3IgZWFjaCBzdWJjYXRlZ29yeQogICAgICAgIGZvciBteSAkU3ViQ2F0ZWdvcnlJRCAoIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgIG15ICVTdWJDYXRlZ29yeURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBzdWJjYXRlZ29yaWVzIG9mIHRoaXMgc3ViY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtTdWJDYXRlZ29yeUNvdW50fSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlDb3VudCgKICAgICAgICAgICAgICAgIFBhcmVudElEcyA9PiBbJFN1YkNhdGVnb3J5SURdLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBudW1iZXIgb2YgZmFxIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtBcnRpY2xlQ291bnR9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFDb3VudCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SURzICA9PiBbJFN1YkNhdGVnb3J5SURdLAogICAgICAgICAgICAgICAgSXRlbVN0YXRlcyAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIE9ubHlBcHByb3ZlZCA9PiAwLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYXYgPT4gJE5hdiwKICAgICAgICAgICAgICAgICAgICAlU3ViQ2F0ZWdvcnlEYXRhLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlYXJjaCBhbGwgRkFRIGFydGljbGVzIHdpdGhpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyAkU2VsZi0+e1NvcnRCeX0gXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJFNlbGYtPntPcmRlckJ5fSBdLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICA9PiBbJENhdGVnb3J5SURdLAogICAgKTsKCiAgICAjIGJ1aWxkIG5lY2Nlc3Nhcnkgc3R1ZmYgZm9yIHRoZSBGQVEgYXJ0aWNsZSBsaXN0CiAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAuICc7Vmlldz0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1ZpZXd9ICkKICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgLiAnO1NvcnRCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1NvcnRCeX0gKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57T3JkZXJCeX0gKQogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwogICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57RmlsdGVyfSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntWaWV3fSApCiAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwogICAgbXkgJEZpbHRlckxpbmsgPSAnU29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntWaWV3fSApCiAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwoKICAgICMgZmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24KICAgIG15IEBTaG93Q29sdW1uczsKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAjIGdldCBhbGwgcG9zc2libGUgY29sdW1ucyBmcm9tIGNvbmZpZwogICAgICAgIG15ICVQb3NzaWJsZUNvbHVtbiA9ICV7ICRTZWxmLT57Q29uZmlnfS0+e1Nob3dDb2x1bW5zfSB9OwoKICAgICAgICAjIGdldCB0aGUgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgQ09MVU1OTkFNRToKICAgICAgICBmb3IgbXkgJE5hbWUgKCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJE5hbWU7CiAgICAgICAgfQoKICAgICAgICAjIGVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2sKICAgICAgICBpZiAoICEkUG9zc2libGVDb2x1bW57J051bWJlcid9ICkgewogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgdGhlIHRpdGxlIHZhbHVlIChvbiB0b3Agb2YgdGhlIGFydGljbGUgbGlzdCkKICAgIG15ICRUaXRsZSA9ICRDYXRlZ29yeURhdGF7TmFtZX0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpEZWZhdWx0OjpSb290Q2F0ZWdvcnlOYW1lJykKICAgICAgICB8fCAnJzsKCiAgICAjIGJ1aWxkIHRoZSBodG1sIGZvciB0aGUgbGlzdCBvZiBGQVEgYXJ0aWNsZXMgaW4gdGhlIGdpdmVuIGNhdGVnb3J5CiAgICBteSAkRkFRSXRlbUxpc3RIVE1MID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFMaXN0U2hvdygKICAgICAgICBGQVFJRHMgICAgID0+IFxAVmlld2FibGVGQVFJRHMsCiAgICAgICAgVG90YWwgICAgICA9PiBzY2FsYXIgQFZpZXdhYmxlRkFRSURzLAogICAgICAgIFZpZXcgICAgICAgPT4gJFNlbGYtPntWaWV3fSwKICAgICAgICBFbnYgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgPT4gJExpbmtTb3J0LAogICAgICAgIExpbmtGaWx0ZXIgPT4gJEZpbHRlckxpbmssCgogICAgICAgIFRpdGxlTmFtZSAgPT4gJ0ZBUSBBcnRpY2xlcycsCiAgICAgICAgVGl0bGVWYWx1ZSA9PiAkVGl0bGUsCgogICAgICAgIExpbWl0ICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgIEZpbHRlciAgICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICBGaWx0ZXJMaW5rICA9PiAkRmlsdGVyTGluaywKICAgICAgICBPcmRlckJ5ICAgICA9PiAkU2VsZi0+e09yZGVyQnl9LAogICAgICAgIFNvcnRCeSAgICAgID0+ICRTZWxmLT57U29ydEJ5fSwKICAgICAgICBTaG93Q29sdW1ucyA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgIE91dHB1dCAgICAgID0+IDEsCiAgICAgICAgTmF2ICAgICAgICAgPT4gJE5hdiwKICAgICk7CgogICAgIyBzaG93IHRoZSBGQVEgYXJ0aWNsZSBsaXN0CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUUl0ZW1MaXN0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgRkFRSXRlbUxpc3RIVE1MID0+ICRGQVFJdGVtTGlzdEhUTUwsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzZXQgUXVpY2tTZWFyY2ggbW9kZQogICAgbXkgJE1vZGUgPSAnQWdlbnQnOwogICAgaWYgKCAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkTW9kZSA9ICdBZ2VudFNtYWxsJzsKICAgIH0KCiAgICAjIHNob3cgUXVpY2tTZWFyY2gKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRU2hvd1F1aWNrU2VhcmNoKAogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAkTW9kZSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJE5hdiwKICAgICk7CgogICAgbXkgJUluZm9Cb3hSZXN1bHRzOwoKICAgICMgc2hvdyBsYXN0IGFkZGVkIGFuZCBsYXN0IHVwZGF0ZWQgYXJ0aWNsZXMKICAgIGZvciBteSAkVHlwZSAocXcoTGFzdENyZWF0ZSBMYXN0Q2hhbmdlKSkgewoKICAgICAgICBteSAkU2hvd09rID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93TGF0ZXN0TmV3c0JveCgKICAgICAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICRUeXBlLAogICAgICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJE5hdiwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJFNob3dPayApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgc3RvcmUgdGhlIE5ld3NCb3hSZXN1bHQKICAgICAgICAkSW5mb0JveFJlc3VsdHN7JFR5cGV9ID0gJFNob3dPazsKCiAgICB9CgogICAgIyBzaG93IHRvcCB0ZW4gYXJ0aWNsZXMKICAgIG15ICRTaG93T2sgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVNob3dUb3AxMCgKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnQWdlbnQnLAogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJE5hdiwKICAgICk7CgogICAgIyBjaGVjayBlcnJvcgogICAgaWYgKCAhJFNob3dPayApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgc3RvcmUgdGhlIE5ld3NCb3hSZXN1bHQKICAgICRJbmZvQm94UmVzdWx0c3tUb3AxMH0gPSAkU2hvd09rOwoKICAgICMgc2V0IHRoZSBTaWRlYmFyIHdpZHRoCiAgICBteSAkU2lkZWJhckNsYXNzID0gJ0xhcmdlJzsKCiAgICAjIGNoZWNrIGlmIGFsbCBJbmZvQm94ZXMgYXJlIGVtcHR5IGFuZCBoaWRlIHRoZSBTaWRlYmFyCiAgICBpZiAoCiAgICAgICAgJEluZm9Cb3hSZXN1bHRze0xhc3RDcmVhdGV9IGVxIC0xCiAgICAgICAgJiYgJEluZm9Cb3hSZXN1bHRze0xhc3RDaGFuZ2V9IGVxIC0xCiAgICAgICAgJiYgJEluZm9Cb3hSZXN1bHRze1RvcDEwfSBlcSAtMQogICAgICAgICkKICAgIHsKICAgICAgICAkU2lkZWJhckNsYXNzID0gJ0hpZGRlbic7CiAgICB9CgogICAgaWYgKCAkTmF2ICYmICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRTaWRlYmFyQ2xhc3MgPSAnTWVkaXVtJzsKICAgIH0KCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRRXhwbG9yZXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBTaWRlYmFyQ2xhc3MgPT4gJFNpZGViYXJDbGFzcywKICAgICAgICAgICAgJUNhdGVnb3J5RGF0YSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKICAgIH0KCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFIaXN0b3J5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IFVzZXJPYmplY3QgR3JvdXBPYmplY3QgQ29uZmlnT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgbmVlZGVkIEl0ZW0gaWQKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNhbid0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISIsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgIG15ICRQZXJtaXNzaW9uID0gJFNlbGYtPntGQVFPYmplY3R9LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGFydGljbGUgaGlzdG9yeQogICAgbXkgJEhpc3RvcnkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUhpc3RvcnlHZXQoCiAgICAgICAgSXRlbUlEID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgZm9yIG15ICRIaXN0b3J5RW50cnkgKCBAeyRIaXN0b3J5fSApIHsKCiAgICAgICAgIyByZXBsYWNlIElEIHRvIGZ1bGwgdXNlciBuYW1lIG9uIENyZWF0ZWRCeSBrZXkKICAgICAgICBteSAlVXNlciA9ICRTZWxmLT57VXNlck9iamVjdH0tPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJEhpc3RvcnlFbnRyeS0+e0NyZWF0ZWRCeX0sCiAgICAgICAgICAgIENhY2hlZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEhpc3RvcnlFbnRyeS0+e0NyZWF0ZWRCeX0gPSAiJFVzZXJ7VXNlckxvZ2lufSAoJFVzZXJ7VXNlckZpcnN0bmFtZX0gJFVzZXJ7VXNlckxhc3RuYW1lfSkiOwoKICAgICAgICAjIGNhbGwgUm93IGJsb2NrCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAleyRIaXN0b3J5RW50cnl9LAogICAgICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoCiAgICAgICAgVHlwZSAgPT4gJ1NtYWxsJywKICAgICAgICBUaXRsZSA9PiAnRkFRSGlzdG9yeScsCiAgICApOwoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFIaXN0b3J5JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFKb3VybmFsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0IEVuY29kZU9iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIGZvciBmcm9udGVuZAogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSA9IGludCggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgJFNlbGYtPntKb3VybmFsTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57Sm91cm5hbExpbWl0fSB8fCA1MDA7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEpvdXJuYWwgZW50cmllcwogICAgbXkgJEpvdXJuYWwgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkhpc3RvcnlHZXQoIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0gKTsKCiAgICAjIGZpbmQgb3V0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHNob3duCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgIyBnZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICgga2V5cyAlUG9zc2libGVDb2x1bW4gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFBvc3NpYmxlQ29sdW1ueyROYW1lfTsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgIH0KCiAgICAgICAgIyBlbmZvcmNlIEZBUSBudW1iZXIgY29sdW1uIHNpbmNlIGlzIHRoZSBsaW5rIE1hc3RlckFjdGlvbiBob29rCiAgICAgICAgaWYgKCAhJFBvc3NpYmxlQ29sdW1ueydOdW1iZXInfSApIHsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICdOdW1iZXInOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigKICAgICAgICBWYWx1ZSA9PiAnRkFRIEpvdXJuYWwnLAogICAgKTsKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBvdXRvdXQgSm91cm5hbAogICAgJE91dHB1dCAuPSAkU2VsZi0+X0ZBUUpvdXJuYWxTaG93KAogICAgICAgIEpvdXJuYWwgICAgID0+ICRKb3VybmFsLAogICAgICAgIFRvdGFsICAgICAgID0+IHNjYWxhciBAeyRKb3VybmFsfSwKICAgICAgICBUaXRsZU5hbWUgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnRkFRIEpvdXJuYWwnKSwKICAgICAgICBMaW1pdCAgICAgICA9PiAkU2VsZi0+e0pvdXJuYWxMaW1pdH0sCiAgICAgICAgU2hvd0NvbHVtbnMgPT4gXEBTaG93Q29sdW1ucywKICAgICk7CgogICAgIyBidWlsZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9GQVFKb3VybmFsU2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFBhcmFte1ZpZXd9ICYmICRTZWxmLT57ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGZyb250ZW5kCiAgICBteSAkRnJvbnRlbmQgPSAnQWdlbnQnOwoKICAgICMgc2V0IGRlZmF1dCB2aWV3IG1vZGUgdG8gJ3NtYWxsJwogICAgbXkgJFZpZXcgPSAkUGFyYW17Vmlld30gfHwgJ1NtYWxsJzsKCiAgICAjIHN0b3JlIGxhdGVzdCB2aWV3IG1vZGUKICAgICRTZWxmLT57U2Vzc2lvbk9iamVjdH0tPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnVXNlckZBUUpvdXJuYWxPdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgKTsKCiAgICAjIGdldCBiYWNrZW5kIGZyb20gY29uZmlnCiAgICBteSAkQmFja2VuZHMgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGcm9udGVuZDo6Sm91cm5hbE92ZXJ2aWV3Jyk7CiAgICBpZiAoICEkQmFja2VuZHMgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JywKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGhhc2gtcmVmCiAgICBpZiAoIHJlZiAkQmFja2VuZHMgbmUgJ0hBU0gnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgY29uZmlnIGtleQogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIk5vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICckVmlldychIiwKICAgICAgICApOwogICAgfQoKICAgICMgbmF2IGJhcgogICAgbXkgJFN0YXJ0SGl0ID0gaW50KCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CgogICAgIyBnZXQgcGVyc29uYWwgcGFnZSBzaG93biBjb3VudAogICAgbXkgJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5ID0gJ1VzZXJGQVFKb3VybmFsT3ZlcnZpZXcnIC4gJFZpZXcgLiAnUGFnZVNob3duJzsKICAgIG15ICRQYWdlU2hvd24gICAgICAgICAgICAgICA9ICRTZWxmLT57JFBhZ2VTaG93blByZWZlcmVuY2VzS2V5fSB8fCAxMDsKICAgIG15ICRHcm91cCAgICAgICAgICAgICAgICAgICA9ICdGQVFKb3VybmFsT3ZlcnZpZXcnIC4gJFZpZXcgLiAnUGFnZVNob3duJzsKCiAgICAjIGNoZWNrIHN0YXJ0IG9wdGlvbiwgaWYgaGlnaGVyIHRoZW4gZWxlbWVudHMgYXZhaWxhYmxlLCBzZXQKICAgICMgaXQgdG8gdGhlIGxhc3Qgb3ZlcnZpZXcgcGFnZSAoVGhhbmtzIHRvIFN0ZWZhbiBTY2htaWR0ISkKICAgIGlmICggJFN0YXJ0SGl0ID4gJFBhcmFte1RvdGFsfSApIHsKICAgICAgICBteSAkUGFnZXMgPSBpbnQoICggJFBhcmFte1RvdGFsfSAvICRQYWdlU2hvd24gKSArIDAuOTk5OTkgKTsKICAgICAgICAkU3RhcnRIaXQgPSAoICggJFBhZ2VzIC0gMSApICogJFBhZ2VTaG93biApICsgMTsKICAgIH0KCiAgICAjIGdldCBkYXRhIHNlbGVjdGlvbgogICAgbXkgJURhdGE7CiAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1ByZWZlcmVuY2VzR3JvdXBzJyk7CiAgICBpZiAoICRDb25maWcgJiYgJENvbmZpZy0+eyRHcm91cH0gJiYgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSApIHsKICAgICAgICAlRGF0YSA9ICV7ICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gfTsKICAgIH0KCiAgICAjIHNldCBwYWdlIGxpbWl0IGFuZCBidWlsZCBwYWdlIG5hdgogICAgbXkgJExpbWl0ID0gJFBhcmFte0xpbWl0fSB8fCAyMF8wMDA7CiAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biBmYXEgYXJ0aWNsZXMgb24gYSBwYWdlCiAgICAkUGFyYW17UmVxdWVzdGVkVVJMfSAgICA9ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IjsKICAgICRQYXJhbXtHcm91cH0gICAgICAgICAgID0gJEdyb3VwOwogICAgJFBhcmFte1ByZWZlcmVuY2VzS2V5fSAgPSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXk7CiAgICAkUGFyYW17UGFnZVNob3duU3RyaW5nfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICA9PiAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXksCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFnZVNob3duLAogICAgICAgIERhdGEgICAgICAgPT4gXCVEYXRhLAogICAgKTsKCiAgICAjIHN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuIChmb3IgYmFjayBtZW51IGFjdGlvbikKICAgICRTZWxmLT57U2Vzc2lvbk9iamVjdH0tPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFBhcmFte1JlcXVlc3RlZFVSTH0sCiAgICApOwogICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuVmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRQYXJhbXtSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICAjIGJ1aWxkIG5hdmJhciBjb250ZW50CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgbG9vcCBvdmVyIGNvbmZpZ3VyZWQgYmFja2VuZHMKICAgIGZvciBteSAkQmFja2VuZCAoIGtleXMgJXskQmFja2VuZHN9ICkgewoKICAgICAgICAjIGJ1aWxkIG5hdmJhciB2aWV3IG1vZGUKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGN1cnJlbnQgdmlldyBpcyBjb25maWd1cmVkIGluIGJhY2tlbmQKICAgICAgICBpZiAoICRWaWV3IGVxICRCYWNrZW5kICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHBhZ2UgbmF2IGlzIGF2YWlsYWJsZQogICAgaWYgKCVQYWdlTmF2KSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhZ2VOYXYsCiAgICAgICAgKTsKCiAgICAgICAgIyBkb24ndCBzaG93IGNvbnRleHQgc2V0dGluZ3MgaW4gQUpBWCBjYXNlIChlLiBnLiBpbiBjdXN0b21lciBGQVEgaGlzdG9yeSksCiAgICAgICAgIyBiZWNhdXNlIHRoZSBzdWJtaXQgd2l0aCBwYWdlIHJlbG9hZCB3aWxsIG5vdCB3b3JrIHRoZXJlCiAgICAgICAgaWYgKCAhJFBhcmFte0FKQVh9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgaHRtbCBjb250ZW50CiAgICBteSAkT3V0cHV0TmF2QmFyID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgY3JlYXRlIG91dHB1dAogICAgbXkgJE91dHB1dFJhdyAuPSAkT3V0cHV0TmF2QmFyOwoKICAgICMgbG9hZCBtb2R1bGUKICAgIGlmICggISRTZWxmLT57TWFpbk9iamVjdH0tPlJlcXVpcmUoICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgYmFja2VuZCBvYmplY3QKICAgIG15ICRPYmplY3QgPSAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9LT5uZXcoICV7JFNlbGZ9ICk7CiAgICByZXR1cm4gaWYgISRPYmplY3Q7CgogICAgIyBydW4gbW9kdWxlCiAgICBteSAkT3V0cHV0ID0gJE9iamVjdC0+UnVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBGcm9udGVuZCAgPT4gJEZyb250ZW5kLAogICAgKTsKCiAgICAkT3V0cHV0UmF3IC49ICRPdXRwdXQ7CgogICAgIyBjcmVhdGUgb3ZlcnZpZXcgbmF2IGJhcgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyByZXR1cm4gY29udGVudCBpZiBhdmFpbGFibGUKICAgIHJldHVybiAkT3V0cHV0UmF3Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFMYW5ndWFnZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJUdldFBhcmFtOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2hhbmdlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2hhbmdlJyAmJiAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewoKICAgICAgICAjIGdldCB0aGUgTGFuZ3VhZ2VJRAogICAgICAgIG15ICRMYW5ndWFnZUlEID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFuZ3VhZ2VJRCcgKSB8fCAnJzsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgaWYgKCAhJExhbmd1YWdlSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGxhbmd1YWdlIGRhdGEKICAgICAgICBteSAlTGFuZ3VhZ2VEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUdldCgKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIG91dHB1dCBjaGFuZ2UgbGFuZ3VhZ2Ugc2NyZWVuCiAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICVMYW5ndWFnZURhdGEsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2hhbmdlIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZUFjdGlvbicgJiYgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgY2hlY2sgZm9yIG5hbWUgYW5kIGxhbmd1YWdlIGlkCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KExhbmd1YWdlSUQgTmFtZSkpIHsKCiAgICAgICAgICAgICMgc3RvcmUgbmVlZGVkIHBhcmFtZXRlcnMgaW4gJUdldFBhcmFtIHRvIG1ha2UgaXQgcmVsb2FkYWJsZQogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKCiAgICAgICAgICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgICA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3IgICAgICAgID0+ICdTZXJ2ZXJFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTmFtZVNlcnZlckVycm9yTWVzc2FnZSA9PiAnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJywKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBkdXBsaWNhdGUgbGFuZ3VhZ2UgbmFtZQogICAgICAgIG15ICRMYW5ndWFnZUV4aXN0c0FscmVhZHkgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlRHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJEdldFBhcmFte05hbWV9LAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRHZXRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHRoZSBlZGl0IHNjcmVlbiBhZ2FpbgogICAgICAgIGlmICgkTGFuZ3VhZ2VFeGlzdHNBbHJlYWR5KSB7CgogICAgICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3IgICAgICAgID0+ICdTZXJ2ZXJFcnJvcicsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3JNZXNzYWdlID0+ICdUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzIScsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBsYW5ndWFnZQogICAgICAgIG15ICRMYW5ndWFnZVVwZGF0ZVN1Y2Nlc3NmdWwgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlVXBkYXRlKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRMYW5ndWFnZVVwZGF0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgb3ZlcnZpZXcKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vdGlmeSgKICAgICAgICAgICAgSW5mbyA9PiAnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJywKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFkZAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZCcgJiYgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIG5ldyBuYW1lCiAgICAgICAgJEdldFBhcmFte05hbWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZScgKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICBBY3Rpb24gPT4gJ0FkZCcsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgYWRkIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZEFjdGlvbicgJiYgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgZ2V0IHRoZSBuYW1lCiAgICAgICAgJEdldFBhcmFte05hbWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZScgKTsKCiAgICAgICAgIyBjaGVjayBmb3IgbmFtZQogICAgICAgIGlmICggISRHZXRQYXJhbXtOYW1lfSApIHsKCiAgICAgICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgICA9PiAnQWRkJywKICAgICAgICAgICAgICAgIE5hbWVTZXJ2ZXJFcnJvciAgICAgICAgPT4gJ1NlcnZlckVycm9yJywKICAgICAgICAgICAgICAgIE5hbWVTZXJ2ZXJFcnJvck1lc3NhZ2UgPT4gJ1RoZSBuYW1lIGlzIHJlcXVpcmVkIScsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGR1cGxpY2F0ZSBsYW5ndWFnZSBuYW1lCiAgICAgICAgbXkgJExhbmd1YWdlRXhpc3RzQWxyZWFkeSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VEdXBsaWNhdGVDaGVjaygKICAgICAgICAgICAgTmFtZSAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgdGhlIGVkaXQgc2NyZWVuIGFnYWluCiAgICAgICAgaWYgKCRMYW5ndWFnZUV4aXN0c0FscmVhZHkpIHsKICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgICA9PiAnQWRkJywKICAgICAgICAgICAgICAgIE5hbWVTZXJ2ZXJFcnJvciAgICAgICAgPT4gJ1NlcnZlckVycm9yJywKICAgICAgICAgICAgICAgIE5hbWVTZXJ2ZXJFcnJvck1lc3NhZ2UgPT4gIlRoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhIiwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgdGhlIG5ldyBsYW5ndWFnZQogICAgICAgIG15ICRMYW5ndWFnZUFkZFN1Y2Nlc3NmdWwgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlQWRkKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRMYW5ndWFnZUFkZFN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgb3ZlcnZpZXcKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm90aWZ5KAogICAgICAgICAgICBJbmZvID0+ICdGQVEgbGFuZ3VhZ2UgYWRkZWQhJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5fT3ZlcnZpZXcoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGRlbGV0ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZScgJiYgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIExhbmd1YWdlSUQKICAgICAgICBteSAkTGFuZ3VhZ2VJRCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhbmd1YWdlSUQnICkgfHwgJyc7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRMYW5ndWFnZUlEICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsYW5ndWFnZSBkYXRhCiAgICAgICAgbXkgJUxhbmd1YWdlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVMYW5ndWFnZURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICBteSBAQWZmZWN0ZWRJdGVtcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICAgICBMYW5ndWFnZUlEcyA9PiBbJExhbmd1YWdlSURdLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgY2FsbCBEZWxldGUgYmxvY2sKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEZWxldGUnLAogICAgICAgICAgICBEYXRhID0+IHslTGFuZ3VhZ2VEYXRhfSwKICAgICAgICApOwoKICAgICAgICAjIHNldCB0aGUgZGlhbG9nIHR5cGUuIEFzIGRlZmF1bHQsIHRoZSBkaWFsb2cgd2lsbCBoYXZlIDIgYnV0dG9uczogWWVzIGFuZCBObwogICAgICAgIG15ICREaWFsb2dUeXBlID0gJ0NvbmZpcm1hdGlvbic7CgogICAgICAgICMgZGlzcGxheSBsaXN0IG9mIGFmZmVjdGVkIEZBUSBhcnRpY2xlcwogICAgICAgIGlmIChAQWZmZWN0ZWRJdGVtcykgewoKICAgICAgICAgICAgIyBzZXQgdGhlIGRpYWxvZyB0eXBlIHRvIGhhdmUgb25seSAxIGJ1dHRvbjogT2sKICAgICAgICAgICAgJERpYWxvZ1R5cGUgPSAnTWVzc2FnZSc7CgogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoQEFmZmVjdGVkSXRlbXMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmYXEgYXJ0aWNsZQogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZhcSBhcnRpY2xlCiAgICAgICAgICAgICAgICBuZXh0IElURU1JRCBpZiAhJUZBUURhdGE7CgogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBZmZlY3RlZEl0ZW1zUm93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vQWZmZWN0ZWRJdGVtcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslTGFuZ3VhZ2VEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgb3V0cHV0IGNvbnRlbnQKICAgICAgICBteSAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCB0aGUgcmV0dXJuZWQgZGF0YSBzdHJ1Y3R1cmUKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgSFRNTCAgICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBEaWFsb2dUeXBlID0+ICREaWFsb2dUeXBlLAogICAgICAgICk7CgogICAgICAgICMgcmV0dXJuIEpTT04tU3RyaW5nIGJlY2F1c2Ugb2YgQUpBWC1Nb2RlCiAgICAgICAgbXkgJE91dHB1dEpTT04gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkpTT05FbmNvZGUoIERhdGEgPT4gXCVEYXRhICk7CgogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBkZWxldGUgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyAmJiAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewoKICAgICAgICAjIGdldCB0aGUgTGFuZ3VhZ2VJRAogICAgICAgIG15ICRMYW5ndWFnZUlEID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFuZ3VhZ2VJRCcgKSB8fCAnJzsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgaWYgKCAhJExhbmd1YWdlSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGxhbmd1YWdlIGRhdGEKICAgICAgICBteSAlTGFuZ3VhZ2VEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUdldCgKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJUxhbmd1YWdlRGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRoZSBsYW5ndWFnZQogICAgICAgIG15ICRDb3VsZERlbGV0ZUxhbmd1YWdlID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZURlbGV0ZSgKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRDb3VsZERlbGV0ZUxhbmd1YWdlKSB7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIGV4cGxvcmVyLCB3aGVuIHRoZSBkZWxldGlvbiB3YXMgc3VjY2Vzc2Z1bAogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRGQVFMYW5ndWFnZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzaG93IGVycm9yIG1lc3NhZ2UsIHdoZW4gZGVsZXRlIGZhaWxlZAogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIldhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICRMYW5ndWFnZUlEISIsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBvdmVydmlldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2UgewoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBfRWRpdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uTGlzdCcgKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbk92ZXJ2aWV3JyApOwoKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdVcGRhdGUnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBzaG93cyBoZWFkZXIKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnSGVhZGVyRWRpdCcgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0hlYWRlckFkZCcgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9PdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQgPSAnJzsKCiAgICAjIG91dHB1dCBvdmVydmlldyBibG9ja3MKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ092ZXJ2aWV3JyApOwoKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdBY3Rpb25MaXN0JyApOwogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkFkZCcgKTsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdPdmVydmlld1Jlc3VsdCcgKTsKCiAgICAgICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgICAgICBteSAlTGFuZ3VhZ2VzID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiB0aGVyZSBhcmUgYW55IGxhbmd1YWdlcywgdGhleSBhcmUgc2hvd24KICAgICAgICBpZiAoJUxhbmd1YWdlcykgewogICAgICAgICAgICBmb3IgbXkgJExhbmd1YWdlSUQgKCBzb3J0IHsgJExhbmd1YWdlc3skYX0gY21wICRMYW5ndWFnZXN7JGJ9IH0ga2V5cyAlTGFuZ3VhZ2VzICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGxhbmd1YWdlcyByZXN1bHQKICAgICAgICAgICAgICAgIG15ICVMYW5ndWFnZURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlR2V0KAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICNvdXRwdXQgcmVzdWx0cwogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdFJvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUxhbmd1YWdlRGF0YX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbXNnIGlzIGRpc3BsYXllZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdEaXNhYmxlZCcgKTsKICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFQcmludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzOwp1c2UgS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q7CnVzZSBLZXJuZWw6OlN5c3RlbTo6UERGOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgUXVldWVPYmplY3QgQ29uZmlnT2JqZWN0IFVzZXJPYmplY3QgTWFpbk9iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGFkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0hUTUxVdGlsc09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57TGlua09iamVjdH0gICAgICA9IEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0LT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57UERGT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpQREYtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGRlZmF1bHQgb3B0aW9ucwogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgICRTZWxmLT57Vm90aW5nfSAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTm8gSXRlbUlEIGlzIGdpdmVuIScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbi4nLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW0gZGF0YQogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICApOwoKICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJywKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGxpbmtlZCBvYmplY3RzCiAgICBteSAkTGlua0xpc3RXaXRoRGF0YSA9ICRTZWxmLT57TGlua09iamVjdH0tPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgIEtleSAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBTdGF0ZSAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBsaW5rIHR5cGUgbGlzdAogICAgbXkgJUxpbmtUeXBlTGlzdCA9ICRTZWxmLT57TGlua09iamVjdH0tPlR5cGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaW5rIGRhdGEKICAgIG15ICVMaW5rRGF0YTsKICAgIGlmICggJExpbmtMaXN0V2l0aERhdGEgJiYgcmVmICRMaW5rTGlzdFdpdGhEYXRhIGVxICdIQVNIJyAmJiAleyRMaW5rTGlzdFdpdGhEYXRhfSApIHsKICAgICAgICAlTGlua0RhdGEgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtPYmplY3RUYWJsZUNyZWF0ZSgKICAgICAgICAgICAgTGlua0xpc3RXaXRoRGF0YSA9PiAkTGlua0xpc3RXaXRoRGF0YSwKICAgICAgICAgICAgVmlld01vZGUgICAgICAgICA9PiAnU2ltcGxlUmF3JywKICAgICAgICApOwogICAgfQoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIG5vIHF1b3RpbmcgaWYgaHRtbCB2aWV3IGlzIGVuYWJsZWQKICAgICAgICBuZXh0IEZJRUxEIGlmICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBodG1sIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXNlciBpbmZvIChDcmVhdGVkQnkpCiAgICBteSAlVXNlckluZm8gPSAkU2VsZi0+e1VzZXJPYmplY3R9LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJEZBUURhdGF7Q3JlYXRlZEJ5fQogICAgKTsKICAgICRQYXJhbXtDcmVhdGVkQnlMb2dpbn0gPSAkVXNlckluZm97VXNlckxvZ2lufTsKCiAgICAjIGdldCB1c2VyIGluZm8gKENoYW5nZWRCeSkKICAgICVVc2VySW5mbyA9ICRTZWxmLT57VXNlck9iamVjdH0tPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkRkFRRGF0YXtDaGFuZ2VkQnl9CiAgICApOwogICAgJFBhcmFte0NoYW5nZWRCeUxvZ2lufSA9ICRVc2VySW5mb3tVc2VyTG9naW59OwoKICAgICMgZ2VuZXJhdGUgcGRmIG91dHB1dAogICAgaWYgKCAkU2VsZi0+e1BERk9iamVjdH0gKSB7CiAgICAgICAgbXkgJFByaW50ZWRCeSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdwcmludGVkIGJ5Jyk7CiAgICAgICAgbXkgJFRpbWUgICAgICA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KCBUZW1wbGF0ZSA9PiAnJEVudnsiVGltZSJ9JyApOwogICAgICAgIG15ICRVcmwgICAgICAgPSAnICc7CiAgICAgICAgaWYgKCAkRU5We1JFUVVFU1RfVVJJfSApIHsKICAgICAgICAgICAgJFVybCA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdIdHRwVHlwZScpIC4gJzovLycKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZRRE4nKQogICAgICAgICAgICAgICAgLiAkRU5We1JFUVVFU1RfVVJJfTsKICAgICAgICB9CiAgICAgICAgbXkgJVBhZ2U7CgogICAgICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgICAgICBpZiAoICEkUGFnZXtNYXhQYWdlc30gfHwgJFBhZ2V7TWF4UGFnZXN9IDwgMSB8fCAkUGFnZXtNYXhQYWdlc30gPiAxMDAwICkgewogICAgICAgICAgICAkUGFnZXtNYXhQYWdlc30gPSAxMDA7CiAgICAgICAgfQogICAgICAgIG15ICRIZWFkZXJSaWdodCAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJykgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgIG15ICRIZWFkbGluZUxlZnQgPSAkSGVhZGVyUmlnaHQ7CiAgICAgICAgbXkgJFRpdGxlICAgICAgICA9ICRIZWFkZXJSaWdodDsKICAgICAgICBpZiAoICRGQVFEYXRhe1RpdGxlfSApIHsKICAgICAgICAgICAgJEhlYWRsaW5lTGVmdCA9ICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICAgICAgJFRpdGxlIC49ICcgLyAnIC4gJEZBUURhdGF7VGl0bGV9OwogICAgICAgIH0KCiAgICAgICAgJFBhZ2V7TWFyZ2luVG9wfSAgICAgPSAzMDsKICAgICAgICAkUGFnZXtNYXJnaW5SaWdodH0gICA9IDQwOwogICAgICAgICRQYWdle01hcmdpbkJvdHRvbX0gID0gNDA7CiAgICAgICAgJFBhZ2V7TWFyZ2luTGVmdH0gICAgPSA0MDsKICAgICAgICAkUGFnZXtIZWFkZXJSaWdodH0gICA9ICRIZWFkZXJSaWdodDsKICAgICAgICAkUGFnZXtIZWFkbGluZUxlZnR9ICA9ICRIZWFkbGluZUxlZnQ7CiAgICAgICAgJFBhZ2V7SGVhZGxpbmVSaWdodH0gPSAkUHJpbnRlZEJ5IC4gJyAnCiAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRmlyc3RuYW1lfSAuICcgJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckxhc3RuYW1lfSAuICcgKCcKICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJFbWFpbH0gLiAnKSAnCiAgICAgICAgICAgIC4gJFRpbWU7CiAgICAgICAgJFBhZ2V7Rm9vdGVyTGVmdH0gPSAkVXJsOwogICAgICAgICRQYWdle1BhZ2VUZXh0fSAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1BhZ2UnKTsKICAgICAgICAkUGFnZXtQYWdlQ291bnR9ICA9IDE7CgogICAgICAgICMgY3JlYXRlIG5ldyBwZGYgZG9jdW1lbnQKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPkRvY3VtZW50TmV3KAogICAgICAgICAgICBUaXRsZSAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgIEVuY29kZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyQ2hhcnNldH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgZmlyc3QgcGRmIHBhZ2UKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICk7CiAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwoKICAgICAgICAjIHR5cGUgb2YgcHJpbnQgdGFnCiAgICAgICAgbXkgJFByaW50VGFnID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUSBBcnRpY2xlIFByaW50Jyk7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5UZXh0KAogICAgICAgICAgICBUZXh0ICAgICA9PiAkUHJpbnRUYWcsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDksCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZCcsCiAgICAgICAgICAgIEFsaWduICAgID0+ICdyaWdodCcsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDksCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBmYXEgaW5mb3JtYXRpb24KICAgICAgICAkU2VsZi0+X1BERk91dHB1dEZBUUhlYWRlckluZm8oCiAgICAgICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICk7CgogICAgICAgIGlmICggJEZBUURhdGF7S2V5d29yZHN9ICkgewogICAgICAgICAgICAkU2VsZi0+X1BERk91dHB1dEtleXdvcmRzKAogICAgICAgICAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPl9QREZPdXB1dEZBUUNvbnRlbnQoCiAgICAgICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGxpbmtlZCBvYmplY3RzCiAgICAgICAgaWYgKCVMaW5rRGF0YSkgewogICAgICAgICAgICAkU2VsZi0+X1BERk91dHB1dExpbmtlZE9iamVjdHMoCiAgICAgICAgICAgICAgICBQYWdlRGF0YSAgICAgPT4gXCVQYWdlLAogICAgICAgICAgICAgICAgTGlua0RhdGEgICAgID0+IFwlTGlua0RhdGEsCiAgICAgICAgICAgICAgICBMaW5rVHlwZUxpc3QgPT4gXCVMaW5rVHlwZUxpc3QsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHJldHVybiB0aGUgcGRmIGRvY3VtZW50CiAgICAgICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV8nIC4gJEZBUURhdGF7TnVtYmVyfTsKICAgICAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lKCksCiAgICAgICAgKTsKICAgICAgICAkTSA9IHNwcmludGYoICIlMDJkIiwgJE0gKTsKICAgICAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICAgICAkaCA9IHNwcmludGYoICIlMDJkIiwgJGggKTsKICAgICAgICAkbSA9IHNwcmludGYoICIlMDJkIiwgJG0gKTsKICAgICAgICBteSAkUERGU3RyaW5nID0gJFNlbGYtPntQREZPYmplY3R9LT5Eb2N1bWVudE91dHB1dCgpOwogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0ucGRmIiwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdhdHRhY2htZW50JywKICAgICAgICApOwogICAgfQoKICAgICMgZ2VuZXJhdGUgaHRtbCBvdXRwdXQKICAgIGVsc2UgewoKICAgICAgICAjIG91dHB1dCBoZWFkZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRIZWFkZXIoIFZhbHVlID0+ICRGQVFEYXRhe051bWJlcn0gKTsKCiAgICAgICAgIyBzaG93IEZBUSBDb250ZW50CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFDb250ZW50U2hvdygKICAgICAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCVMaW5rRGF0YSkgewoKICAgICAgICAgICAgIyBvdXRwdXQgbGluayBkYXRhCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdMaW5rJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkTGlua1R5cGVMaW5rRGlyZWN0aW9uICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJUxpbmtEYXRhICkgewoKICAgICAgICAgICAgICAgICMgaW52ZXN0aWdhdGUgbGluayB0eXBlIG5hbWUKICAgICAgICAgICAgICAgIG15IEBMaW5rRGF0YSA9IHNwbGl0IHF7Ojp9LCAkTGlua1R5cGVMaW5rRGlyZWN0aW9uOwoKICAgICAgICAgICAgICAgICMgb3V0cHV0IGxpbmsgdHlwZSBkYXRhCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmtUeXBlJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTGlua1R5cGVOYW1lID0+ICRMaW5rVHlwZUxpc3R7ICRMaW5rRGF0YVswXSB9LT57ICRMaW5rRGF0YVsxXSAuICdOYW1lJyB9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCBvYmplY3QgbGlzdAogICAgICAgICAgICAgICAgbXkgJE9iamVjdExpc3QgPSAkTGlua0RhdGF7JExpbmtUeXBlTGlua0RpcmVjdGlvbn07CgogICAgICAgICAgICAgICAgZm9yIG15ICRPYmplY3QgKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyRPYmplY3RMaXN0fSApIHsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJE9iamVjdExpc3QtPnskT2JqZWN0fSB9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgbGluayB0eXBlIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmtUeXBlUm93JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmtTdHJnID0+ICRJdGVtLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2hvdyBmYXEKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fSFRNTE1hc2soCiAgICAgICAgICAgIEZBUUlEID0+ICRHZXRQYXJhbXtGQVFJRH0sCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJVVzZXJJbmZvLAogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRGb290ZXIoKTsKCiAgICAgICAgIyByZXR1cm4gb3V0cHV0CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBfUERGT3V0cHV0RkFRSGVhZGVySW5mbyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgIyBjcmVhdGUgbGVmdCB0YWJsZQogICAgbXkgJFRhYmxlTGVmdCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdDYXRlZ29yeScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfSApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRGQVFEYXRhe1N0YXRlfSApLAogICAgICAgIH0sCiAgICBdOwoKICAgICMgbGFuZ3VhZ2Ugcm93LCBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICBteSAkUm93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnTGFuZ3VhZ2UnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRGQVFEYXRhe0xhbmd1YWdlfSApLAogICAgICAgIH07CiAgICAgICAgcHVzaCBAeyRUYWJsZUxlZnR9LCAkUm93OwogICAgfQoKICAgICMgYXBwcm92YWwgc3RhdGUgcm93LCBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewogICAgICAgICRGQVFEYXRhe0FwcHJvdmFsfSA9ICRGQVFEYXRhe0FwcHJvdmVkfSA/ICdZZXMnIDogJ05vJzsKICAgICAgICBteSAkUm93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnQXBwcm92YWwnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRGQVFEYXRhe0FwcHJvdmFsfSApLAogICAgICAgIH07CiAgICAgICAgcHVzaCBAeyRUYWJsZUxlZnR9LCAkUm93OwogICAgfQoKICAgICMgY3JlYXRlIHJpZ2h0IHRhYmxlCiAgICBteSAkVGFibGVSaWdodDsKCiAgICAjIHZvdGluZyByb3dzLCBmZWF0cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgJFRhYmxlUmlnaHQgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdWb3RlcycpIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7Vm90ZXN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnUmVzdWx0JykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSAuICIgJSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXTsKICAgIH0KCiAgICAjIGxhc3QgdXBkYXRlIHJvdwogICAgcHVzaCBAeyRUYWJsZVJpZ2h0fSwgewogICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdMYXN0IHVwZGF0ZScpIC4gJzonLAogICAgICAgIFZhbHVlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZSA9PiAnJFRpbWVMb25neyIkRGF0YXsiQ2hhbmdlZCJ9In0nLAogICAgICAgICAgICBEYXRhICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgKSwKICAgIH07CgogICAgbXkgJFJvd3MgPSBAeyRUYWJsZUxlZnR9OwogICAgaWYgKCBAeyRUYWJsZVJpZ2h0fSA+ICRSb3dzICkgewogICAgICAgICRSb3dzID0gQHskVGFibGVSaWdodH07CiAgICB9CgogICAgbXkgJVRhYmxlUGFyYW07CiAgICBmb3IgbXkgJFJvdyAoIDEgLi4gJFJvd3MgKSB7CiAgICAgICAgJFJvdy0tOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57S2V5fTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgICAgICAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gICAgICAgICA9ICRUYWJsZUxlZnQtPlskUm93XS0+e1ZhbHVlfTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMl17Q29udGVudH0gICAgICAgICA9ICcgJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMl17QmFja2dyb3VuZENvbG9yfSA9ICcjRkZGRkZGJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bM117Q29udGVudH0gICAgICAgICA9ICRUYWJsZVJpZ2h0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVs0XXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e1ZhbHVlfTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDE3MC41OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMl17V2lkdGh9ID0gNDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzNde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bNF17V2lkdGh9ID0gMTcwLjU7CgogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNBQUFBQUEnOwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yT2RkfSAgPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRTZWxmLT57UERGT2JqZWN0fS0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dExpbmtlZE9iamVjdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIExpbmtEYXRhIExpbmtUeXBlTGlzdCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJVBhZ2UgICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwogICAgbXkgJVR5cGVMaXN0ID0gJXsgJFBhcmFte0xpbmtUeXBlTGlzdH0gfTsKICAgIG15ICVUYWJsZVBhcmFtOwogICAgbXkgJFJvdyA9IDA7CgogICAgZm9yIG15ICRMaW5rVHlwZUxpbmtEaXJlY3Rpb24gKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyAkUGFyYW17TGlua0RhdGF9IH0gKSB7CgogICAgICAgICMgaW52ZXN0aWdhdGUgbGluayB0eXBlIG5hbWUKICAgICAgICBteSBATGlua0RhdGEgPSBzcGxpdCBxezo6fSwgJExpbmtUeXBlTGlua0RpcmVjdGlvbjsKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJFR5cGVMaXN0eyAkTGlua0RhdGFbMF0gfS0+eyAkTGlua0RhdGFbMV0gLiAnTmFtZScgfTsKICAgICAgICAkTGlua1R5cGVOYW1lID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJExpbmtUeXBlTmFtZSk7CgogICAgICAgICMgZGVmaW5lIGhlYWRsaW5lCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJExpbmtUeXBlTmFtZSAuICc6JzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJyc7CgogICAgICAgICMgZXh0cmFjdCBvYmplY3QgbGlzdAogICAgICAgIG15ICRPYmplY3RMaXN0ID0gJFBhcmFte0xpbmtEYXRhfS0+eyRMaW5rVHlwZUxpbmtEaXJlY3Rpb259OwoKICAgICAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7JE9iamVjdExpc3R9ICkgewoKICAgICAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJE9iamVjdExpc3QtPnskT2JqZWN0fSB9ICkgewoKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSB8fD0gJyc7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAkSXRlbS0+e1RpdGxlfSB8fCAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICAgICAkUm93Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MzE7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFNlbGYtPntQREZPYmplY3R9LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdMaW5rZWQgT2JqZWN0cycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyB0YWJsZSBwYXJhbXMKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRLZXl3b3JkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFNlbGYtPntQREZPYmplY3R9LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdLZXl3b3JkcycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyB0YWJsZSBwYXJhbXMKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkU2VsZi0+e1BERk9iamVjdH0tPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXB1dEZBUUNvbnRlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICAjIGdldCB0aGUgY29uZmlnIG9mIEZBUSBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgIG15ICVGaWVsZHM7CiAgICBGSUVMRDoKICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAjIGdldCBjb25maWcgb2YgRkFRIGZpZWxkCiAgICAgICAgbXkgJENvbmZpZyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCAnRkFROjpJdGVtOjpGaWVsZCcgLiAkTnVtYmVyICk7CgogICAgICAgICMgc2tpcCBvdmVyIG5vdCBzaG93biBmaWVsZHMKICAgICAgICBuZXh0IEZJRUxEIGlmICEkQ29uZmlnLT57U2hvd307CgogICAgICAgICMgc3RvcmUgb25seSB0aGUgY29uZmlnIG9mIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgICRGaWVsZHN7ICJGaWVsZCIgLiAkTnVtYmVyIH0gPSAkQ29uZmlnOwogICAgfQoKICAgICMgc29ydCBzaG93biBmaWVsZHMgYnkgcHJpb3JpdHkKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAoIHNvcnQgeyAkRmllbGRzeyRhfS0+e1ByaW99IDw9PiAkRmllbGRzeyRifS0+e1ByaW99IH0ga2V5cyAlRmllbGRzICkgewoKICAgICAgICAjIGdldCB0aGUgc3RhdGUgdHlwZSBkYXRhIG9mIHRoaXMgZmllbGQKICAgICAgICBteSAkU3RhdGVUeXBlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJEZpZWxkc3skRmllbGR9LT57U2hvd30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CgogICAgICAgICMgY29udmVydCBIVE1MIHRvIGFzY2lpCiAgICAgICAgbXkgJEFzY2lpRmllbGQgPSAkU2VsZi0+e0hUTUxVdGlsc09iamVjdH0tPlRvQXNjaWkoIFN0cmluZyA9PiAkRkFRRGF0YXskRmllbGR9ICk7CgogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVswXVswXXtDb250ZW50fSA9ICRBc2NpaUZpZWxkIHx8ICcnOwogICAgICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDUxMTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgICMgdHJhbnNsYXRlIHRoZSBmaWVsZCBuYW1lIGFuZCBzdGF0ZQogICAgICAgIG15ICRGaWVsZE5hbWUgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfSApCiAgICAgICAgICAgIC4gJyAoJwogICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkU3RhdGVUeXBlRGF0YS0+e05hbWV9ICkKICAgICAgICAgICAgLiAnKSc7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5UZXh0KAogICAgICAgICAgICBUZXh0ICAgICA9PiAkRmllbGROYW1lLAogICAgICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUKICAgICAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRTZWxmLT57UERGT2JqZWN0fS0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX0hUTUxNYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBzaG93IExhbmd1YWdlCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFwcHJvdmFsIHN0YXRlCiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKICAgICAgICAkUGFyYW17QXBwcm92YWx9ID0gJFBhcmFte0FwcHJvdmVkfSA/ICdZZXMnIDogJ05vJzsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQcmludEFwcHJvdmFsJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHJhdGluZwogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmF0aW5nJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFQcmludCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlOwp1c2UgS2VybmVsOjpTeXN0ZW06OkNTVjsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgVXNlck9iamVjdCBHcm91cE9iamVjdCBDb25maWdPYmplY3QgTWFpbk9iamVjdCBFbmNvZGVPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NTVk9iamVjdH0gICAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkNTVi0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIGZvciBmcm9udGVuZAogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICAkU2VsZi0+e1NlYXJjaExpbWl0fSA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaExpbWl0fSB8fCA1MDA7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKICAgICRTZWxmLT57UHJvZmlsZX0gICAgICAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKSAgICAgICAgfHwgJyc7CiAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSAgICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NhdmVQcm9maWxlJyApICAgIHx8ICcnOwogICAgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKSB8fCAnJzsKICAgICRTZWxmLT57U2VsZWN0VGVtcGxhdGV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VsZWN0VGVtcGxhdGUnICkgfHwgJyc7CiAgICAkU2VsZi0+e0VyYXNlVGVtcGxhdGV9ICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VyYXNlVGVtcGxhdGUnICkgIHx8ICcnOwoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBGQVEgbnVtYmVyCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgZnVsbHRleHQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgKSB7CiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dC54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgc2VhcmNoIHdpdGggYSBzYXZlZCB0ZW1wbGF0ZQogICAgaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWFyY2hUZW1wbGF0ZScgKSAmJiAkU2VsZi0+e1Byb2ZpbGV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgIkFjdGlvbj1BZ2VudEZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX0iCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBzaW5nbGUgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBsb2FkIHByb2ZpbGVzIHN0cmluZyBwYXJhbXMgKHByZXNzIGxvYWQgcHJvZmlsZSkKICAgIGlmICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRQcm9maWxlJyAmJiAkU2VsZi0+e1Byb2ZpbGV9ICkgfHwgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUdldCgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgIGVsc2UgewoKICAgICAgICAjIGdldCBzY2FsYXIgc2VhcmNoIHBhcmFtcwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhOdW1iZXIgVGl0bGUgS2V5d29yZCBGdWxsdGV4dCBSZXN1bHRGb3JtKSkgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGRiIHF1b3RlIHRvIHByZXZlbnQgU1FMIGluamVjdGlvbgogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXJyYXkgc2VhcmNoIHBhcmFtcwogICAgICAgIGZvciBteSAkU2VhcmNoUGFyYW0gKHF3KCBDYXRlZ29yeUlEcyBMYW5ndWFnZUlEcyApKSB7CiAgICAgICAgICAgIG15IEBBcnJheSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRBcnJheSggUGFyYW0gPT4gJFNlYXJjaFBhcmFtICk7CiAgICAgICAgICAgIGlmIChAQXJyYXkpIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ID0gXEBBcnJheTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCByZXN1bHQgZm9ybSBlbnYKICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KCiAgICAjIHNob3cgcmVzdWx0IHNpdGUKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2gnICYmICEkU2VsZi0+e0VyYXNlVGVtcGxhdGV9ICkgewoKICAgICAgICAjIGZpbGwgdXAgcHJvZmlsZSBuYW1lIChlLmcuIHdpdGggbGFzdC1zZWFyY2gpCiAgICAgICAgaWYgKCAhJFNlbGYtPntQcm9maWxlfSB8fCAhJFNlbGYtPntTYXZlUHJvZmlsZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gPSAnbGFzdC1zZWFyY2gnOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7UHJvZmlsZT0kU2VsZi0+e1Byb2ZpbGV9O1NvcnRCeT0kU2VsZi0+e1NvcnRCeX0iCiAgICAgICAgICAgIC4gIjtPcmRlckJ5PSRTZWxmLT57T3JkZXJCeX07VGFrZUxhc3RTZWFyY2g9MTtTdGFydEhpdD0kU2VsZi0+e1N0YXJ0SGl0fSI7CiAgICAgICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIHNlYXJjaCBwcm9maWxlICh1bmRlciBsYXN0LXNlYXJjaCBvciByZWFsIHByb2ZpbGUgbmFtZSkKICAgICAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSA9IDE7CgogICAgICAgICMgcmVtZW1iZXIgbGFzdCBzZWFyY2ggdmFsdWVzCiAgICAgICAgaWYgKCAkU2VsZi0+e1NhdmVQcm9maWxlfSAmJiAkU2VsZi0+e1Byb2ZpbGV9ICkgewoKICAgICAgICAgICAgIyByZW1vdmUgb2xkIHByb2ZpbGUgc3R1ZmYKICAgICAgICAgICAgJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgaW5zZXJ0IG5ldyBwcm9maWxlIHBhcmFtcwogICAgICAgICAgICBmb3IgbXkgJEtleSAoIGtleXMgJUdldFBhcmFtICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkR2V0UGFyYW17JEtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIGZ1bGx0ZXh0IHNlYXJjaAogICAgICAgIGlmICggJEdldFBhcmFte0Z1bGx0ZXh0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte0NvbnRlbnRTZWFyY2h9ID0gJ09SJzsKICAgICAgICAgICAgJEdldFBhcmFte1doYXR9ICAgICAgICAgID0gJEdldFBhcmFte0Z1bGx0ZXh0fTsKICAgICAgICB9CgogICAgICAgICMgcGVyZm9ybSBGQVEgc2VhcmNoCiAgICAgICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyAkU2VsZi0+e1NvcnRCeX0gXSwKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFN0YXRlcyAgICAgICAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICAgICAgQ29udGVudFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDU1Ygb3V0cHV0CiAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CiAgICAgICAgICAgIG15IEBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWRGF0YTsKCiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgRkFRSUQgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICckVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCBpbmZvIGZvciBDU1Ygb3V0cHV0CiAgICAgICAgICAgICAgICBteSAlQ1NWSW5mbyA9ICgKICAgICAgICAgICAgICAgICAgICBGQVFOdW1iZXIgPT4gJEZBUURhdGF7TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5ICA9PiAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9LAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICA9PiAkRkFRRGF0YXtMYW5ndWFnZX0sCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICRGQVFEYXRhe1N0YXRlfSwKICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkICAgPT4gJENoYW5nZWQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgICAgICBAQ1NWSGVhZCA9IHF3KCBGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGluc3NlcnQgZGF0YQogICAgICAgICAgICAgICAgbXkgQERhdGE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3skSGVhZGVyfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQENTVkRhdGEsIFxARGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgIyB0cmFuc2xhdGUgbm9uIGV4aXN0aW5nIGhlYWRlciBtYXkgcmVzdWx0IGluIGEgZ2FyYmFnZSBmaWxlCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQENTVkhlYWQgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgcXcoU3RhdGUgQ2hhbmdlZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdHJhbnNsYXRlIGhlYWRlcnMKICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgIyByZXBsYWNlIEZBUU51bWJlciBoZWFkZXIgd2l0aCB0aGUgY3VycmVudCBGQVFIb29rIGZyb20gY29uZmlnCiAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgZXEgJ0ZBUU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgkSGVhZGVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhc3NhYmxlIENTViBkYXRhCiAgICAgICAgICAgIG15ICRDU1YgPSAkU2VsZi0+e0NTVk9iamVjdH0tPkFycmF5MkNTVigKICAgICAgICAgICAgICAgIEhlYWQgICAgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgPT4gXEBDU1ZEYXRhLAogICAgICAgICAgICAgICAgU2VwYXJhdG9yID0+ICRTZWxmLT57VXNlckNTVlNlcGFyYXRvcn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJldHVybiBjc3YgdG8gZG93bmxvYWQKICAgICAgICAgICAgbXkgJENTVkZpbGUgPSAnRkFRX3NlYXJjaCc7CiAgICAgICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lKCksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICAgICAgICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAgICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJENTVkZpbGUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLmNzdiIsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAidGV4dC9jc3Y7IGNoYXJzZXQ9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRDU1YsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CgogICAgICAgICAgICBteSBAUERGRGF0YTsKICAgICAgICAgICAgZm9yIG15ICRGQVFJRCAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEgZGV0YWlscwogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBGQVFJRCAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIFBERk9iamVjdAogICAgICAgICAgICAgICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpQREY7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6UERGLT5uZXcoICV7JFNlbGZ9ICk7CgogICAgICAgICAgICAgICAgIyBzZXQgY2hhbmdlIGRhdGUgdG8gbG9uZyBmb3JtYXQKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntQREZPYmplY3R9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRDaGFuZ2VkID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICckVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgID0+IFwlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBQREYgUm93cwogICAgICAgICAgICAgICAgICAgIG15IEBQREZSb3c7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7VGl0bGV9OwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgbGFuZ3VhZ2Ugcm93CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe0xhbmd1YWdlfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgICRGQVFEYXRhe1N0YXRlfTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICAkQ2hhbmdlZDsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBQREZEYXRhLCBcQFBERlJvdzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIGFkZCB0YWJsZSBibG9jawogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQREYgT3V0cHV0CiAgICAgICAgICAgIGlmICggJFNlbGYtPntQREZPYmplY3R9ICkgewogICAgICAgICAgICAgICAgbXkgJFRpdGxlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUScpIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnU2VhcmNoJyk7CiAgICAgICAgICAgICAgICBteSAkUHJpbnRlZEJ5ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ3ByaW50ZWQgYnknKTsKICAgICAgICAgICAgICAgIG15ICRQYWdlICAgICAgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnUGFnZScpOwogICAgICAgICAgICAgICAgbXkgJFRpbWUgICAgICA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KCBUZW1wbGF0ZSA9PiAnJEVudnsiVGltZSJ9JyApOwogICAgICAgICAgICAgICAgbXkgJFVybCAgICAgICA9ICcnOwogICAgICAgICAgICAgICAgaWYgKCAkRU5We1JFUVVFU1RfVVJJfSApIHsKICAgICAgICAgICAgICAgICAgICAkVXJsID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0h0dHBUeXBlJykgLiAnOi8vJwogICAgICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGUUROJykKICAgICAgICAgICAgICAgICAgICAgICAgLiAkRU5We1JFUVVFU1RfVVJJfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCBtYXhpbXVtIG51bWJlciBvZiBwYWdlcwogICAgICAgICAgICAgICAgbXkgJE1heFBhZ2VzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgICAgICAgICAgICAgIGlmICggISRNYXhQYWdlcyB8fCAkTWF4UGFnZXMgPCAxIHx8ICRNYXhQYWdlcyA+IDEwMDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJE1heFBhZ2VzID0gMTAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY3JlYXRlIHRoZSBoZWFkZXIKICAgICAgICAgICAgICAgIG15ICRDZWxsRGF0YTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMV0tPntDb250ZW50fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdUaXRsZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0NvbnRlbnR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0NhdGVnb3J5Jyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBzdG9yZSB0aGUgY29ycmVjdCBoZWFkZXIgaW5kZXgKICAgICAgICAgICAgICAgIG15ICROZXh0SGVhZGVySW5kZXggPSAzOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bM10tPntDb250ZW50fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdMYW5ndWFnZScpOwogICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bM10tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICAgICAkTmV4dEhlYWRlckluZGV4ICAgICAgICAgICAgICAgPSA0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bJE5leHRIZWFkZXJJbmRleF0tPntDb250ZW50fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0NoYW5nZWQnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntGb250fSA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgY29udGVudCBhcnJheQogICAgICAgICAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAxOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50ZXJDb2x1bW4gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29udGVudCAoIEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WyRDb3VudGVyUm93XS0+WyRDb3VudGVyQ29sdW1uXS0+e0NvbnRlbnR9ID0gJENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudGVyQ29sdW1uKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgJ05vIFJlc3VsdCcsIGlmIG5vIGNvbnRlbnQgd2FzIGdpdmVuCiAgICAgICAgICAgICAgICBpZiAoICEkQ2VsbERhdGEtPlswXS0+WzBdICkgewogICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdObyBSZXN1bHQhJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwYWdlIHBhcmFtcwogICAgICAgICAgICAgICAgbXkgJVBhZ2VQYXJhbTsKICAgICAgICAgICAgICAgICRQYWdlUGFyYW17UGFnZU9yaWVudGF0aW9ufSA9ICdsYW5kc2NhcGUnOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Ub3B9ICAgICAgID0gMzA7CiAgICAgICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpblJpZ2h0fSAgICAgPSA0MDsKICAgICAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luQm90dG9tfSAgICA9IDQwOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5MZWZ0fSAgICAgID0gNDA7CiAgICAgICAgICAgICAgICAkUGFnZVBhcmFte0hlYWRlclJpZ2h0fSAgICAgPSAkVGl0bGU7CiAgICAgICAgICAgICAgICAkUGFnZVBhcmFte0Zvb3RlckxlZnR9ICAgICAgPSAkVXJsOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtIZWFkbGluZUxlZnR9ICAgID0gJFRpdGxlOwogICAgICAgICAgICAgICAgJFBhZ2VQYXJhbXtIZWFkbGluZVJpZ2h0fSAgID0gJFByaW50ZWRCeSAuICcgJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRmlyc3RuYW1lfSAuICcgJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyTGFzdG5hbWV9IC4gJyAoJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRW1haWx9IC4gJykgJwogICAgICAgICAgICAgICAgICAgIC4gJFRpbWU7CgogICAgICAgICAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAgICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9ICAgICAgICAgICAgPSAkQ2VsbERhdGE7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0FBQUFBQSc7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JPZGR9ICA9ICcjREREREREJzsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgID0gMTsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBuZXcgcGRmIGRvY3VtZW50CiAgICAgICAgICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPkRvY3VtZW50TmV3KAogICAgICAgICAgICAgICAgICAgIFRpdGxlICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICBFbmNvZGUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHN0YXJ0IHRhYmxlIG91dHB1dAogICAgICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnIDEnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciAoIDIgLi4gJE1heFBhZ2VzICkgewoKICAgICAgICAgICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRTZWxmLT57UERGT2JqZWN0fS0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIGFub3RoZXIgcGFnZQogICAgICAgICAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhZ2VQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdlIC4gJyAnIC4gJF8sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcmV0dXJuIHRoZSBwZGYgZG9jdW1lbnQKICAgICAgICAgICAgICAgIG15ICRGaWxlbmFtZSA9ICdGQVFfc2VhcmNoJzsKICAgICAgICAgICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgICAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICAgICAgICAgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREICk7CiAgICAgICAgICAgICAgICAkaCA9IHNwcmludGYoICIlMDJkIiwgJGggKTsKICAgICAgICAgICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgICAgICAgICAgbXkgJFBERlN0cmluZyA9ICRTZWxmLT57UERGT2JqZWN0fS0+RG9jdW1lbnRPdXRwdXQoKTsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50SGVhZGVyKCBXaWR0aCA9PiA4MDAgKTsKICAgICAgICAgICAgICAgIGlmICggc2NhbGFyIEBWaWV3YWJsZUZBUUlEcyA9PSAkU2VsZi0+e1NlYXJjaExpbWl0fSApIHsKICAgICAgICAgICAgICAgICAgICAkUGFyYW17V2FybmluZ30gPSAnJFRleHR7IlJlYWNoZWQgbWF4LiBjb3VudCBvZiAlcyBzZWFyY2ggaGl0cyEiLCAiJwogICAgICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57U2VhcmNoTGltaXR9IC4gJyJ9JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2hSZXN1bHRQcmludCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGZvb3RlcgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50Rm9vdGVyKCk7CgogICAgICAgICAgICAgICAgIyByZXR1cm4gb3V0cHV0CiAgICAgICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc3RhcnQgaHRtbCBwYWdlCiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcigpOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50KCBPdXRwdXQgPT4gXCRPdXRwdXQgKTsKICAgICAgICAgICAgJE91dHB1dCA9ICcnOwoKICAgICAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsdGVyJyApIHx8ICcnOwogICAgICAgICAgICAkU2VsZi0+e1ZpZXd9ICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApICAgfHwgJyc7CgogICAgICAgICAgICAjIHNob3cgRkFRJ3MKICAgICAgICAgICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAgICAgLiAnO1NvcnRCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1NvcnRCeX0gKQogICAgICAgICAgICAgICAgLiAnO09yZGVyQnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntQcm9maWxlfSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgICAgIG15ICRMaW5rU29ydCA9ICdGaWx0ZXI9JwogICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57RmlsdGVyfSApCiAgICAgICAgICAgICAgICAuICc7Vmlldz0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1ZpZXd9ICkKICAgICAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkU2VsZi0+e1Byb2ZpbGV9IC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtGaWx0ZXIgPSAnVGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoO1Byb2ZpbGU9JwogICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57UHJvZmlsZX0gKQogICAgICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgICAgIG15ICRMaW5rQmFjayA9ICdTdWJhY3Rpb249TG9hZFByb2ZpbGU7UHJvZmlsZT0nCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntQcm9maWxlfSApCiAgICAgICAgICAgICAgICAuICc7VGFrZUxhc3RTZWFyY2g9MTsnOwoKICAgICAgICAgICAgbXkgJEZpbHRlckxpbmsgPSAnU29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e09yZGVyQnl9ICkKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRTZWxmLT57UHJvZmlsZX0gLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJzsnOwoKICAgICAgICAgICAgIyBmaW5kIG91dCB3aGljaCBjb2x1bW5zIHNob3VsZCBiZSBzaG93bgogICAgICAgICAgICBteSBAU2hvd0NvbHVtbnM7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnCiAgICAgICAgICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgICAgICAgICAgZm9yIG15ICROYW1lICgga2V5cyAlUG9zc2libGVDb2x1bW4gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAkTmFtZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2sKICAgICAgICAgICAgICAgIGlmICggISRQb3NzaWJsZUNvbHVtbnsnTnVtYmVyJ30gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICdOdW1iZXInOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRTGlzdFNob3coCiAgICAgICAgICAgICAgICBGQVFJRHMgPT4gXEBWaWV3YWJsZUZBUUlEcywKICAgICAgICAgICAgICAgIFRvdGFsICA9PiBzY2FsYXIgQFZpZXdhYmxlRkFRSURzLAoKICAgICAgICAgICAgICAgIFZpZXcgPT4gJFNlbGYtPntWaWV3fSwKCiAgICAgICAgICAgICAgICBFbnYgICAgICAgID0+ICRTZWxmLAogICAgICAgICAgICAgICAgTGlua1BhZ2UgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgICAgICAgICBMaW5rU29ydCAgID0+ICRMaW5rU29ydCwKICAgICAgICAgICAgICAgIExpbmtGaWx0ZXIgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW5rQmFjayAgID0+ICRMaW5rQmFjaywKICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKCiAgICAgICAgICAgICAgICBUaXRsZU5hbWUgPT4gJ1NlYXJjaCBSZXN1bHQnLAogICAgICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAoKICAgICAgICAgICAgICAgIEZpbHRlciAgICAgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgICAgICAgICAgRmlsdGVyTGluayA9PiAkRmlsdGVyTGluaywKCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRTZWxmLT57T3JkZXJCeX0sCiAgICAgICAgICAgICAgICBTb3J0QnkgID0+ICRTZWxmLT57U29ydEJ5fSwKCiAgICAgICAgICAgICAgICBTaG93Q29sdW1ucyA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBidWlsZCBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CiAgICB9CgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhQcm9maWxlRGVsZXRlJyApIHsKICAgICAgICBteSAkUHJvZmlsZSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICk7CgogICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgKTsKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5KU09ORW5jb2RlKAogICAgICAgICAgICBEYXRhID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWCcgKSB7CgogICAgICAgICMgY3JlYXRlIG91dHB1dAogICAgICAgIG15ICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDaGFyc2V0ICAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGRlZmF1bHQgc2VhcmNoIHNjcmVlbgogICAgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdGlvbkJhcigpOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWFyY2gnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0OwoKfQoKc3ViIF9NYXNrRm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQcm9maWxlID0gJFNlbGYtPntQcm9maWxlfTsKICAgIG15ICRFbXB0eVNlYXJjaCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VtcHR5U2VhcmNoJyApOwogICAgaWYgKCAhJFByb2ZpbGUgKSB7CiAgICAgICAgJEVtcHR5U2VhcmNoID0gMTsKICAgIH0KCiAgICBteSAlR2V0UGFyYW0gPSAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlR2V0KAogICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICk7CgogICAgIyBpZiBubyBwcm9maWxlIGlzIHVzZWQsIHNldCBkZWZhdWx0IHBhcmFtcyBvZiBkZWZhdWx0IGF0dHJpYnV0ZXMKICAgIGlmICggISRQcm9maWxlICkgewogICAgICAgIGlmICggJFNlbGYtPntDb25maWd9LT57RGVmYXVsdHN9ICkgewogICAgICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICV7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRzfS0+eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgJEdldFBhcmFteyRBdHRyaWJ1dGV9ID0gJFNlbGYtPntDb25maWd9LT57RGVmYXVsdHN9LT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgYXR0cmlidXRlcyBzdHJpbmcKICAgIG15IEBBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIFZhbHVlID0+ICdGQVEgTnVtYmVyJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0Z1bGx0ZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gJ0Z1bGx0ZXh0JywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgVmFsdWUgPT4gJ1RpdGxlJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0tleXdvcmQnLAogICAgICAgICAgICBWYWx1ZSA9PiAnS2V5d29yZCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IExhbmd1YWdlcyBhdHRyaWJ1dGUKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgcHVzaCBAQXR0cmlidXRlcywgKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NhdGVnb3J5SURzJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0NhdGVnb3J5JywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGRyb3Bkb3duIG1lbnUgZm9yICdhdHRpYnV0ZXMnCiAgICAkUGFyYW17QXR0cmlidXRlc1N0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgTmFtZSAgICAgPT4gJ0F0dHJpYnV0ZScsCiAgICAgICAgTXVsdGlwbGUgPT4gMCwKICAgICk7CiAgICAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgPT4gXEBBdHRyaWJ1dGVzLAogICAgICAgIE5hbWUgICAgID0+ICdBdHRyaWJ1dGVPcmlnJywKICAgICAgICBNdWx0aXBsZSA9PiAwLAogICAgKTsKCiAgICAjIGdldCBsYW5ndWFnZXMgbGlzdAogICAgbXkgJUxhbmd1YWdlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZHJvcGRvd24gbWVudSBmb3IgJ2xhbmd1YWdlcycKICAgICRQYXJhbXtMYW5ndWFnZXNTZWxlY3Rpb25TdHJpbmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlTGFuZ3VhZ2VzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0xhbmd1YWdlSURzfSB8fCBbXSwKICAgICk7CgogICAgIyBnZXQgY2F0ZWdvcmllcyAod2l0aCBjYXRlZ29yeSBsb25nIG5hbWVzKSB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIG15ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCB0aGUgY2F0b2dvcnkgc2VsZWN0aW9uCiAgICAkUGFyYW17Q2F0ZWdvcmllc1NlbGVjdGlvblN0cmluZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcywKICAgICAgICBOYW1lICAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIFNlbGVjdGVkSURzID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gfHwgW10sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwoKICAgIG15ICVQcm9maWxlcyA9ICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVMaXN0KAogICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKICAgIGRlbGV0ZSAkUHJvZmlsZXN7Jyd9OwogICAgZGVsZXRlICRQcm9maWxlc3snbGFzdC1zZWFyY2gnfTsKICAgIGlmICgkRW1wdHlTZWFyY2gpIHsKICAgICAgICAkUHJvZmlsZXN7Jyd9ID0gJy0nOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFByb2ZpbGVzeydsYXN0LXNlYXJjaCd9ID0gJy0nOwogICAgfQogICAgJFBhcmFte1Byb2ZpbGVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVQcm9maWxlcywKICAgICAgICBOYW1lICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICBJRCAgICAgICAgID0+ICdTZWFyY2hQcm9maWxlJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQcm9maWxlLAogICAgKTsKCiAgICAkUGFyYW17UmVzdWx0Rm9ybVN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm9ybWFsID0+ICdOb3JtYWwnLAogICAgICAgICAgICBQcmludCAgPT4gJ1ByaW50JywKICAgICAgICAgICAgQ1NWICAgID0+ICdDU1YnLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnUmVzdWx0Rm9ybScsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gfHwgJ05vcm1hbCcsCiAgICApOwoKICAgICMgaHRtbCBzZWFyY2ggbWFzayBvdXRwdXQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VhcmNoQUpBWCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBFbXB0eVNlYXJjaCA9PiAkRW1wdHlTZWFyY2gsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IGF0dHJpYnV0ZXMKICAgIG15ICVBbHJlYWR5U2hvd247CiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtIChAQXR0cmlidXRlcykgewogICAgICAgIG15ICRLZXkgPSAkSXRlbS0+e0tleX07CiAgICAgICAgbmV4dCBJVEVNIGlmICEkS2V5OwogICAgICAgIG5leHQgSVRFTSBpZiAhZGVmaW5lZCAkR2V0UGFyYW17JEtleX07CiAgICAgICAgbmV4dCBJVEVNIGlmICRHZXRQYXJhbXskS2V5fSBlcSAnJzsKCiAgICAgICAgbmV4dCBJVEVNIGlmICRBbHJlYWR5U2hvd257JEtleX07CiAgICAgICAgJEFscmVhZHlTaG93bnskS2V5fSA9IDE7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQUpBWFNob3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkS2V5LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBpZiBubyBhdHRyaWJ1dGUgaXMgc2hvd24sIHNob3cgZnVsbHRleHQgc2VhcmNoCiAgICBpZiAoICEkUHJvZmlsZSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRzfSApIHsKICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0c30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRBbHJlYWR5U2hvd257JEtleX07CiAgICAgICAgICAgICAgICAkQWxyZWFkeVNob3dueyRLZXl9ID0gMTsKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQUpBWFNob3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEFKQVhTaG93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAnRnVsbHRleHQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCBvdXRwdXQKICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRU2VhcmNoJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFTZWFyY2hTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwp1c2UgS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGU7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IFVzZXJPYmplY3QgR3JvdXBPYmplY3QgQ29uZmlnT2JqZWN0IE1haW5PYmplY3QgRW5jb2RlT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkT2JqZWN0ISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGUtPm5ldyglUGFyYW0pOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICAkU2VsZi0+e1NlYXJjaExpbWl0fSA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaExpbWl0fSB8fCA1MDA7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKICAgICRTZWxmLT57UHJvZmlsZX0gICAgICAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKSAgICAgICAgfHwgJyc7CiAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSAgICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NhdmVQcm9maWxlJyApICAgIHx8ICcnOwogICAgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKSB8fCAnJzsKICAgICRTZWxmLT57U2VsZWN0VGVtcGxhdGV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VsZWN0VGVtcGxhdGUnICkgfHwgJyc7CiAgICAkU2VsZi0+e0VyYXNlVGVtcGxhdGV9ICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VyYXNlVGVtcGxhdGUnICkgIHx8ICcnOwogICAgbXkgJE5hdiA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hdicgKSB8fCAnJzsKCiAgICAjIHNlYXJjaCB3aXRoIGEgc2F2ZWQgdGVtcGxhdGUKICAgIGlmICggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VhcmNoVGVtcGxhdGUnICkgJiYgJFNlbGYtPntQcm9maWxlfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICJBY3Rpb249QWdlbnRGQVFTZWFyY2hTbWFsbDtTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX07TmF2PSROYXYiCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBzaW5nbGUgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBsb2FkIHByb2ZpbGVzIHN0cmluZyBwYXJhbXMgKHByZXNzIGxvYWQgcHJvZmlsZSkKICAgIGlmICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRQcm9maWxlJyAmJiAkU2VsZi0+e1Byb2ZpbGV9ICkgfHwgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUdldCgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgIGVsc2UgewoKICAgICAgICAjIGdldCBzY2FsYXIgc2VhcmNoIHBhcmFtcwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhOdW1iZXIgVGl0bGUgS2V5d29yZCBGdWxsdGV4dCBSZXN1bHRGb3JtKSkgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGRiIHF1b3RlIHRvIHByZXZlbnQgU1FMIGluamVjdGlvbgogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXJyYXkgc2VhcmNoIHBhcmFtcwogICAgICAgIGZvciBteSAkU2VhcmNoUGFyYW0gKHF3KCBDYXRlZ29yeUlEcyBMYW5ndWFnZUlEcyApKSB7CiAgICAgICAgICAgIG15IEBBcnJheSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRBcnJheSggUGFyYW0gPT4gJFNlYXJjaFBhcmFtICk7CiAgICAgICAgICAgIGlmIChAQXJyYXkpIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ID0gXEBBcnJheTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCByZXN1bHQgZm9ybSBlbnYKICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KCiAgICAjIHNob3cgcmVzdWx0IHNpdGUKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2gnICYmICEkU2VsZi0+e0VyYXNlVGVtcGxhdGV9ICkgewoKICAgICAgICAjIGZpbGwgdXAgcHJvZmlsZSBuYW1lIChlLmcuIHdpdGggbGFzdC1zZWFyY2gpCiAgICAgICAgaWYgKCAhJFNlbGYtPntQcm9maWxlfSB8fCAhJFNlbGYtPntTYXZlUHJvZmlsZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gPSAnbGFzdC1zZWFyY2gnOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBsYXN0IHF1ZXVlIHNjcmVlbgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUFnZW50RkFRU2VhcmNoU21hbGw7U3ViYWN0aW9uPVNlYXJjaDtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX07U29ydEJ5PSRTZWxmLT57U29ydEJ5fSIKICAgICAgICAgICAgLiAiO09yZGVyQnk9JFNlbGYtPntPcmRlckJ5fTtUYWtlTGFzdFNlYXJjaD0xO1N0YXJ0SGl0PSRTZWxmLT57U3RhcnRIaXR9O05hdj0kTmF2IjsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgc2VhcmNoIHByb2ZpbGUgKHVuZGVyIGxhc3Qtc2VhcmNoIG9yIHJlYWwgcHJvZmlsZSBuYW1lKQogICAgICAgICRTZWxmLT57U2F2ZVByb2ZpbGV9ID0gMTsKCiAgICAgICAgIyByZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBpZiAoICRTZWxmLT57U2F2ZVByb2ZpbGV9ICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBpbnNlcnQgbmV3IHByb2ZpbGUgcGFyYW1zCiAgICAgICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlQWRkKAogICAgICAgICAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRHZXRQYXJhbXskS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgZnVsbHRleHQgc2VhcmNoCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RnVsbHRleHR9ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Q29udGVudFNlYXJjaH0gPSAnT1InOwogICAgICAgICAgICAkR2V0UGFyYW17V2hhdH0gICAgICAgICAgPSAkR2V0UGFyYW17RnVsbHRleHR9OwogICAgICAgIH0KCiAgICAgICAgIyBwZXJmb3JtIEZBUSBzZWFyY2gKICAgICAgICBteSBAVmlld2FibGVGQVFJRHMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVNlYXJjaCgKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICA9PiBbICRTZWxmLT57U29ydEJ5fSBdLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgID0+IFsgJFNlbGYtPntPcmRlckJ5fSBdLAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgICAgICBDb250ZW50U2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgQ29udGVudFNlYXJjaFN1ZmZpeCA9PiAnKicsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIHN0YXJ0IGh0bWwgcGFnZQogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludCggT3V0cHV0ID0+IFwkT3V0cHV0ICk7CiAgICAgICAgJE91dHB1dCA9ICcnOwoKICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CiAgICAgICAgJFNlbGYtPntWaWV3fSAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnVmlldycgKSAgIHx8ICcnOwoKICAgICAgICAjIHNob3cgRkFRJ3MKICAgICAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57RmlsdGVyfSApCiAgICAgICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57T3JkZXJCeX0gKQogICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntQcm9maWxlfSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgICAgIC4gJzsnOwogICAgICAgIG15ICRMaW5rU29ydCA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkU2VsZi0+e1Byb2ZpbGV9IC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKCiAgICAgICAgICAgIC4gJzsnOwogICAgICAgIG15ICRMaW5rRmlsdGVyID0gJ1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaDtQcm9maWxlPScKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57UHJvZmlsZX0gKQogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgICAgIC4gJzsnOwogICAgICAgIG15ICRMaW5rQmFjayA9ICdTdWJhY3Rpb249TG9hZFByb2ZpbGU7UHJvZmlsZT0nCiAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgICAgICAuICc7VGFrZUxhc3RTZWFyY2g9MTsnOwoKICAgICAgICBteSAkRmlsdGVyTGluayA9ICdTb3J0Qnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTb3J0Qnl9ICkKICAgICAgICAgICAgLiAnO09yZGVyQnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgICAgIC4gJztWaWV3PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntQcm9maWxlfSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgICAgIC4gJzsnOwoKICAgICAgICAjIGZpbmQgb3V0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHNob3duCiAgICAgICAgbXkgQFNob3dDb2x1bW5zOwogICAgICAgIGlmICggJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICAgICAgbXkgJVBvc3NpYmxlQ29sdW1uID0gJXsgJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICAgICAjIGdldCB0aGUgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgICAgIGZvciBteSAkTmFtZSAoIGtleXMgJVBvc3NpYmxlQ29sdW1uICkgewogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2sKICAgICAgICAgICAgaWYgKCAhJFBvc3NpYmxlQ29sdW1ueydOdW1iZXInfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAnTnVtYmVyJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUUxpc3RTaG93KAogICAgICAgICAgICBGQVFJRHMgPT4gXEBWaWV3YWJsZUZBUUlEcywKICAgICAgICAgICAgVG90YWwgID0+IHNjYWxhciBAVmlld2FibGVGQVFJRHMsCgogICAgICAgICAgICBWaWV3ID0+ICRTZWxmLT57Vmlld30sCgogICAgICAgICAgICBFbnYgICAgICAgID0+ICRTZWxmLAogICAgICAgICAgICBMaW5rUGFnZSAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgTGlua1NvcnQgICA9PiAkTGlua1NvcnQsCiAgICAgICAgICAgIExpbmtGaWx0ZXIgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgICAgIExpbmtCYWNrICAgPT4gJExpbmtCYWNrLAogICAgICAgICAgICBQcm9maWxlICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCgogICAgICAgICAgICBUaXRsZU5hbWUgPT4gJ1NlYXJjaCBSZXN1bHQnLAogICAgICAgICAgICBMaW1pdCAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCgogICAgICAgICAgICBGaWx0ZXIgICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICAgICAgRmlsdGVyTGluayA9PiAkRmlsdGVyTGluaywKCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJFNlbGYtPntPcmRlckJ5fSwKICAgICAgICAgICAgU29ydEJ5ICA9PiAkU2VsZi0+e1NvcnRCeX0sCgogICAgICAgICAgICBTaG93Q29sdW1ucyA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgICAgICBOYXYgICAgICAgICA9PiAkTmF2LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKCiAgICAgICAgIyBjcmVhdGUgb3V0cHV0CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tGb3JtKAogICAgICAgICAgICBOYXYgPT4gJE5hdiwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgX01hc2tGb3JtIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgcHJvZmlsZXMgbGlzdAogICAgbXkgJVByb2ZpbGVzID0gJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUxpc3QoCiAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICApOwoKICAgICMgYnVpbGQgcHJvZmlsZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtQcm9maWxlc1N0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQcm9maWxlc30sCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgKTsKCiAgICAjIGdldCBsYW5ndWFnZXMgbGlzdAogICAgbXkgJUxhbmd1YWdlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgbGFuZ3VhZ2VzIG91dHB1dCBsaXN0CiAgICAkUGFyYW17TGFuZ3VhZ2VzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVMYW5ndWFnZXN9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhbmd1YWdlSURzfSwKICAgICk7CgogICAgIyBnZXQgY2F0ZWdvcmllcyBsaXN0CiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIGNhdGVnb3JpZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtDYXRlZ29yaWVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gJENhdGVnb3JpZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9LAogICAgKTsKCiAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1NlYXJjaCcsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBzaG93IGxhbmd1YWdlcyBzZWxlY3QKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVNlYXJjaFNtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Owp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KFBhcmFtT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBMb2dPYmplY3QgQ29uZmlnT2JqZWN0IFVzZXJPYmplY3QgR3JvdXBPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntMaW5rT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0LT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGRlZmF1bHQgb3B0aW9ucwogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgICRTZWxmLT57Vm90aW5nfSAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKICAgICRHZXRQYXJhbXtSYXRlfSAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnUmF0ZScgKTsKCiAgICAjIGdldCBuYXZpZ2F0aW9uIGJhciBvcHRpb24KICAgIG15ICROYXYgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYXYnICkgfHwgJyc7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBJdGVtSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgIG15ICRQZXJtaXNzaW9uID0gJFNlbGYtPntGQVFPYmplY3R9LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgRG93bmxvYWRBdHRhY2htZW50IFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIG1hbmFnZSBwYXJhbWV0ZXJzCiAgICAgICAgJEdldFBhcmFte0ZpbGVJRH0gPSAkU2VsZi0+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+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoIEluZm8gPT4gJ1RoYW5rcyBmb3IgeW91ciB2b3RlIScgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB1c2VyIGlzIGFibGUgdG8gdm90ZSBidXQgbm8gcmF0ZSBoYXMgYmVlbiBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm90aWZ5KAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgIEluZm8gICAgID0+ICdObyByYXRlIHNlbGVjdGVkIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24sIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPX4gc3sKICAgICAgICAgICAgQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICB9e0FjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBubyBxdW90aW5nIGlmIGh0bWwgdmlldyBpcyBlbmFibGVkCiAgICAgICAgbmV4dCBGSUVMRCBpZiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpIVE1MJyk7CgogICAgICAgICMgaHRtbCBxdW90aW5nCiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgTmV3TGluZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICAgICAgVk1heCAgICAgICAgICAgPT4gNTAwMCwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHVzZXIgaW5mbyAoQ3JlYXRlZEJ5KQogICAgbXkgJVVzZXJJbmZvID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRGQVFEYXRhe0NyZWF0ZWRCeX0KICAgICk7CiAgICAkUGFyYW17Q3JlYXRlZEJ5TG9naW59ID0gJFVzZXJJbmZve1VzZXJMb2dpbn07CgogICAgIyBnZXQgdXNlciBpbmZvIChDaGFuZ2VkQnkpCiAgICAlVXNlckluZm8gPSAkU2VsZi0+e1VzZXJPYmplY3R9LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJEZBUURhdGF7Q2hhbmdlZEJ5fQogICAgKTsKICAgICRQYXJhbXtDaGFuZ2VkQnlMb2dpbn0gPSAkVXNlckluZm97VXNlckxvZ2lufTsKCiAgICAjIHNldCB2b3RpbmcgcmVzdWx0cwogICAgJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+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+R2V0KCdGQVE6OlRpY2tldENvbXBvc2UnKTsKCiAgICAgICAgbXkgJFNob3dPckJsb2NrOwoKICAgICAgICAjIHNob3cgIkluc2VydCBUZXh0IiBidXR0b24KICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0luc2VydFRleHRCdXR0b259ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0VGV4dCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2hvd09yQmxvY2sgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBGQVEgYXJ0aWNsZSBpcyBwdWJsaWMKICAgICAgICBpZiAoICRGQVFEYXRhe1N0YXRlVHlwZUlEfSA9PSAkUHVibGljU3RhdGVUeXBlLT57U3RhdGVJRH0gKSB7CgogICAgICAgICAgICBteSAkSFRUUFR5cGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnSHR0cFR5cGUnKTsKICAgICAgICAgICAgbXkgJEZRRE4gICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZRRE4nKTsKICAgICAgICAgICAgbXkgJEJhc2VsaW5rID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9OwoKICAgICAgICAgICAgIyByZXdyaXRlIGhhbmRsZQogICAgICAgICAgICAkQmFzZWxpbmsKICAgICAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIH17cHVibGljLnBsP31neG1zOwoKICAgICAgICAgICAgJEZBUURhdGF7UHVibGljbGlua30gPSAkSFRUUFR5cGUgLiAnOi8vJyAuICRGUUROIC4gJEJhc2VsaW5rCiAgICAgICAgICAgICAgICAuICJBY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9JEZBUURhdGF7SXRlbUlEfSI7CgogICAgICAgICAgICAjIHNob3cgIkluc2VydCBMaW5rIiBidXR0b24KICAgICAgICAgICAgaWYgKCAkVGlja2V0Q29tcG9zZUNvbmZpZy0+e1Nob3dJbnNlcnRMaW5rQnV0dG9ufSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0TGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2hvd09yQmxvY2sgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNob3cgIkluc2VydCBUZXh0IGFuZCBMaW5rIiBidXR0b24KICAgICAgICAgICAgaWYgKCAkVGlja2V0Q29tcG9zZUNvbmZpZy0+e1Nob3dJbnNlcnRUZXh0QW5kTGlua0J1dHRvbn0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydEJvdGgnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNob3dPckJsb2NrID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJENhbmNlbEJ1dHRvbkNsYXNzID0gJ1pvb21TbWFsbEJ1dHRvbic7CgogICAgICAgICMgc2hvdyB0aGUgIk9yIiBibG9jayBiZXR3ZWVuIHRoZSBidXR0b25zIGFuZCB0aGUgQ2FuY2VsICYgY2xvc2Ugd2luZG93IGxhYmVsCiAgICAgICAgaWYgKCRTaG93T3JCbG9jaykgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3InLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IHRoZSAkQ2FuY2VsQnV0dG9uQ2xhc3MgdG8gJyc7CiAgICAgICAgICAgICRDYW5jZWxCdXR0b25DbGFzcyA9ICcnOwogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVpvb21TbWFsbCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENhbmNlbEJ1dHRvbkNsYXNzID0+ICRDYW5jZWxCdXR0b25DbGFzcyB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVpvb20nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCBmb290ZXIKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKICAgIH0KCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9GQVFWb3RpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwoKICAgICMgb3VwdXQgdm90aW5nIGJsb2NrCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUVZvdGluZycsCiAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgKTsKCiAgICAjIGdldCBWb3RpbmcgcmF0ZXMgc2V0dGluZwogICAgbXkgJFZvdGluZ1JhdGVzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcycpOwogICAgZm9yIG15ICRSYXRlVmFsdWUgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyRWb3RpbmdSYXRlc30gKSB7CgogICAgICAgICMgY3JlYXRlIGRhdGEgc3RydWN1cmUgZm9yIG91dHB1dAogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBWYWx1ZSA9PiAkUmF0ZVZhbHVlLAogICAgICAgICAgICBUaXRsZSA9PiAkVm90aW5nUmF0ZXMtPnskUmF0ZVZhbHVlfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB2b3RlIHJhdGluZyByb3cgYmxvY2sKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFWb3RpbmdSYXRlUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7JURhdGF9LAogICAgICAgICk7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSA9IGludCggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gICAgID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9ICAgICB8fCAyMDA7CiAgICAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hQYWdlU2hvd259IHx8IDM7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyBnZXQgY2F0ZWdvcnkgaWQKICAgIG15ICRDYXRlZ29yeUlEID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgY2hlY2sgZm9yIG5vbiBudW1lcmljIENhdGVnb3J5SUQKICAgIGlmICggJENhdGVnb3J5SUQgIX4gL1xkKy8gKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAwOwogICAgfQoKICAgICMgdHJ5IHRvIGdldCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgbXkgJUNhdGVnb3J5RGF0YTsKICAgIGlmICgkQ2F0ZWdvcnlJRCkgewoKICAgICAgICAjIGdldCBjYXRlZ29yeSBkYXRhCiAgICAgICAgJUNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJUNhdGVnb3J5RGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNoZWNrQ2F0ZWdvcnlDdXN0b21lclBlcm1pc3Npb24oCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgICAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzdG9yZSB0aGUgbGFzdCBzY3JlZW4gb3ZlcnZpZXcgaW4gc2Vzc2lvbgogICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgVmFsdWUgPT4gJycsCiAgICApOwogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyTmF2aWdhdGlvbkJhcigpOwoKICAgICMgc2hvdyBGQVEgcGF0aAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBhbGwgZGlyZWN0IHN1YmNhdGVnb3JpZXMgb2YgdGhlIHNlbGVjdGVkIGNhdGVnb3J5CiAgICBteSAkQ2F0ZWdvcnlJRHNSZWYgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkN1c3RvbWVyQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgTW9kZSAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzaG93IHN1YmNhdGVnb3JpZXMgbGlzdAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnU3ViY2F0ZWdvcmllcycgKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JyApOwoKICAgICMgY2hlY2sgaWYgdGhlcmUgYXJlIHN1YmNhdGVnb3JpZXMKICAgIGlmICggJENhdGVnb3J5SURzUmVmICYmIHJlZiAkQ2F0ZWdvcnlJRHNSZWYgZXEgJ0FSUkFZJyAmJiBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICMgc2hvdyBkYXRhIGZvciBlYWNoIHN1YmNhdGVnb3J5CiAgICAgICAgZm9yIG15ICRTdWJDYXRlZ29yeUlEICggQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgbXkgJVN1YkNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIHN1YmNhdGVnb3JpZXMgb2YgdGhpcyBzdWJjYXRlZ29yeQogICAgICAgICAgICAkU3ViQ2F0ZWdvcnlEYXRhe1N1YkNhdGVnb3J5Q291bnR9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUNvdW50KAogICAgICAgICAgICAgICAgUGFyZW50SURzID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBmYXEgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeQogICAgICAgICAgICAkU3ViQ2F0ZWdvcnlEYXRhe0FydGljbGVDb3VudH0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUNvdW50KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBJdGVtU3RhdGVzICAgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICAgICAgT25seUFwcHJvdmVkID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVTdWJDYXRlZ29yeURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQKICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vQ2F0ZWdvcnlEYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZWFyY2ggYWxsIEZBUSBhcnRpY2xlcyB3aXRoaW4gdGhlIGdpdmVuIGNhdGVnb3J5CiAgICBteSBAVmlld2FibGVGQVFJRHMgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVNlYXJjaCgKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFsgJFNlbGYtPntTb3J0Qnl9IF0sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFN0YXRlcyAgICAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIENhdGVnb3J5SURzICAgICAgPT4gWyRDYXRlZ29yeUlEXSwKICAgICk7CgogICAgIyBzZXQgdGhlIFNvcnRCeSBDbGFzcwogICAgbXkgJFNvcnRDbGFzczsKCiAgICAjIHRoaXMgc2V0cyB0aGUgb3Bwb3NpdCB0byB0aGUgT3JkZXJCeSBwYXJhbWV0ZXIKICAgIGlmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnRG93bicgKSB7CiAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0QXNjZW5kaW5nJzsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnVXAnICkgewogICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydERlc2NlbmRpbmcnOwogICAgfQoKICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MgdG8gdGhlIGNvcnJlY3QgZmllbGQKICAgIG15ICVDU1NTb3J0OwogICAgbXkgJFNvcnRCeSA9ICRTZWxmLT57U29ydEJ5fSAuICdTb3J0JzsKICAgICRDU1NTb3J0eyRTb3J0Qnl9ID0gJFNvcnRDbGFzczsKCiAgICBteSAlTmV3T3JkZXIgPSAoCiAgICAgICAgRG93biA9PiAnVXAnLAogICAgICAgIFVwICAgPT4gJ0Rvd24nLAogICAgKTsKCiAgICAjIHNob3cgdGhlIEZBUSBhcnRpY2xlIGxpc3QKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRSXRlbUxpc3QnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAlQ1NTU29ydCwKICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyAkU2VsZi0+e09yZGVyQnl9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IGxhbmd1YWdlIGhlYWRlcgogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICBPcmRlciA9PiAkTmV3T3JkZXJ7ICRTZWxmLT57T3JkZXJCeX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIGlmIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgZm9yIG15ICRGQVFJRCAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBidWlsZCBzZWFyY2ggcmVzdWx0CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTZWxmLT57U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ICsgJFNlbGYtPntTdGFydEhpdH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEgZGV0YWlscwogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBGQVFJRCAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGJsb2NrcyB0byB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0ZBUURhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTGluayA9ICdTb3J0Qnk9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntTb3J0Qnl9ICkgLiAnOyc7CiAgICAkTGluayAuPSAnT3JkZXI9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApIC4gJzsnOwoKICAgICMgYnVpbGQgc2VhcmNoIG5hdmlnYXRpb24gYmFyCiAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgU3RhcnRIaXQgID0+ICRTZWxmLT57U3RhcnRIaXR9LAogICAgICAgIFBhZ2VTaG93biA9PiAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0sCiAgICAgICAgQWxsSGl0cyAgID0+ICRDb3VudGVyLAogICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRCIsCiAgICAgICAgTGluayAgICAgID0+ICRMaW5rLAogICAgICAgIElEUHJlZml4ICA9PiAiQ3VzdG9tZXJGQVFFeHBsb3JlciIsCiAgICApOwoKICAgICMgc2hvdyBmb290ZXIgZmlsdGVyIC0gc2hvdyBvbmx5IGlmIG1vcmUgdGhlIG9uZSBwYWdlIGlzIGF2YWlsYWJsZQogICAgaWYgKCBkZWZpbmVkICRQYWdlTmF2e1RvdGFsSGl0c30gJiYgKCAkUGFnZU5hdntUb3RhbEhpdHN9ID4gJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ICkgKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUGFnaW5hdGlvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgUXVpY2tTZWFyY2gKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRU2hvd1F1aWNrU2VhcmNoKAogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgIEN1c3RvbWVyVXNlciAgICA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBsYXN0IGFkZGVkIGFuZCBsYXN0IHVwZGF0ZWQgYXJ0aWNsZXMKICAgIGZvciBteSAkVHlwZSAocXcoTGFzdENyZWF0ZSBMYXN0Q2hhbmdlKSkgewoKICAgICAgICBteSAkU2hvd09rID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFTaG93TGF0ZXN0TmV3c0JveCgKICAgICAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICRUeXBlLAogICAgICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdG9wIHRlbiBhcnRpY2xlcwogICAgbXkgJFNob3dPayA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRU2hvd1RvcDEwKAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgQ3VzdG9tZXJVc2VyICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgZXJyb3IKICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRRXhwbG9yZXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgJUNhdGVnb3J5RGF0YSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFQcmludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzOwp1c2UgS2VybmVsOjpTeXN0ZW06OlBERjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkTmVlZGVkICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCBNYWluT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYWRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntQREZPYmplY3R9ICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlBERi0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdleHRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkN1c3RvbWVyOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgZGVmYXVsdCBvcHRpb25zCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwogICAgJFNlbGYtPntWb3Rpbmd9ICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScsCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YUVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdObyBJdGVtSUQgaXMgZ2l2ZW4hJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+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=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlOwp1c2UgS2VybmVsOjpTeXN0ZW06OkNTVjsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIChxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCkpIHsKICAgICAgICBpZiAoICEkU2VsZi0+eyRffSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJF8hIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0NTVk9iamVjdH0gICAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkNTVi0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIGZvciBmcm9udGVuZAogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICAkU2VsZi0+e1NlYXJjaExpbWl0fSAgICAgPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0gICAgIHx8IDIwMDsKICAgICRTZWxmLT57U2VhcmNoUGFnZVNob3dufSA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaFBhZ2VTaG93bn0gfHwgNDA7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgJFNlbGYtPntQcm9maWxlfSAgICAgICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdQcm9maWxlJyApICAgICAgICB8fCAnJzsKICAgICRTZWxmLT57U2F2ZVByb2ZpbGV9ICAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgICAgfHwgJyc7CiAgICAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rha2VMYXN0U2VhcmNoJyApIHx8ICcnOwogICAgJFNlbGYtPntTZWxlY3RUZW1wbGF0ZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWxlY3RUZW1wbGF0ZScgKSB8fCAnJzsKICAgICRTZWxmLT57RXJhc2VUZW1wbGF0ZX0gID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnRXJhc2VUZW1wbGF0ZScgKSAgfHwgJyc7CgogICAgIyBzZWFyY2ggd2l0aCBhIHNhdmVkIHRlbXBsYXRlCiAgICBpZiAoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaFRlbXBsYXRlJyApICYmICRTZWxmLT57UHJvZmlsZX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7VGFrZUxhc3RTZWFyY2g9MTtTYXZlUHJvZmlsZT0xO1Byb2ZpbGU9JFNlbGYtPntQcm9maWxlfSIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgRkFRIG51bWJlcgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicgKSB7CiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IGZ1bGx0ZXh0CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJlbWVtYmVyIGV4Y2x1ZGUgYXR0cmlidXRlcwogICAgbXkgQEV4Y2x1ZGVzID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAnRXhjbHVkZScgKTsKCiAgICAjIGdldCBzaW5nbGUgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBsb2FkIHByb2ZpbGVzIHN0cmluZyBwYXJhbXMgKHByZXNzIGxvYWQgcHJvZmlsZSkKICAgIGlmICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRQcm9maWxlJyAmJiAkU2VsZi0+e1Byb2ZpbGV9ICkgfHwgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUdldCgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgZWxzZSB7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE51bWJlciBUaXRsZSBLZXl3b3JkIEZ1bGx0ZXh0IFJlc3VsdEZvcm0pKSB7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwoKICAgICAgICAgICAgIyByZW1vdmUgd2hpdGVzcGFjZSBvbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBcQSBccysgfXt9eG1zOwogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZGIgcXVvdGUgdG8gcHJldmVudCBTUUwgaW5qZWN0aW9uCiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJEdldFBhcmFteyRQYXJhbU5hbWV9ICk7CgogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXJyYXkgcGFyYW1zCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KENhdGVnb3J5SURzIExhbmd1YWdlSURzICkpIHsKCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBhcnJheSBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICBteSBAQXJyYXkgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0QXJyYXkoIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gXEBBcnJheTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGl0ZW0gbmVlZCB0byBnZXQgZXhjbHVkZWQKICAgIGZvciBteSAkRXhjbHVkZSAoQEV4Y2x1ZGVzKSB7CiAgICAgICAgaWYgKCAkR2V0UGFyYW17JEV4Y2x1ZGV9ICkgewogICAgICAgICAgICBkZWxldGUgJEdldFBhcmFteyRFeGNsdWRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgcmVzdWx0IGZvcm0gZW52CiAgICBpZiAoICEkR2V0UGFyYW17UmVzdWx0Rm9ybX0gKSB7CiAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19ID0gJyc7CiAgICB9CiAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewogICAgICAgICRTZWxmLT57U2VhcmNoUGFnZVNob3dufSA9ICRTZWxmLT57U2VhcmNoTGltaXR9OwogICAgfQoKICAgICMgY2hlY2sgcmVxdWVzdAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyByZXN1bHQgcGFnZQogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlYXJjaCcgJiYgISRTZWxmLT57RXJhc2VUZW1wbGF0ZX0gKSB7CgogICAgICAgICMgZmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9IHx8ICEkU2VsZi0+e1NhdmVQcm9maWxlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgbXkgJFVSTCA9ICJBY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX0iCiAgICAgICAgICAgIC4gIjtTb3J0Qnk9JFNlbGYtPntTb3J0Qnl9O09yZGVyQnk9JFNlbGYtPntPcmRlckJ5fTtUYWtlTGFzdFNlYXJjaD0xIgogICAgICAgICAgICAuICI7U3RhcnRIaXQ9JFNlbGYtPntTdGFydEhpdH0iOwoKICAgICAgICAjIHN0b3JlIGxhc3Qgc2NyZWVuCiAgICAgICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e1Nlc3Npb25PYmplY3R9LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIHNlYXJjaCBwcm9maWxlICh1bmRlciBsYXN0LXNlYXJjaCBvciByZWFsIHByb2ZpbGUgbmFtZSkKICAgICAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSA9IDE7CgogICAgICAgICMgcmVtZW1iZXIgbGFzdCBzZWFyY2ggdmFsdWVzCiAgICAgICAgaWYgKCAkU2VsZi0+e1NhdmVQcm9maWxlfSAmJiAkU2VsZi0+e1Byb2ZpbGV9ICkgewoKICAgICAgICAgICAgIyByZW1vdmUgb2xkIHByb2ZpbGUgc3R1ZmYKICAgICAgICAgICAgJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ3VzdG9tZXJGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBpbnNlcnQgbmV3IHByb2ZpbGUgcGFyYW1zCiAgICAgICAgICAgIGZvciBteSAkUGFyYW1OYW1lICgga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1NlYXJjaFByb2ZpbGVPYmplY3R9LT5TZWFyY2hQcm9maWxlQWRkKAogICAgICAgICAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAkUGFyYW1OYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEdldFBhcmFteyRQYXJhbU5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSBmdWxsdGV4dCBzZWFyY2gKICAgICAgICBpZiAoICRHZXRQYXJhbXtGdWxsdGV4dH0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtDb250ZW50U2VhcmNofSA9ICdPUic7CiAgICAgICAgICAgICRHZXRQYXJhbXtXaGF0fSAgICAgICAgICA9ICRHZXRQYXJhbXtGdWxsdGV4dH07CiAgICAgICAgfQoKICAgICAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgID0+IFsgJFNlbGYtPntTb3J0Qnl9IF0sCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgPT4gWyAkU2VsZi0+e09yZGVyQnl9IF0sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICBDb250ZW50U2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgQ1NWIG91dHB1dAogICAgICAgIGlmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdDU1YnICkgewogICAgICAgICAgICBteSBAQ1NWSGVhZDsKICAgICAgICAgICAgbXkgQENTVkRhdGE7CgogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEZBUUlEICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBmb3JtYXQgdGhlIGNoYW5nZSB0aW1lCiAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICckVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCBpbmZvIGZvciBDU1Ygb3V0cHV0CiAgICAgICAgICAgICAgICBteSAlQ1NWSW5mbyA9ICgKICAgICAgICAgICAgICAgICAgICBGQVFOdW1iZXIgPT4gJEZBUURhdGF7TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5ICA9PiAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9LAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICA9PiAkRkFRRGF0YXtMYW5ndWFnZX0sCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICRGQVFEYXRhe1N0YXRlfSwKICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkICAgPT4gJENoYW5nZWQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgICAgICBAQ1NWSGVhZCA9IHF3KCBGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBDU1ZIZWFkKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97JEhlYWRlcn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAnTGFuZ3VhZ2UnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsIHF3KFN0YXRlIENoYW5nZWQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSBoZWFkZXJzCiAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICMgcmVwbGFjZSBGQVFOdW1iZXIgaGVhZGVyIHdpdGggdGhlIGN1cnJlbnQgRkFRSG9vayBmcm9tIGNvbmZpZwogICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYXNzYWJsZSBDU1YgZGF0YQogICAgICAgICAgICBteSAkQ1NWID0gJFNlbGYtPntDU1ZPYmplY3R9LT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICBIZWFkICAgICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgRGF0YSAgICAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkU2VsZi0+e1VzZXJDU1ZTZXBhcmF0b3J9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZXR1cm4gY3N2IHRvIGRvd25sb2FkCiAgICAgICAgICAgIG15ICRDU1ZGaWxlID0gJ0ZBUV9zZWFyY2gnOwogICAgICAgICAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTSA9IHNwcmludGYoICIlMDJkIiwgJE0gKTsKICAgICAgICAgICAgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREICk7CiAgICAgICAgICAgICRoID0gc3ByaW50ZiggIiUwMmQiLCAkaCApOwogICAgICAgICAgICAkbSA9IHNwcmludGYoICIlMDJkIiwgJG0gKTsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRDU1ZGaWxlIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5jc3YiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ1NWLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEZBUUlEICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgdGFibGUgYmxvY2sKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlByaW50SGVhZGVyKCBXaWR0aCA9PiA4MDAgKTsKICAgICAgICAgICAgaWYgKCBzY2FsYXIgQFZpZXdhYmxlRkFRSURzID09ICRTZWxmLT57U2VhcmNoTGltaXR9ICkgewogICAgICAgICAgICAgICAgJFBhcmFte1dhcm5pbmd9ID0gJyRUZXh0eyJSZWFjaGVkIG1heC4gY291bnQgb2YgJXMgc2VhcmNoIGhpdHMhIiwgIicKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57U2VhcmNoTGltaXR9IC4gJyJ9JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaFJlc3VsdFByaW50JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhZGQgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEZvb3RlcigpOwoKICAgICAgICAgICAgIyByZXR1cm4gb3V0cHV0CiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwoKICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgIyBpZiB0aGVyZSBhcmUgcmVzdWx0cyB0byBzaG93CiAgICAgICAgaWYgKEBWaWV3YWJsZUZBUUlEcykgewogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgc2VhcmNoIHJlc3VsdAogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTZWxmLT57U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRTZWxmLT57U2VhcmNoUGFnZVNob3dufSArICRTZWxmLT57U3RhcnRIaXR9ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBGQVFJRCAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGJsb2NrcyB0byB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIHNob3cgYSBubyBkYXRhIGZvdW5kIG1zZwogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGEgbG9va3VwIHRhYmxlIGZvciBhdHRyaWJ1dGUgc2V0dGluZ3MKICAgICAgICBteSAlQXR0cmlidXRlTWFwID0gKAogICAgICAgICAgICBOdW1iZXIgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaXRsZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBLZXl3b3JkID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnS2V5d29yZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRnVsbHRleHQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmludCBlYWNoIGF0dHJpYnV0ZSBpbiBzZWFyY2ggcmVzdWx0cyBhcmVhLgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICgga2V5cyAlQXR0cmlidXRlTWFwICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgYXR0cmlidXRlIHdhcyBkZWZpbmVkIGJ5IHRoZSB1c2VyCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgc2V0IGF0dHJpYnV0ZSBuYW1lIGFuZCB0cmFuc2xhdGUgaXQgaWYgYXBwbGllcwogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZU5hbWUgPSAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57TmFtZX07CiAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGVNYXB7JEF0dHJpYnV0ZX0tPntUcmFuc2xhdGFibGV9ICkgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVOYW1lID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJEF0dHJpYnV0ZU5hbWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVWYWx1ZTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSB2YWx1ZXMgaXMgYW4gYXJyYXkgdG8gcGFyc2UgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgaWYgKCByZWYgJEdldFBhcmFteyRBdHRyaWJ1dGV9IGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICMgQ2F0ZWdvcnkgYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdDYXRlZ29yeUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgbG9uZyBuYW1lIGZvciBhbGwgY3VzdG9tZXIgY2F0ZWdvcmllcwogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ2F0ZWdvcnlMaXN0ID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGNhdGVnb3J5IGlkIHRvIGNhdGVnb3J5IGxvbmcgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBteSBAQ2F0ZWdvcnlOYW1lczsKICAgICAgICAgICAgICAgICAgICAgICAgQ0FURUdPUllJRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDYXRlZG9yeUlEICggQHsgJEdldFBhcmFteyRBdHRyaWJ1dGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgISRDYXRlZ29yeUxpc3QtPnskQ2F0ZWRvcnlJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDYXRlZ29yeU5hbWVzLCAkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIHN0cmluZyB3aXRoIGFsbCBzZWxlY3RlZCBjYXRlZ29yeSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSBqb2luKCAiICsgIiwgQENhdGVnb3J5TmFtZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgTGFuZ3VhZ2VJRHMKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0xhbmd1YWdlSURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGxhbmd1YWdlIGlkIHRvIGxhbmd1YWdlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQExhbmd1YWdlTmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIExBTkdVQUdFSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExhbmd1YWdlTmFtZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IExBTkdVQUdFSUQgaWYgISRMYW5ndWFnZU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBMYW5ndWFnZU5hbWVzLCAkTGFuZ3VhZ2VOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIHN0cmluZyB3aXRoIGFsbCBzZWxlY3RlZCBsYW5ndWFnZSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSBqb2luKCAiICsgIiwgQExhbmd1YWdlTmFtZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdGhlcndpc2UgaXMgYW4gc2NhbGFyIGFuZCBjYW4gYmUgc2V0IGRpcmVjdGx5CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkR2V0UGFyYW17JEF0dHJpYnV0ZX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hUZXJtcycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkQXR0cmlidXRlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRBdHRyaWJ1dGVWYWx1ZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJExpbmsgPSAnUHJvZmlsZT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1Byb2ZpbGV9ICkgLiAnOyc7CiAgICAgICAgJExpbmsgLj0gJ1NvcnRCeT0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5MaW5rRW5jb2RlKCAkU2VsZi0+e1NvcnRCeX0gKSAuICc7JzsKICAgICAgICAkTGluayAuPSAnT3JkZXI9JyAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TGlua0VuY29kZSggJFNlbGYtPntPcmRlckJ5fSApIC4gJzsnOwogICAgICAgICRMaW5rIC49ICdUYWtlTGFzdFNlYXJjaD0xOyc7CgogICAgICAgICMgYnVpbGQgc2VhcmNoIG5hdmlnYXRpb24gYmFyCiAgICAgICAgbXkgJVBhZ2VOYXYgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlBhZ2VOYXZCYXIoCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgU3RhcnRIaXQgID0+ICRTZWxmLT57U3RhcnRIaXR9LAogICAgICAgICAgICBQYWdlU2hvd24gPT4gJFNlbGYtPntTZWFyY2hQYWdlU2hvd259LAogICAgICAgICAgICBBbGxIaXRzICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2giLAogICAgICAgICAgICBMaW5rICAgICAgPT4gJExpbmssCiAgICAgICAgICAgIElEUHJlZml4ICA9PiAiQ3VzdG9tZXJGQVFTZWFyY2giLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBmb290ZXIgZmlsdGVyIC0gc2hvdyBvbmx5IGlmIG1vcmUgdGhlIG9uZSBwYWdlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICggZGVmaW5lZCAkUGFnZU5hdntUb3RhbEhpdHN9ICYmICggJFBhZ2VOYXZ7VG90YWxIaXRzfSA+ICRTZWxmLT57U2VhcmNoUGFnZVNob3dufSApICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUGFnaW5hdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzdGFydCBodG1sIHBhZ2UKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBTZXQgdGhlIFNvcnRCeSBDbGFzcwogICAgICAgIG15ICRTb3J0Q2xhc3M7CgogICAgICAgICMgdGhpcyBzZXRzIHRoZSBvcHBvc2l0IHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgICAgIGlmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnVXAnICkgewogICAgICAgICAgICAkU29ydENsYXNzID0gJ1NvcnREZXNjZW5kaW5nJzsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MgdG8gdGhlIGNvcnJlY3QgZmllbGQKICAgICAgICBteSAlQ1NTU29ydDsKICAgICAgICBteSAkU29ydEJ5ID0gJFNlbGYtPntTb3J0Qnl9IC4gJ1NvcnQnOwogICAgICAgICRDU1NTb3J0eyRTb3J0Qnl9ID0gJFNvcnRDbGFzczsKCiAgICAgICAgbXkgJU5ld09yZGVyID0gKAogICAgICAgICAgICBEb3duID0+ICdVcCcsCiAgICAgICAgICAgIFVwICAgPT4gJ0Rvd24nLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyAkU2VsZi0+e09yZGVyQnl9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICBPcmRlciAgID0+ICROZXdPcmRlcnsgJFNlbGYtPntPcmRlckJ5fSB9LAogICAgICAgICAgICAgICAgUHJvZmlsZSA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRm9vdGVyKCk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyBlbXB0eSBzZWFyY2ggc2l0ZQogICAgZWxzZSB7CgogICAgICAgICMgZGVsZXRlIHByb2ZpbGUKICAgICAgICBpZiAoICRTZWxmLT57RXJhc2VUZW1wbGF0ZX0gJiYgJFNlbGYtPntQcm9maWxlfSApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgICAgICRTZWxmLT57U2VhcmNoUHJvZmlsZU9iamVjdH0tPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJUdldFBhcmFtID0gKCk7CiAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gPSAnJzsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgc2VhcmNoIG1hc2sKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBQcm9maWxlID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIEFyZWEgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgTWFza0Zvcm0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBvdXRwdXQgZm9ybWF0cyBsaXN0CiAgICBteSAlUmVzdWx0Rm9ybSA9ICgKICAgICAgICBOb3JtYWwgPT4gJ05vcm1hbCcsCiAgICAgICAgUHJpbnQgID0+ICdQcmludCcsCiAgICAgICAgQ1NWICAgID0+ICdDU1YnLAogICAgKTsKCiAgICAjIGJ1aWxkIG91dHB1dCBmb3JtYXRzIGxpc3QKICAgICRQYXJhbXtSZXN1bHRGb3JtU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVSZXN1bHRGb3JtfSwKICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtSZXN1bHRGb3JtfSB8fCAnTm9ybWFsJywKICAgICk7CgogICAgIyBnZXQgcHJvZmlsZXMgbGlzdAogICAgbXkgJVByb2ZpbGVzID0gJFNlbGYtPntTZWFyY2hQcm9maWxlT2JqZWN0fS0+U2VhcmNoUHJvZmlsZUxpc3QoCiAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICk7CgogICAgIyBidWlsZCBwcm9maWxlcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte1Byb2ZpbGVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVByb2ZpbGVzfSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1Byb2ZpbGUnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17UHJvZmlsZX0sCiAgICApOwoKICAgICMgZ2V0IGxhbmd1YWdlcyBsaXN0CiAgICBteSAlTGFuZ3VhZ2VzID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCBsYW5ndWFnZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtMYW5ndWFnZXNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiB7JUxhbmd1YWdlc30sCiAgICAgICAgTmFtZSAgICAgICA9PiAnTGFuZ3VhZ2VJRHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17TGFuZ3VhZ2VJRHN9LAogICAgKTsKCiAgICAjIGdldCBjYXRlZ29yaWVzIGxpc3QKICAgIG15ICRDYXRlZ29yaWVzID0gJFNlbGYtPntGQVFPYmplY3R9LT5HZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIGNhdGVnb3JpZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtDYXRlZ29yaWVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gJENhdGVnb3JpZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9LAogICAgKTsKCiAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1NlYXJjaCcsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBzaG93IGxhbmd1YWdlcyBzZWxlY3QKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGRlZmF1bHQgb3B0aW9ucwogICAgJFNlbGYtPntNdWx0aUxhbmd1YWdlfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgICRTZWxmLT57Vm90aW5nfSAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwogICAgJEdldFBhcmFte1JhdGV9ICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdSYXRlJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gJ05lZWQgSXRlbUlEIScgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICgKICAgICAgICAhJFBlcm1pc3Npb24KICAgICAgICB8fCAhJEZBUURhdGF7QXBwcm92ZWR9CiAgICAgICAgfHwgISRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfS0+eyAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgfQoKICAgICMgc3RvcmUgdGhlIGxhc3Qgc2NyZWVuIGluIHNlc3Npb24KICAgICRTZWxmLT57U2Vzc2lvbk9iamVjdH0tPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgIyBtYW5hZ2UgcGFyYW1ldGVycwogICAgICAgICRHZXRQYXJhbXtGaWxlSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZUlEJyApOwogICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFte0ZpbGVJRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvciggTWVzc2FnZSA9PiAnTmVlZCBGaWxlSUQnICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhdHRhY2htZW50cwogICAgICAgIG15ICVGaWxlID0gJFNlbGYtPntGQVFPYmplY3R9LT5BdHRhY2htZW50R2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpbGVJRCA9PiAkR2V0UGFyYW17RmlsZUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICglRmlsZSkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KCVGaWxlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEdldFBhcmFte0ZpbGVJRH0pISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVySGVhZGVyKAogICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBnZXQgRkFRIHZvdGUgaW5mb3JtYXRpb24KICAgIG15ICRWb3RlRGF0YTsKICAgIGlmICggJFNlbGYtPntWb3Rpbmd9ICkgewogICAgICAgICRWb3RlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Vm90ZUdldCgKICAgICAgICAgICAgQ3JlYXRlQnkgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgICAgIEludGVyZmFjZSA9PiAkU2VsZi0+e0ludGVyZmFjZX0tPntTdGF0ZUlEfSwKICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHVzZXIgYWxyZWFkeSB2b3RlZCB0aGlzIEZBUSBpdGVtCiAgICBteSAkQWxyZWFkeVZvdGVkOwogICAgaWYgKCRWb3RlRGF0YSkgewoKICAgICAgICAjIGl0ZW0vY2hhbmdlX3RpbWUgPiB2b3RpbmcvY3JlYXRlX3RpbWUKICAgICAgICBteSAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+VGltZVN0YW1wMlN5c3RlbVRpbWUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRkFRRGF0YXtDaGFuZ2VkfSB8fCAnJywKICAgICAgICApOwogICAgICAgIG15ICRWb3RlQ3JlYXRlZFN5c3RlbVRpbWUgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5UaW1lU3RhbXAyU3lzdGVtVGltZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRWb3RlRGF0YS0+e0NyZWF0ZWR9IHx8ICcnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lIDw9ICRWb3RlQ3JlYXRlZFN5c3RlbVRpbWUgKSB7CiAgICAgICAgICAgICRBbHJlYWR5Vm90ZWQgPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBWb3RlIFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdWb3RlJyApIHsKCiAgICAgICAgIyBjdXN0b21lciBjYW4ndCB1c2UgdGhpcyBzdWJhY3Rpb24gaWYgaXMgbm90IGVuYmxlZAogICAgICAgIGlmICggISRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB1c2VyIGNhbiB2b3RlIG9ubHkgb25jZSBwZXIgRkFRIHJldmlzaW9uCiAgICAgICAgaWYgKCRBbHJlYWR5Vm90ZWQpIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vdGlmeSgKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICBJbmZvICAgICA9PiAnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIHZvdGUgaWYgYW55CiAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtSYXRlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHJhdGVzIGNvbmZpZwogICAgICAgICAgICBteSAkVm90aW5nUmF0ZXMgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpWb3Rpbmc6OlJhdGVzJyk7CiAgICAgICAgICAgIG15ICRSYXRlICAgICAgICA9ICRHZXRQYXJhbXtSYXRlfTsKCiAgICAgICAgICAgICMgc2VuZCBlcnJvciBpZiByYXRlIGlzIG5vdCBkZWZpbmVkIGluIGNvbmZpZwogICAgICAgICAgICBpZiAoICEkVm90aW5nUmF0ZXMtPnskUmF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvcigKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIGFkZCB0aGUgdm90ZQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT57RkFRT2JqZWN0fS0+Vm90ZUFkZCgKICAgICAgICAgICAgICAgICAgICBDcmVhdGVkQnkgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBJUCAgICAgICAgPT4gJEVOVnsnUkVNT1RFX0FERFInfSwKICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFNlbGYtPntJbnRlcmZhY2V9LT57U3RhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgUmF0ZSAgICAgID0+ICRHZXRQYXJhbXtSYXRlfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBzaG93IHRoZSB2b3RpbmcgZm9ybQogICAgICAgICAgICAgICAgJEFscmVhZHlWb3RlZCA9IDE7CgogICAgICAgICAgICAgICAgIyByZWZyZXNoIEZBUSBpdGVtIGRhdGEKICAgICAgICAgICAgICAgICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5vdGlmeSggSW5mbyA9PiAnVGhhbmtzIGZvciB5b3VyIHZvdGUhJyApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVzZXIgaXMgYWJsZSB0byB2b3RlIGJ1dCBubyByYXRlIGhhcyBiZWVuIHNlbGVjdGVkCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gJ05vIHJhdGUgc2VsZWN0ZWQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBwcmVwYXJlIGZpZWxkcyBkYXRhCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgIGlmICggJFNlbGYtPntJbnRlcmZhY2V9LT57TmFtZX0gZXEgJ2V4dGVybmFsJyApIHsKCiAgICAgICAgICAgICMgcmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbgogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9CiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/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+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9GQVFWb3RpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwoKICAgIG15ICRTZWxlY3RlZFJhdGUgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICJTZWxlY3RlZFJhdGUiICk7CgogICAgbXkgJFJhdGVDbGFzcyA9ICdSYXRlVW5DaGVja2VkJzsKCiAgICAjIG91cHV0IHZvdGluZyBibG9jawogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFWb3RpbmcnLAogICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICk7CgogICAgIyBnZXQgVm90aW5nIHJhdGVzIHNldHRpbmcKICAgIG15ICRWb3RpbmdSYXRlcyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMnKTsKICAgIGZvciBteSAkUmF0ZVZhbHVlICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskVm90aW5nUmF0ZXN9ICkgewoKICAgICAgICAjIHNldCBjc3MgcmF0ZSBjbGFzcyBDaGVja2VkIG9yIFVuQ2hlY2tlZAogICAgICAgIGlmICggZGVmaW5lZCAkU2VsZWN0ZWRSYXRlICYmIGludCgkU2VsZWN0ZWRSYXRlKSA+PSAkUmF0ZVZhbHVlICkgewogICAgICAgICAgICAkUmF0ZUNsYXNzID0gJ1JhdGVDaGVja2VkJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRSYXRlQ2xhc3MgPSAnUmF0ZVVuQ2hlY2tlZCc7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBkYXRhIHN0cnVjdXJlIGZvciBvdXRwdXQKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgVmFsdWUgPT4gJFJhdGVWYWx1ZSwKICAgICAgICAgICAgVGl0bGUgPT4gJFZvdGluZ1JhdGVzLT57JFJhdGVWYWx1ZX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgdm90ZSByYXRpbmcgcm93IGJsb2NrCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRVm90aW5nUmF0ZVJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICBJdGVtSUQgICAgPT4gJEZBUURhdGF7SXRlbUlEfSwKICAgICAgICAgICAgICAgIFJhdGVDbGFzcyA9PiAkUmF0ZUNsYXNzLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgdGhlIHN1Ym1pdCBidXR0b24KICAgIGlmICggZGVmaW5lZCAkU2VsZWN0ZWRSYXRlICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gIkZBUVZvdGluZ1N1Ym1pdCIsCiAgICAgICAgICAgIERhdGEgPT4geyBTZWxlY3RlZFJhdGUgPT4gJFNlbGVjdGVkUmF0ZSB9LAogICAgICAgICk7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QgKSkgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVkaXJlY3QgPSAkRU5We1JFUVVFU1RfVVJJfTsKCiAgICBpZiAoJFJlZGlyZWN0KSB7CiAgICAgICAgJFJlZGlyZWN0ID1+IHN7UHVibGljRkFRfXtQdWJsaWNGQVFab29tfXhtczsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRSZWRpcmVjdCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jhc2VsaW5rfQogICAgICAgICAgICAuICdBY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9JwogICAgICAgICAgICAuICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3QsCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRRXhwbG9yZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0IHF3KCk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRPYmplY3QhIiApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBVc2VySUQgdG8gcm9vdCBiZWNhdXNlIGluIHB1YmxpYyBpbnRlcmZhY2UgdGhlcmUgaXMgbm8gdXNlcgogICAgJFNlbGYtPntVc2VySUR9ID0gMTsKCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAkU2VsZi0+e0ludGVyZmFjZX0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICAkU2VsZi0+e1NlYXJjaExpbWl0fSAgICAgPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0gICAgIHx8IDIwMDsKICAgICRTZWxmLT57U2VhcmNoUGFnZVNob3dufSA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaFBhZ2VTaG93bn0gfHwgMzsKICAgICRTZWxmLT57U29ydEJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXInICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIGdldCBJdGVtIElECiAgICBteSAkSXRlbUlEID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApIHx8IDA7CgogICAgIyBjaGVjayBpZiBJdGVtSUQgcGFyYW1ldGVyIHdhcyBzZW50IGFuZCByZWRpcmVjdCB0byBGQVEgYXJ0aWNsZSB6b29tIHNjcmVlbgogICAgaWYgKCRJdGVtSUQpIHsKCiAgICAgICAgIyByZWRpcmVjdCB0byBGQVEgem9vbQogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPlJlZGlyZWN0KCBPUCA9PiAnQWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPScgLiAkSXRlbUlEICk7CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcnkgaWQKICAgIG15ICRDYXRlZ29yeUlEID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgY2hlY2sgZm9yIG5vbiBudW1lcmljIENhdGVnb3J5SUQKICAgIGlmICggJENhdGVnb3J5SUQgIX4gL1xkKy8gKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAwOwogICAgfQoKICAgICMgdHJ5IHRvIGdldCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgbXkgJUNhdGVnb3J5RGF0YTsKICAgIGlmICgkQ2F0ZWdvcnlJRCkgewoKICAgICAgICAjIGdldCBjYXRlZ29yeSBkYXRhCiAgICAgICAgJUNhdGVnb3J5RGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJUNhdGVnb3J5RGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcnNzIGZlZWQgbGluayBmb3IgbmV3IEZBUSBhcnRpY2xlcyBpbiB0aGUgYnJvd3NlciBVUkwgYmFyCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ2FsdGVybmF0ZScsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9yc3MreG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJyksCiAgICAgICAgICAgIEhyZWYgID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVJTUztUeXBlPUNyZWF0ZWQnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIHJzcyBmZWVkIGxpbmsgZm9yIGNoYW5nZWQgRkFRIGFydGljbGVzIGluIHRoZSBicm93c2VyIFVSTCBiYXIKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgID0+ICdhbHRlcm5hdGUnLAogICAgICAgICAgICBUeXBlID0+ICdhcHBsaWNhdGlvbi9yc3MreG1sJywKICAgICAgICAgICAgVGl0bGUgPT4KICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJyksCiAgICAgICAgICAgIEhyZWYgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRUlNTO1R5cGU9Q2hhbmdlZCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgcnNzIGZlZWQgbGluayBmb3IgVG9wMTAgRkFRIGFydGljbGVzIGluIHRoZSBicm93c2VyIFVSTCBiYXIKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnYWx0ZXJuYXRlJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnRkFRIEFydGljbGVzIChUb3AgMTApJyksCiAgICAgICAgICAgIEhyZWYgID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVJTUztUeXBlPVRvcDEwJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVySGVhZGVyKCk7CgogICAgIyBzaG93IEZBUSBwYXRoCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGFsbCBkaXJlY3Qgc3ViY2F0ZWdvcmllcyBvZiB0aGUgc2VsZWN0ZWQgY2F0ZWdvcnkKICAgIG15ICRDYXRlZ29yeUlEc1JlZiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+UHVibGljQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgTW9kZSAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgc3ViY2F0ZWdvcmllcyBsaXN0CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdTdWJjYXRlZ29yaWVzJyApOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHQnICk7CgogICAgIyBjaGVjayBpZiB0aGVyZSBhcmUgc3ViY2F0ZWdvcmllcwogICAgaWYgKCAkQ2F0ZWdvcnlJRHNSZWYgJiYgcmVmICRDYXRlZ29yeUlEc1JlZiBlcSAnQVJSQVknICYmIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgIyBzaG93IGRhdGEgZm9yIGVhY2ggc3ViY2F0ZWdvcnkKICAgICAgICBmb3IgbXkgJFN1YkNhdGVnb3J5SUQgKCBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICBteSAlU3ViQ2F0ZWdvcnlEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBudW1iZXIgb2Ygc3ViY2F0ZWdvcmllcyBvZiB0aGlzIHN1YmNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7U3ViQ2F0ZWdvcnlDb3VudH0gPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkNhdGVnb3J5Q291bnQoCiAgICAgICAgICAgICAgICBQYXJlbnRJRHMgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIGZhcSBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7QXJ0aWNsZUNvdW50fSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRQ291bnQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgICAgICBPbmx5QXBwcm92ZWQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JVN1YkNhdGVnb3J5RGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZAogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9DYXRlZ29yeURhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlYXJjaCBhbGwgRkFRIGFydGljbGVzIHdpdGhpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyAkU2VsZi0+e1NvcnRCeX0gXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJFNlbGYtPntPcmRlckJ5fSBdLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICA9PiBbJENhdGVnb3J5SURdLAogICAgKTsKCiAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzCiAgICBteSAkU29ydENsYXNzOwoKICAgICMgdGhpcyBzZXRzIHRoZSBvcHBvc2l0IHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgaWYgKCAkU2VsZi0+e09yZGVyQnl9IGVxICdEb3duJyApIHsKICAgICAgICAkU29ydENsYXNzID0gJ1NvcnRBc2NlbmRpbmcnOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e09yZGVyQnl9IGVxICdVcCcgKSB7CiAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICB9CgogICAgIyBzZXQgdGhlIFNvcnRCeSBDbGFzcyB0byB0aGUgY29ycmVjdCBmaWVsZAogICAgbXkgJUNTU1NvcnQ7CiAgICBteSAkU29ydEJ5ID0gJFNlbGYtPntTb3J0Qnl9IC4gJ1NvcnQnOwogICAgJENTU1NvcnR7JFNvcnRCeX0gPSAkU29ydENsYXNzOwoKICAgIG15ICVOZXdPcmRlciA9ICgKICAgICAgICBEb3duID0+ICdVcCcsCiAgICAgICAgVXAgICA9PiAnRG93bicsCiAgICApOwoKICAgICMgc2hvdyB0aGUgRkFRIGFydGljbGUgbGlzdAogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFJdGVtTGlzdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICBPcmRlciA9PiAkTmV3T3JkZXJ7ICRTZWxmLT57T3JkZXJCeX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2UgaGVhZGVyCiAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICAlQ1NTU29ydCwKICAgICAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnsgJFNlbGYtPntPcmRlckJ5fSB9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAwOwogICAgaWYgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAjIGNyZWF0ZSBiYWNrIGxpbmsgZm9yIEZBUSBab29tIHNjcmVlbgogICAgICAgIG15ICRab29tQmFja0xpbmsgPSAiQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JENhdGVnb3J5SUQ7IgogICAgICAgICAgICAuICJTb3J0Qnk9JFNlbGYtPntTb3J0Qnl9O09yZGVyPSRTZWxmLT57T3JkZXJCeX07U3RhcnRIaXQ9JFNlbGYtPntTdGFydEhpdH0iOwoKICAgICAgICAjIGVuY29kZSBiYWNrIGxpbmsgdG8gQmFzZTY0IGZvciBlYXN5IEhUTUwgdHJhbnNwb3J0CiAgICAgICAgJFpvb21CYWNrTGluayA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCgkWm9vbUJhY2tMaW5rKTsKCiAgICAgICAgZm9yIG15ICRGQVFJRCAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBidWlsZCBzZWFyY2ggcmVzdWx0CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTZWxmLT57U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ICsgJFNlbGYtPntTdGFydEhpdH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEgZGV0YWlscwogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBGQVFJRCAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGJsb2NrcyB0byB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgWm9vbUJhY2tMaW5rID0+ICRab29tQmFja0xpbmssCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZAogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9GQVFEYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExpbmsgPSAnU29ydEJ5PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57U29ydEJ5fSApIC4gJzsnOwogICAgJExpbmsgLj0gJ09yZGVyPScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkxpbmtFbmNvZGUoICRTZWxmLT57T3JkZXJCeX0gKSAuICc7JzsKCiAgICAjIGJ1aWxkIHNlYXJjaCBuYXZpZ2F0aW9uIGJhcgogICAgbXkgJVBhZ2VOYXYgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU2VsZi0+e1N0YXJ0SGl0fSwKICAgICAgICBQYWdlU2hvd24gPT4gJFNlbGYtPntTZWFyY2hQYWdlU2hvd259LAogICAgICAgIEFsbEhpdHMgICA9PiAkQ291bnRlciwKICAgICAgICBBY3Rpb24gICAgPT4gIkFjdGlvbj1QdWJsaWNGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEIiwKICAgICAgICBMaW5rICAgICAgPT4gJExpbmssCiAgICAgICAgSURQcmVmaXggID0+ICJQdWJsaWNGQVFFeHBsb3JlciIsCiAgICApOwoKICAgICMgc2hvdyBmb290ZXIgZmlsdGVyIC0gc2hvdyBvbmx5IGlmIG1vcmUgdGhlIG9uZSBwYWdlIGlzIGF2YWlsYWJsZQogICAgaWYgKCBkZWZpbmVkICRQYWdlTmF2e1RvdGFsSGl0c30gJiYgKCAkUGFnZU5hdntUb3RhbEhpdHN9ID4gJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ICkgKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUGFnaW5hdGlvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgUXVpY2tTZWFyY2gKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRU2hvd1F1aWNrU2VhcmNoKAogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnUHVibGljJywKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzaG93IGxhc3QgYWRkZWQgYW5kIGxhc3QgdXBkYXRlZCBhcnRpY2xlcwogICAgZm9yIG15ICRUeXBlIChxdyhMYXN0Q3JlYXRlIExhc3RDaGFuZ2UpKSB7CgogICAgICAgIG15ICRTaG93T2sgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJFNlbGYtPntGQVFPYmplY3R9LAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJFR5cGUsCiAgICAgICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnUHVibGljJywKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdG9wIHRlbiBhcnRpY2xlcwogICAgbXkgJFNob3dPayA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRU2hvd1RvcDEwKAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBlcnJvcgogICAgaWYgKCAhJFNob3dPayApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljRkFRRXhwbG9yZXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgJUNhdGVnb3J5RGF0YSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUHJpbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlsczsKdXNlIEtlcm5lbDo6U3lzdGVtOjpQREY7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QgTWFpbk9iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgICMgY3JlYXRlIGFkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0hUTUxVdGlsc09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57UERGT2JqZWN0fSAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpQREYtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntGQVFPYmplY3R9ICAgICAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgZGVmYXVsdCBvcHRpb25zCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwogICAgJFNlbGYtPntWb3Rpbmd9ICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGYXRhRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05vIEl0ZW1JRCBpcyBnaXZlbiEnLAogICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW4uJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtIGRhdGEKICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBzaG93IG5vIHBlcm1pc3Npb24gZXJyb3IKICAgIGlmICgKICAgICAgICAhJEZBUURhdGF7QXBwcm92ZWR9CiAgICAgICAgfHwgISRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfS0+eyAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgfQoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIHJld3JpdGUgbGlua3MgdG8gZW1iZWRkZWQgaW1hZ2VzIGZvciBjdXN0b21lciBhbmQgcHVibGljIGludGVyZmFjZQogICAgICAgIGlmICggJFNlbGYtPntJbnRlcmZhY2V9e05hbWV9IGVxICdwdWJsaWMnICkgewogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9CiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFab29tfWd4bXM7CiAgICAgICAgfQoKICAgICAgICAjIG5vIHF1b3RpbmcgaWYgaHRtbCB2aWV3IGlzIGVuYWJsZWQKICAgICAgICBuZXh0IEZJRUxEIGlmICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBodG1sIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBwZGYgb3V0cHV0CiAgICBpZiAoICRTZWxmLT57UERGT2JqZWN0fSApIHsKICAgICAgICBteSAkVGltZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KCBUZW1wbGF0ZSA9PiAnJEVudnsiVGltZSJ9JyApOwogICAgICAgIG15ICRVcmwgPSAnICc7CiAgICAgICAgaWYgKCAkRU5We1JFUVVFU1RfVVJJfSApIHsKICAgICAgICAgICAgJFVybCA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdIdHRwVHlwZScpIC4gJzovLycKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZRRE4nKQogICAgICAgICAgICAgICAgLiAkRU5We1JFUVVFU1RfVVJJfTsKICAgICAgICB9CiAgICAgICAgbXkgJVBhZ2U7CgogICAgICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgICAgICBpZiAoICEkUGFnZXtNYXhQYWdlc30gfHwgJFBhZ2V7TWF4UGFnZXN9IDwgMSB8fCAkUGFnZXtNYXhQYWdlc30gPiAxMDAwICkgewogICAgICAgICAgICAkUGFnZXtNYXhQYWdlc30gPSAxMDA7CiAgICAgICAgfQogICAgICAgIG15ICRIZWFkZXJSaWdodCAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJykgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgIG15ICRIZWFkbGluZUxlZnQgPSAkSGVhZGVyUmlnaHQ7CiAgICAgICAgbXkgJFRpdGxlICAgICAgICA9ICRIZWFkZXJSaWdodDsKICAgICAgICBpZiAoICRGQVFEYXRhe1RpdGxlfSApIHsKICAgICAgICAgICAgJEhlYWRsaW5lTGVmdCA9ICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICAgICAgJFRpdGxlIC49ICcgLyAnIC4gJEZBUURhdGF7VGl0bGV9OwogICAgICAgIH0KCiAgICAgICAgJFBhZ2V7TWFyZ2luVG9wfSAgICAgPSAzMDsKICAgICAgICAkUGFnZXtNYXJnaW5SaWdodH0gICA9IDQwOwogICAgICAgICRQYWdle01hcmdpbkJvdHRvbX0gID0gNDA7CiAgICAgICAgJFBhZ2V7TWFyZ2luTGVmdH0gICAgPSA0MDsKICAgICAgICAkUGFnZXtIZWFkZXJSaWdodH0gICA9ICRIZWFkZXJSaWdodDsKICAgICAgICAkUGFnZXtIZWFkbGluZUxlZnR9ICA9ICRIZWFkbGluZUxlZnQ7CiAgICAgICAgJFBhZ2V7SGVhZGxpbmVSaWdodH0gPSAkVGltZTsKICAgICAgICAkUGFnZXtGb290ZXJMZWZ0fSAgICA9ICRVcmw7CiAgICAgICAgJFBhZ2V7UGFnZVRleHR9ICAgICAgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnUGFnZScpOwogICAgICAgICRQYWdle1BhZ2VDb3VudH0gICAgID0gMTsKCiAgICAgICAgIyBjcmVhdGUgbmV3IHBkZiBkb2N1bWVudAogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+RG9jdW1lbnROZXcoCiAgICAgICAgICAgIFRpdGxlICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICAgICAgRW5jb2RlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJDaGFyc2V0fSwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBmaXJzdCBwZGYgcGFnZQogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgKTsKICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CgogICAgICAgICMgdHlwZSBvZiBwcmludCB0YWcKICAgICAgICBteSAkUHJpbnRUYWcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnRkFRIEFydGljbGUgUHJpbnQnKTsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRQcmludFRhZywKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gOSwKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkJywKICAgICAgICAgICAgQWxpZ24gICAgPT4gJ3JpZ2h0JywKICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC02LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGZhcSBpbmZvcm1hdGlvbgogICAgICAgICRTZWxmLT5fUERGT3V0cHV0RkFRSGVhZGVySW5mbygKICAgICAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CiAgICAgICAgICAgICRTZWxmLT5fUERGT3V0cHV0S2V5d29yZHMoCiAgICAgICAgICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X1BERk91cHV0RkFRQ29udGVudCgKICAgICAgICAgICAgUGFnZURhdGEgICAgICAgID0+IFwlUGFnZSwKICAgICAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IFwlRkFRRGF0YSwKICAgICAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICApOwoKICAgICAgICAjIHJldHVybiB0aGUgcGRmIGRvY3VtZW50CiAgICAgICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV8nIC4gJEZBUURhdGF7TnVtYmVyfTsKICAgICAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lKCksCiAgICAgICAgKTsKICAgICAgICAkTSA9IHNwcmludGYoICIlMDJkIiwgJE0gKTsKICAgICAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICAgICAkaCA9IHNwcmludGYoICIlMDJkIiwgJGggKTsKICAgICAgICAkbSA9IHNwcmludGYoICIlMDJkIiwgJG0gKTsKICAgICAgICBteSAkUERGU3RyaW5nID0gJFNlbGYtPntQREZPYmplY3R9LT5Eb2N1bWVudE91dHB1dCgpOwogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0ucGRmIiwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdhdHRhY2htZW50JywKICAgICAgICApOwogICAgfQoKICAgICMgZ2VuZXJhdGUgaHRtbCBvdXRwdXQKICAgIGVsc2UgewoKICAgICAgICAjIG91dHB1dCBoZWFkZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRIZWFkZXIoIFZhbHVlID0+ICRGQVFEYXRhe051bWJlcn0gKTsKCiAgICAgICAgIyBzaG93IEZBUSBDb250ZW50CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFDb250ZW50U2hvdygKICAgICAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRTZWxmLT57RkFRT2JqZWN0fSwKICAgICAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGZhcQogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9IVE1MTWFzaygKICAgICAgICAgICAgRkFRSUQgPT4gJEdldFBhcmFte0ZBUUlEfSwKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRGb290ZXIoKTsKCiAgICAgICAgIyByZXR1cm4gb3V0cHV0CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBfUERGT3V0cHV0RkFRSGVhZGVySW5mbyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgIyBjcmVhdGUgbGVmdCB0YWJsZQogICAgbXkgJFRhYmxlTGVmdCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdDYXRlZ29yeScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCggJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfSApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRGQVFEYXRhe1N0YXRlfSApLAogICAgICAgIH0sCiAgICBdOwoKICAgICMgbGFuZ3VhZ2Ugcm93LCBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICBteSAkUm93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnTGFuZ3VhZ2UnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRGQVFEYXRhe0xhbmd1YWdlfSApLAogICAgICAgIH07CiAgICAgICAgcHVzaCBAeyRUYWJsZUxlZnR9LCAkUm93OwogICAgfQoKICAgICMgY3JlYXRlIHJpZ2h0IHRhYmxlCiAgICBteSAkVGFibGVSaWdodDsKCiAgICAjIHZvdGluZyByb3dzLCBmZWF0cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgJFRhYmxlUmlnaHQgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdWb3RlcycpIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7Vm90ZXN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnUmVzdWx0JykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSAuICIgJSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXTsKICAgIH0KCiAgICAjIGxhc3QgdXBkYXRlIHJvdwogICAgcHVzaCBAeyRUYWJsZVJpZ2h0fSwgewogICAgICAgIEtleSAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdMYXN0IHVwZGF0ZScpIC4gJzonLAogICAgICAgIFZhbHVlID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZSA9PiAnJFRpbWVMb25neyIkRGF0YXsiQ2hhbmdlZCJ9In0nLAogICAgICAgICAgICBEYXRhICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgKSwKICAgIH07CgogICAgbXkgJFJvd3MgPSBAeyRUYWJsZUxlZnR9OwogICAgaWYgKCBAeyRUYWJsZVJpZ2h0fSA+ICRSb3dzICkgewogICAgICAgICRSb3dzID0gQHskVGFibGVSaWdodH07CiAgICB9CgogICAgbXkgJVRhYmxlUGFyYW07CiAgICBmb3IgbXkgJFJvdyAoIDEgLi4gJFJvd3MgKSB7CiAgICAgICAgJFJvdy0tOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57S2V5fTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgICAgICAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gICAgICAgICA9ICRUYWJsZUxlZnQtPlskUm93XS0+e1ZhbHVlfTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMl17Q29udGVudH0gICAgICAgICA9ICcgJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMl17QmFja2dyb3VuZENvbG9yfSA9ICcjRkZGRkZGJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bM117Q29udGVudH0gICAgICAgICA9ICRUYWJsZVJpZ2h0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVs0XXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e1ZhbHVlfTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDE3MC41OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMl17V2lkdGh9ID0gNDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzNde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bNF17V2lkdGh9ID0gMTcwLjU7CgogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNBQUFBQUEnOwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yT2RkfSAgPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRTZWxmLT57UERGT2JqZWN0fS0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dEtleXdvcmRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUYWJsZVBhcmFtOwoKICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVswXVswXXtDb250ZW50fSA9ICRGQVFEYXRhe0tleXdvcmRzfSB8fCAnJzsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDUxMTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRTZWxmLT57UERGT2JqZWN0fS0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0tleXdvcmRzJyksCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFNlbGYtPntQREZPYmplY3R9LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRTZWxmLT57UERGT2JqZWN0fS0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57UERGT2JqZWN0fS0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91cHV0RkFRQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgZ2V0IHRoZSBjb25maWcgb2YgRkFRIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgbXkgJUZpZWxkczsKICAgIEZJRUxEOgogICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBGQVEgZmllbGQKICAgICAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBza2lwIG92ZXIgbm90IHNob3duIGZpZWxkcwogICAgICAgIG5leHQgRklFTEQgaWYgISRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBzdG9yZSBvbmx5IHRoZSBjb25maWcgb2YgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgJEZpZWxkc3sgIkZpZWxkIiAuICROdW1iZXIgfSA9ICRDb25maWc7CiAgICB9CgogICAgIyBzb3J0IHNob3duIGZpZWxkcyBieSBwcmlvcml0eQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZAogICAgICAgIG15ICRTdGF0ZVR5cGVEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkRmllbGRzeyRGaWVsZH0tPntTaG93fSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGRvIG5vdCBzaG93IGZpZWxkcyB0aGF0IGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgZ2l2ZW4gaW50ZXJmYWNlCiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJFBhcmFte0ludGVyZmFjZVN0YXRlc30tPnsgJFN0YXRlVHlwZURhdGEtPntTdGF0ZUlEfSB9OwoKICAgICAgICBteSAlVGFibGVQYXJhbTsKCiAgICAgICAgIyBjb252ZXJ0IEhUTUwgdG8gYXNjaWkKICAgICAgICBteSAkQXNjaWlGaWVsZCA9ICRTZWxmLT57SFRNTFV0aWxzT2JqZWN0fS0+VG9Bc2NpaSggU3RyaW5nID0+ICRGQVFEYXRheyRGaWVsZH0gKTsKCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WzBdWzBde0NvbnRlbnR9ID0gJEFzY2lpRmllbGQgfHwgJyc7CiAgICAgICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gNTExOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtMTUsCiAgICAgICAgKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGZpZWxkIG5hbWUgYW5kIHN0YXRlCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCAkRmllbGRzeyRGaWVsZH0tPnsnQ2FwdGlvbid9ICkKICAgICAgICAgICAgLiAnICgnCiAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoICRTdGF0ZVR5cGVEYXRhLT57TmFtZX0gKQogICAgICAgICAgICAuICcpJzsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkU2VsZi0+e1BERk9iamVjdH0tPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFNlbGYtPntQREZPYmplY3R9LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntQREZPYmplY3R9LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfSFRNTE1hc2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNob3cgTGFuZ3VhZ2UKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyByYXRpbmcKICAgIGlmICggJFNlbGYtPntWb3Rpbmd9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JhdGluZycsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVByaW50JywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUlNTOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CnVzZSBLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzOwp1c2UgWE1MOjpSU1M6OlNpbXBsZUdlbiBxdygpOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAoCiAgICAgICAgcXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRTZWxmLT57JE9iamVjdH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+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+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGEgcHJldmlldyBvZiB0aGUgZmlyc3QgdHdvIGZpZWxkcwogICAgICAgIG15ICRQcmV2aWV3ID0gJyc7CiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgaWYgKCAkSXRlbURhdGF7IkZpZWxkJENvdW50In0gKSB7CiAgICAgICAgICAgICAgICAkUHJldmlldyAuPSAkSXRlbURhdGF7IkZpZWxkJENvdW50In07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY29udmVydCBwcmV2aWV3IHRvIGFzY2lpCiAgICAgICAgJFByZXZpZXcgPSAkU2VsZi0+e0hUTUxVdGlsc09iamVjdH0tPlRvQXNjaWkoIFN0cmluZyA9PiAkUHJldmlldyApOwoKICAgICAgICAjIHJlZHVjZSBzaXplIG9mIHByZXZpZXcKICAgICAgICAkUHJldmlldyA9fiBzeyBcQSAoIC57ODB9ICkgLiogXHogfXskMVxbXC5cLlxdfWd4bXM7CgogICAgICAgICMgYnVpbGQgdGhlIFJTUyBpdGVtCiAgICAgICAgJFNlbGYtPntSU1NPYmplY3R9LT5pdGVtKAogICAgICAgICAgICAiaHR0cDovLyRFTlZ7SFRUUF9IT1NUfSRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jhc2VsaW5rfUFjdGlvbj1QdWJsaWNGQVFab29tJkl0ZW1JRD0kSXRlbUlEIiwKICAgICAgICAgICAgJEl0ZW1EYXRhe1RpdGxlfSwKICAgICAgICAgICAgJFByZXZpZXcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgdG8gc3RyaW5nCiAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntSU1NPYmplY3R9LT5hc19zdHJpbmcoKTsKCiAgICAjIGNoZWNrIGVycm9yCiAgICBpZiAoICEkT3V0cHV0ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gIkNhbid0IGNyZWF0ZSBSU1MgZmlsZSEiICk7CiAgICB9CgogICAgIyByZXR1cm4gdGhlIFJTUyBmZWVkCiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NCBxdygpOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpDU1Y7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciAocXcoUGFyYW1PYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBDb25maWdPYmplY3QpKSB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskX30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAiR290IG5vICRfISIgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57Q1NWT2JqZWN0fSA9IEtlcm5lbDo6U3lzdGVtOjpDU1YtPm5ldyglUGFyYW0pOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgJFNlbGYtPntJbnRlcmZhY2V9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICAkU2VsZi0+e1NlYXJjaExpbWl0fSAgICAgPSAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0gICAgIHx8IDIwMDsKICAgICRTZWxmLT57U2VhcmNoUGFnZVNob3dufSA9ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaFBhZ2VTaG93bn0gfHwgNDA7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgJFNlbGYtPntPcmRlckJ5fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IEZBUSBudW1iZXIKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgZnVsbHRleHQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgKSB7CiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJlbWVtYmVyIGV4Y2x1ZGUgYXR0cmlidXRlcwogICAgbXkgQEV4Y2x1ZGVzID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAnRXhjbHVkZScgKTsKCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE51bWJlciBUaXRsZSBLZXl3b3JkIEZ1bGx0ZXh0IFJlc3VsdEZvcm0pKSB7CgogICAgICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgIyByZW1vdmUgd2hpdGVzcGFjZSBvbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgfQoKICAgICAgICAjIGRiIHF1b3RlIHRvIHByZXZlbnQgU1FMIGluamVjdGlvbgogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJEdldFBhcmFteyRQYXJhbU5hbWV9ICk7CgogICAgICAgICMgc3RvcmUgbm9uIGVtcHR5IHBhcmFtZXRlcnMgb24gYSBsb2NhbCBwcm9maWxlCiAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gLj0gIiRQYXJhbU5hbWU9JEdldFBhcmFteyRQYXJhbU5hbWV9OyI7CiAgICAgICAgfQoKICAgIH0KCiAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhDYXRlZ29yeUlEcyBMYW5ndWFnZUlEcyApKSB7CgogICAgICAgICMgZ2V0IHNlYXJjaCBhcnJheSBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgIG15IEBBcnJheSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRBcnJheSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgICAgIGlmIChAQXJyYXkpIHsKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gXEBBcnJheTsKCiAgICAgICAgICAgICMgc3RvcmUgcGFyYW1ldGVycyBvbiBhIGxvY2FsIHByb2ZpbGUKICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50IChAQXJyYXkpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0KICAgICAgICAgICAgICAgICAgICAuPSAkUGFyYW1OYW1lIC4gJz0nIC4gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkRWxlbWVudCwgJ0ludGVnZXInICkgLiAnOyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBpdGVtIG5lZWQgdG8gZ2V0IGV4Y2x1ZGVkCiAgICBmb3IgbXkgJEV4Y2x1ZGUgKEBFeGNsdWRlcykgewogICAgICAgIGlmICggJEdldFBhcmFteyRFeGNsdWRlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRHZXRQYXJhbXskRXhjbHVkZX07CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IHJlc3VsdCBmb3JtIGVudgogICAgaWYgKCAhJEdldFBhcmFte1Jlc3VsdEZvcm19ICkgewogICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSA9ICcnOwogICAgfQogICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKICAgICAgICAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gPSAkU2VsZi0+e1NlYXJjaExpbWl0fTsKICAgIH0KCiAgICAjIGNoZWNrIHJlcXVlc3QKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb24nICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHJlc3VsdCBwYWdlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJFNlbGYtPntFcmFzZVRlbXBsYXRlfSApIHsKCiAgICAgICAgIyBwcmVwYXJlIGZ1bGx0ZXh0IHNlYXJjaAogICAgICAgIGlmICggJEdldFBhcmFte0Z1bGx0ZXh0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte0NvbnRlbnRTZWFyY2h9ID0gJ09SJzsKICAgICAgICAgICAgJEdldFBhcmFte1doYXR9ICAgICAgICAgID0gJEdldFBhcmFte0Z1bGx0ZXh0fTsKICAgICAgICB9CgogICAgICAgICMgcGVyZm9ybSBGQVEgc2VhcmNoCiAgICAgICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyAkU2VsZi0+e1NvcnRCeX0gXSwKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFN0YXRlcyAgICAgICAgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICAgICAgQ29udGVudFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDU1Ygb3V0cHV0CiAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CiAgICAgICAgICAgIG15IEBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWRGF0YTsKCiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgRkFRSUQgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGZvcm1hdCB0aGUgY2hhbmdlIHRpbWUKICAgICAgICAgICAgICAgIG15ICRDaGFuZ2VkID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJyRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9JywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZ2V0IGluZm8gZm9yIENTViBvdXRwdXQKICAgICAgICAgICAgICAgIG15ICVDU1ZJbmZvID0gKAogICAgICAgICAgICAgICAgICAgIEZBUU51bWJlciA9PiAkRkFRRGF0YXtOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnkgID0+ICRGQVFEYXRhe0NhdGVnb3J5TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgID0+ICRGQVFEYXRhe0xhbmd1YWdlfSwKICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkICAgPT4gJENoYW5nZWQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgICAgICBAQ1NWSGVhZCA9IHF3KCBGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAnQ2hhbmdlZCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBteSBARGF0YTsKICAgICAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQERhdGEsICRDU1ZJbmZveyRIZWFkZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVzaCBAQ1NWRGF0YSwgXEBEYXRhOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNzdiBxdW90ZQogICAgICAgICAgICAjIHRyYW5zbGF0ZSBub24gZXhpc3RpbmcgaGVhZGVyIG1heSByZXN1bHQgaW4gYSBnYXJiYWdlIGZpbGUKICAgICAgICAgICAgaWYgKCAhQENTVkhlYWQgKSB7CiAgICAgICAgICAgICAgICBAQ1NWSGVhZCA9IHF3KEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CgogICAgICAgICAgICAgICAgIyBpbnNlcnQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAnQ2hhbmdlZCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdHJhbnNsYXRlIGhlYWRlcnMKICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgIyByZXBsYWNlIEZBUU51bWJlciBoZWFkZXIgd2l0aCB0aGUgY3VycmVudCBGQVFIb29rIGZyb20gY29uZmlnCiAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgZXEgJ0ZBUU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgkSGVhZGVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhc3NhYmxlIENTViBkYXRhCiAgICAgICAgICAgIG15ICRDU1YgPSAkU2VsZi0+e0NTVk9iamVjdH0tPkFycmF5MkNTVigKICAgICAgICAgICAgICAgIEhlYWQgICAgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgPT4gXEBDU1ZEYXRhLAogICAgICAgICAgICAgICAgU2VwYXJhdG9yID0+ICRTZWxmLT57VXNlckNTVlNlcGFyYXRvcn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJldHVybiBjc3YgdG8gZG93bmxvYWQKICAgICAgICAgICAgbXkgJENTVkZpbGUgPSAnRkFRX3NlYXJjaCc7CiAgICAgICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lKCksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICAgICAgICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAgICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJENTVkZpbGUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLmNzdiIsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAidGV4dC9jc3Y7IGNoYXJzZXQ9IiAuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRDU1YsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgRkFRSUQgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCB0YWJsZSBibG9jawogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG91dHB1dCBoZWFkZXIKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UHJpbnRIZWFkZXIoIFdpZHRoID0+IDgwMCApOwogICAgICAgICAgICBpZiAoIHNjYWxhciBAVmlld2FibGVGQVFJRHMgPT0gJFNlbGYtPntTZWFyY2hMaW1pdH0gKSB7CiAgICAgICAgICAgICAgICAkUGFyYW17V2FybmluZ30gPSAnJFRleHR7IlJlYWNoZWQgbWF4LiBjb3VudCBvZiAlcyBzZWFyY2ggaGl0cyEiLCAiJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntTZWFyY2hMaW1pdH0gLiAnIn0nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaFJlc3VsdFByaW50JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhZGQgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5QcmludEZvb3RlcigpOwoKICAgICAgICAgICAgIyByZXR1cm4gb3V0cHV0CiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwoKICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgIyBpZiB0aGVyZSBhcmUgcmVzdWx0cyB0byBzaG93CiAgICAgICAgaWYgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgIyBjcmVhdGUgYmFjayBsaW5rIGZvciBGQVEgWm9vbSBzY3JlZW4KICAgICAgICAgICAgbXkgJFpvb21CYWNrTGluayA9ICJBY3Rpb249UHVibGljRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7IgogICAgICAgICAgICAgICAgLiAkU2VsZi0+e1Byb2ZpbGV9CiAgICAgICAgICAgICAgICAuICJTb3J0Qnk9JFNlbGYtPntTb3J0Qnl9O09yZGVyPSRTZWxmLT57T3JkZXJCeX07U3RhcnRIaXQ9JFNlbGYtPntTdGFydEhpdH0iOwoKICAgICAgICAgICAgIyBlbmNvZGUgYmFjayBsaW5rIHRvIEJhc2U2NCBmb3IgZWFzeSBIVE1MIHRyYW5zcG9ydAogICAgICAgICAgICAkWm9vbUJhY2tMaW5rID0gTUlNRTo6QmFzZTY0OjplbmNvZGVfYmFzZTY0KCRab29tQmFja0xpbmspOwoKICAgICAgICAgICAgZm9yIG15ICRGQVFJRCAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIHNlYXJjaCByZXN1bHQKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkU2VsZi0+e1N0YXJ0SGl0fQogICAgICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VsZi0+e1NlYXJjaFBhZ2VTaG93bn0gKyAkU2VsZi0+e1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRkFRSUQgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBibG9ja3MgdG8gdGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWm9vbUJhY2tMaW5rID0+ICRab29tQmFja0xpbmssCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIHNob3cgYSBubyBkYXRhIGZvdW5kIG1zZwogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGEgbG9va3VwIHRhYmxlIGZvciBhdHRyaWJ1dGUgc2V0dGluZ3MKICAgICAgICBteSAlQXR0cmlidXRlTWFwID0gKAogICAgICAgICAgICBOdW1iZXIgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaXRsZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBLZXl3b3JkID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnS2V5d29yZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRnVsbHRleHQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmludCBlYWNoIGF0dHJpYnV0ZSBpbiBzZWFyY2ggcmVzdWx0cyBhcmVhLgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICgga2V5cyAlQXR0cmlidXRlTWFwICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgYXR0cmlidXRlIHdhcyBkZWZpbmVkIGJ5IHRoZSB1c2VyCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgc2V0IGF0dHJpYnV0ZSBuYW1lIGFuZCB0cmFuc2xhdGUgaXQgaWYgYXBwbGllcwogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZU5hbWUgPSAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57TmFtZX07CiAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGVNYXB7JEF0dHJpYnV0ZX0tPntUcmFuc2xhdGFibGV9ICkgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVOYW1lID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJEF0dHJpYnV0ZU5hbWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVWYWx1ZTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSB2YWx1ZXMgaXMgYW4gYXJyYXkgdG8gcGFyc2UgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgaWYgKCByZWYgJEdldFBhcmFteyRBdHRyaWJ1dGV9IGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICMgQ2F0ZWdvcnkgYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdDYXRlZ29yeUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgbG9uZyBuYW1lIGZvciBhbGwgcHVibGljIGNhdGVnb3JpZXMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENhdGVnb3J5TGlzdCA9ICRTZWxmLT57RkFRT2JqZWN0fS0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgZWFjaCBjYXRlZ29yeSBpZCB0byBjYXRlZ29yeSBsb25nIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQENhdGVnb3J5TmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIENBVEVHT1JZSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ2F0ZWRvcnlJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDQVRFR09SWUlEIGlmICEkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ2F0ZWdvcnlOYW1lcywgJENhdGVnb3J5TGlzdC0+eyRDYXRlZG9yeUlEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSBzdHJpbmcgd2l0aCBhbGwgc2VsZWN0ZWQgY2F0ZWdvcnkgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gam9pbiggIiArICIsIEBDYXRlZ29yeU5hbWVzICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIExhbmd1YWdlSURzCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdMYW5ndWFnZUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgZWFjaCBsYW5ndWFnZSBpZCB0byBsYW5ndWFnZSBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBMYW5ndWFnZU5hbWVzOwogICAgICAgICAgICAgICAgICAgICAgICBMQU5HVUFHRUlEOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJExhbmd1YWdlSUQgKCBAeyAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMYW5ndWFnZU5hbWUgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBMQU5HVUFHRUlEIGlmICEkTGFuZ3VhZ2VOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBATGFuZ3VhZ2VOYW1lcywgJExhbmd1YWdlTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSBzdHJpbmcgd2l0aCBhbGwgc2VsZWN0ZWQgbGFuZ3VhZ2UgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gam9pbiggIiArICIsIEBMYW5ndWFnZU5hbWVzICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGlzIGFuIHNjYWxhciBhbmQgY2FuIGJlIHNldCBkaXJlY3RseQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJEdldFBhcmFteyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoVGVybXMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgPT4gJEF0dHJpYnV0ZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkQXR0cmlidXRlVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYnVpbGQgc2VhcmNoIG5hdmlnYXRpb24gYmFyCiAgICAgICAgbXkgJVBhZ2VOYXYgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlBhZ2VOYXZCYXIoCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgU3RhcnRIaXQgID0+ICRTZWxmLT57U3RhcnRIaXR9LAogICAgICAgICAgICBQYWdlU2hvd24gPT4gJFNlbGYtPntTZWFyY2hQYWdlU2hvd259LAogICAgICAgICAgICBBbGxIaXRzICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoIiwKICAgICAgICAgICAgTGluayA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57UHJvZmlsZX1Tb3J0Qnk9JFNlbGYtPntTb3J0Qnl9O09yZGVyPSRTZWxmLT57T3JkZXJCeX07IiwKICAgICAgICAgICAgSURQcmVmaXggPT4gIlB1YmxpY0ZBUVNlYXJjaCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYWdlTmF2e1RvdGFsSGl0c30gJiYgKCAkUGFnZU5hdntUb3RhbEhpdHN9ID4gJFNlbGYtPntTZWFyY2hQYWdlU2hvd259ICkgKSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IGh0bWwgcGFnZQogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVySGVhZGVyKCk7CgogICAgICAgICNTZXQgdGhlIFNvcnRCeSBDbGFzcwogICAgICAgIG15ICRTb3J0Q2xhc3M7CgogICAgICAgICMgdGhpcyBzZXRzIHRoZSBvcHBvc2l0ZSB0byB0aGUgT3JkZXJCeSBwYXJhbWV0ZXIKICAgICAgICBpZiAoICRTZWxmLT57T3JkZXJCeX0gZXEgJ0Rvd24nICkgewogICAgICAgICAgICAkU29ydENsYXNzID0gJ1NvcnRBc2NlbmRpbmcnOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRTZWxmLT57T3JkZXJCeX0gZXEgJ1VwJyApIHsKICAgICAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzIHRvIHRoZSBjb3JyZWN0IGZpZWxkCiAgICAgICAgbXkgJUNTU1NvcnQ7CiAgICAgICAgbXkgJFNvcnRCeSA9ICRTZWxmLT57U29ydEJ5fSAuICdTb3J0JzsKICAgICAgICAkQ1NTU29ydHskU29ydEJ5fSA9ICRTb3J0Q2xhc3M7CgogICAgICAgIG15ICVOZXdPcmRlciA9ICgKICAgICAgICAgICAgRG93biA9PiAnVXAnLAogICAgICAgICAgICBVcCAgID0+ICdEb3duJywKICAgICAgICApOwoKICAgICAgICAjIHNob3cgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnsgJFNlbGYtPntPcmRlckJ5fSB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgICAgICAlQ1NTU29ydCwKICAgICAgICAgICAgICAgIE9yZGVyICAgPT4gJE5ld09yZGVyeyAkU2VsZi0+e09yZGVyQnl9IH0sCiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGb290ZXIoKTsKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIGVtcHR5IHNlYXJjaCBzaXRlCiAgICBlbHNlIHsKCiAgICAgICAgIyBnZW5lcmF0ZSBzZWFyY2ggbWFzawogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVySGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+TWFza0Zvcm0oCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgUHJvZmlsZSA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICBBcmVhICAgID0+ICdQdWJsaWMnLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRm9vdGVyKCk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBNYXNrRm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IG91dHB1dCBmb3JtYXRzIGxpc3QKICAgIG15ICVSZXN1bHRGb3JtID0gKAogICAgICAgIE5vcm1hbCA9PiAnTm9ybWFsJywKICAgICAgICBQcmludCAgPT4gJ1ByaW50JywKICAgICAgICBDU1YgICAgPT4gJ0NTVicsCiAgICApOwoKICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdHMgbGlzdAogICAgJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiB7JVJlc3VsdEZvcm19LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1Jlc3VsdEZvcm0nLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1Jlc3VsdEZvcm19IHx8ICdOb3JtYWwnLAogICAgKTsKCiAgICAjIGdldCBsYW5ndWFnZXMgbGlzdAogICAgbXkgJUxhbmd1YWdlcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgbGFuZ3VhZ2VzIG91dHB1dCBsaXN0CiAgICAkUGFyYW17TGFuZ3VhZ2VzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVMYW5ndWFnZXN9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhbmd1YWdlSURzfSwKICAgICk7CgogICAgIyBnZXQgY2F0ZWdvcmllcyBsaXN0CiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIFR5cGUgICAgICAgICA9PiAncncnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgY2F0ZWdvcmllcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte0NhdGVnb3JpZXNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiAkQ2F0ZWdvcmllcywKICAgICAgICBOYW1lICAgICAgID0+ICdDYXRlZ29yeUlEcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtDYXRlZ29yeUlEc30sCiAgICApOwoKICAgICMgaHRtbCBzZWFyY2ggbWFzayBvdXRwdXQKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VhcmNoJywKICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIHNlbGVjdAogICAgaWYgKCAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ICkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgaHRtbCBzZWFyY2ggbWFzayBvdXRwdXQKICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRWm9vbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBMYXlvdXRPYmplY3QgTG9nT2JqZWN0IENvbmZpZ09iamVjdCkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFNlbGYtPnskT2JqZWN0fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCBNZXNzYWdlID0+ICJHb3Qgbm8gJE9iamVjdCEiICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoJVBhcmFtKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgZGVmYXVsdCBvcHRpb25zCiAgICAkU2VsZi0+e011bHRpTGFuZ3VhZ2V9ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwogICAgJFNlbGYtPntWb3Rpbmd9ICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkN1c3RvbWVyRmF0YWxFcnJvciggTWVzc2FnZSA9PiAnTmVlZCBJdGVtSUQhJyApOwogICAgfQoKICAgICMgZ2V0IGJhY2sgbGluawogICAgJEdldFBhcmFte1pvb21CYWNrTGlua30gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdab29tQmFja0xpbmsnICkgfHwgJyc7CiAgICBpZiAoICRHZXRQYXJhbXtab29tQmFja0xpbmt9ICkgewogICAgICAgICRHZXRQYXJhbXtab29tQmFja0xpbmt9ID0gTUlNRTo6QmFzZTY0OjpkZWNvZGVfYmFzZTY0KCAkR2V0UGFyYW17Wm9vbUJhY2tMaW5rfSApOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtIGRhdGEKICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoCiAgICAgICAgISRGQVFEYXRhe0FwcHJvdmVkfQogICAgICAgIHx8ICEkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30tPnsgJEZBUURhdGF7U3RhdGVUeXBlSUR9IH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgICMgbWFuYWdlIHBhcmFtZXRlcnMKICAgICAgICAkR2V0UGFyYW17RmlsZUlEfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVJRCcgKTsKICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXtGaWxlSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoIE1lc3NhZ2UgPT4gJ05lZWQgRmlsZUlEJyApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXR0YWNobWVudHMKICAgICAgICBteSAlRmlsZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEdldFBhcmFte0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJUZpbGUpIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXR0YWNobWVudCglRmlsZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRHZXRQYXJhbXtGaWxlSUR9KSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DdXN0b21lckhlYWRlcigKICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICApOwoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIHJld3JpdGUgbGlua3MgdG8gZW1iZWRkZWQgaW1hZ2VzIGZvciBwdWJsaWMgaW50ZXJmYWNlCiAgICAgICAgaWYgKCAkU2VsZi0+e0ludGVyZmFjZX0tPntOYW1lfSBlcSAncHVibGljJyApIHsKCiAgICAgICAgICAgICMgcmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbgogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9CiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFab29tfWd4bXM7CgogICAgICAgICAgICAjIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9ID1+IHN7CiAgICAgICAgICAgICAgICBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVEgWyZdKGFtcDspPyBTdWJhY3Rpb249RG93bmxvYWQgWyZdKGFtcDspPwogICAgICAgICAgICB9e3B1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O31neG1zOwogICAgICAgIH0KCiAgICAgICAgIyBubyBxdW90aW5nIGlmIGh0bWwgdmlldyBpcyBlbmFibGVkCiAgICAgICAgbmV4dCBGSUVMRCBpZiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpIVE1MJyk7CgogICAgICAgICMgaHRtbCBxdW90aW5nCiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgTmV3TGluZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICAgICAgVk1heCAgICAgICAgICAgPT4gNTAwMCwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHZvdGluZyByZXN1bHRzCiAgICAkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5HZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yKAogICAgICAgIFJhdGUgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0sCiAgICApOwoKICAgIGlmICggISRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gfHwgJEZBUURhdGF7Vm90ZXN9IGVxICcwJyApIHsKICAgICAgICAkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9ID0gJ0dyYXknOwogICAgfQoKICAgICMgc2hvdyBiYWNrIGxpbmsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQmFjaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2UKICAgIGlmICggJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyB2b3RlcwogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CgogICAgICAgICMgYWx3YXlzIGRpcGxheXMgVm90ZXMgcmVzdWx0IGV2ZW4gaWYgaXRzIDAKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdWaWV3Vm90ZXMnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgRkFRIHBhdGgKICAgIG15ICRTaG93RkFRUGF0aCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RkFRUGF0aFNob3coCiAgICAgICAgRkFRT2JqZWN0ICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoJFNob3dGQVFQYXRoKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aEl0ZW1FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGtleXdvcmRzIGFzIHNlYXJjaCBsaW5rcwogICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CgogICAgICAgICMgcmVwbGFjZSBjb21tYXMgYW5kIHNlbWljb2xvbnMKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy8sLyAvZzsKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy87LyAvZzsKCiAgICAgICAgbXkgQEtleXdvcmRzID0gc3BsaXQgL1xzKy8sICRGQVFEYXRhe0tleXdvcmRzfTsKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKEBLZXl3b3JkcykgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnS2V5d29yZHMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgS2V5d29yZCA9PiAkS2V5d29yZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgb3V0cHV0IHJhdGluZyBzdGFycwogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5GQVFSYXRpbmdTdGFyc1Nob3coCiAgICAgICAgICAgIFZvdGVSZXN1bHQgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0sCiAgICAgICAgICAgIFZvdGVzICAgICAgPT4gJEZBUURhdGF7Vm90ZXN9LAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMgaWYgYW55CiAgICBteSBAQXR0YWNobWVudEluZGV4ID0gJFNlbGYtPntGQVFPYmplY3R9LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBTaG93SW5saW5lID0+IDAsCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgb3V0cHV0IGF0dGFjaG1lbnRzCiAgICBpZiAoQEF0dGFjaG1lbnRJbmRleCkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRIZWFkZXInLAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IEZBUSBDb250ZW50CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBGQVFEYXRhICAgICAgICAgPT4geyVGQVFEYXRhfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGxvZyBhY2Nlc3MgdG8gdGhpcyBGQVEgaXRlbQogICAgJFNlbGYtPntGQVFPYmplY3R9LT5GQVFMb2dBZGQoCiAgICAgICAgSXRlbUlEICAgID0+ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKSwKICAgICAgICBJbnRlcmZhY2UgPT4gJFNlbGYtPntJbnRlcmZhY2V9LT57TmFtZX0sCiAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFab29tJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpDdXN0b21lckhlYWRlck1ldGFGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBmb3IgKHF3KENvbmZpZ09iamVjdCBMb2dPYmplY3QgTGF5b3V0T2JqZWN0IFRpbWVPYmplY3QpKSB7CiAgICAgICAgJFNlbGYtPnskX30gPSAkUGFyYW17JF99IHx8IGRpZSAiR290IG5vICRfISI7CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlc3Npb24gPSAnJzsKICAgIGlmICggISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgJFNlc3Npb24gPSAnOycgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntTZXNzaW9uTmFtZX0gLiAnPScKICAgICAgICAgICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntTZXNzaW9uSUR9OwogICAgfQoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBudW1iZXIKICAgIG15ICRUaXRsZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQcm9kdWN0TmFtZScpOwoKICAgICRUaXRsZSAuPSAnIC0gQ3VzdG9tZXIgKCcgLiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGQVFIb29rJykgLiAnKSc7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ3NlYXJjaCcsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICBIcmVmICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj0nIC4gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259CiAgICAgICAgICAgICAgICAuICc7U3ViYWN0aW9uPU9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGZvciBGQVEgZnVsbHRleHQKICAgIG15ICRGdWxsdGV4dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCdGQVFGdWxsdGV4dCcpOwogICAgJFRpdGxlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Byb2R1Y3ROYW1lJyk7CiAgICAkVGl0bGUgLj0gJyAtIEN1c3RvbWVyICgnIC4gJEZ1bGx0ZXh0IC4gJyknOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdzZWFyY2gnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgSHJlZiAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JyAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmRGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhDb25maWcgTmFtZSBDb25maWdPYmplY3QgTG9nT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBQYXJhbU9iamVjdCBVc2VySUQpCiAgICAgICAgKQogICAgewogICAgICAgIGRpZSAiR290IG5vICRPYmplY3QhIiBpZiAoICEkU2VsZi0+eyRPYmplY3R9ICk7CiAgICB9CgogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICRTZWxmLT57SW50ZXJmYWNlfSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9ID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFByZWZlcmVuY2VzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuOwp9CgpzdWIgQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICgKICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKICAgICk7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkU2VsZi0+e0ZBUU9iamVjdH0sCiAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1R5cGV9LAogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnQWdlbnQnLAogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAwLAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRDb250ZW50ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudERhc2hib2FyZEZBUU92ZXJ2aWV3JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBDYXRlZ29yeUlEICAgPT4gMCwKICAgICAgICAgICAgU2lkZWJhckNsYXNzID0+ICdNZWRpdW0nLAogICAgICAgIH0sCiAgICApOwogICAgcmV0dXJuICRDb250ZW50Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhDb25maWdPYmplY3QgTG9nT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBVc2VySUQgVXNlck9iamVjdCBNYWluT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+eyRPYmplY3R9ID0gJFBhcmFteyRPYmplY3R9IHx8IGRpZSAiR290IG5vICRPYmplY3QhIjsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwogICAgbXkgQFNob3dDb2x1bW5zOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZVNob3duIFN0YXJ0SGl0KSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbmVlZCBKb3VybmFsCiAgICBpZiAoICEkUGFyYW17Sm91cm5hbH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHRoZSBKb3VybmFsIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzdG9yZSB0aGUgam91cm5hbCBsb2NhbGx5CiAgICBteSBASm91cm5hbEVudHJpZXM7CiAgICBpZiAoICRQYXJhbXtKb3VybmFsfSAmJiByZWYgJFBhcmFte0pvdXJuYWx9IGVxICdBUlJBWScgKSB7CiAgICAgICAgQEpvdXJuYWxFbnRyaWVzID0gQHsgJFBhcmFte0pvdXJuYWx9IH07CiAgICB9CgogICAgIyBzaG93IEpvdXJhbCBFbnRyaWVzIGFzIHJvd3MKICAgIGlmIChASm91cm5hbEVudHJpZXMpIHsKCiAgICAgICAgIyBjaGVjayBTaG93Q29sdW1ucyBwYXJhbWV0ZXIKICAgICAgICBpZiAoICRQYXJhbXtTaG93Q29sdW1uc30gJiYgcmVmICRQYXJhbXtTaG93Q29sdW1uc30gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgQFNob3dDb2x1bW5zID0gQHsgJFBhcmFte1Nob3dDb2x1bW5zfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBjb2x1bW4gaGVhZGVyIGJsb2NrcwogICAgICAgIGlmIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICMgY2FsbCBtYWluIGJsb2NrCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ1JlY29yZEZvcm0nICk7CgogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgIyBjYWxsIGhlYWRlciBzcGVjaWZpYyBibG9jawogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdIZWFkZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgSm91cm5hbEVudHJ5OgogICAgICAgIGZvciBteSAkSm91cm5hbEVudHJ5IChASm91cm5hbEVudHJpZXMpIHsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fQogICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRQYXJhbXtQYWdlU2hvd259ICsgJFBhcmFte1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBmb3IgY29ycnVwdGlvbiBjaGVjawogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEZBUUlEICA9PiAkSm91cm5hbEVudHJ5LT57SXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IElEIGlmICElRkFROwoKICAgICAgICAgICAgICAgICMgYnVpbGQgcmVjb3JkIGJsb2NrCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkQ291bnRlciwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGNvbHVtbiByZWNvcmQgYmxvY2tzCiAgICAgICAgICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEpvdXJuYWxFbnRyeX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IGxpbmtzIGlmIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua1N0YXJ0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRKb3VybmFsRW50cnl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0xpbmtFbmQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEpvdXJuYWxFbnRyeX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG90aGVyd2lzZSBzZXQgYW4gTm8gRkFRIEpvdW5hbCBtZXNzYWdlCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdOb0ZBUUZvdW5kJyApOwogICAgfQoKICAgICMgdXNlIHRlbXBsYXRlCiAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAkU2VsZi0+e1ZpZXdUeXBlfSwKICAgICAgICAgICAgQ29sdW1uQ291bnQgPT4gc2NhbGFyIEBTaG93Q29sdW1ucywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51R2VuZXJpYzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KENvbmZpZ09iamVjdCBFbmNvZGVPYmplY3QgTG9nT2JqZWN0IERCT2JqZWN0IExheW91dE9iamVjdCBGQVFPYmplY3QgVXNlcklEKQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+eyRPYmplY3R9ID0gJFBhcmFteyRPYmplY3R9IHx8IGRpZSAiR290IG5vICRPYmplY3QhIjsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0ZBUUl0ZW19ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBGQVFJdGVtIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBncmFudCBhY2Nlc3MgYnkgZGVmYXVsdAogICAgbXkgJEFjY2VzcyA9IDE7CgogICAgIyBnZXQgZ3JvdXBzCiAgICBteSAkQWN0aW9uID0gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259OwogICAgaWYgKCAkQWN0aW9uIGVxICdBZ2VudExpbmtPYmplY3QnICkgewoKICAgICAgICAjIFRoZSBMaW5rLWxpbmsgaXMgYSBzcGVjaWFsIGNhc2UsIGFzIGl0IGlzIG5vdCBzcGVjaWZpYyB0byBGQVEuCiAgICAgICAgIyBBcyBhIHdvcmthcm91bmQgd2UgaGFyZGNvZGUgdGhhdCBBZ2VudExpbmtPYmplY3QgaXMgdHJlYXRlZCBsaWtlIEFnZW50RkFRRWRpdAogICAgICAgICRBY3Rpb24gPSAnQWdlbnRGQVFFZGl0JzsKICAgIH0KICAgIG15ICRHcm91cHNSbyA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJyktPnskQWN0aW9ufS0+e0dyb3VwUm99IHx8IFtdOwogICAgbXkgJEdyb3Vwc1J3ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXB9ICAgfHwgW107CgogICAgIyBjaGVjayBwZXJtaXNzaW9uCiAgICBpZiAoICRBY3Rpb24gJiYgKCBAeyRHcm91cHNSb30gfHwgQHskR3JvdXBzUnd9ICkgKSB7CgogICAgICAgICMgZGVueSBhY2Nlc3MgYnkgZGVmYXVsdCwgd2hlbiB0aGVyZSBhcmUgZ3JvdXBzIHRvIGNoZWNrCiAgICAgICAgJEFjY2VzcyA9IDA7CgogICAgICAgICMgY2hlY2sgcmVhZCBvbmx5IGdyb3VwcwogICAgICAgIFJPR1JPVVA6CiAgICAgICAgZm9yIG15ICRSb0dyb3VwICggQHskR3JvdXBzUm99ICkgewoKICAgICAgICAgICAgbmV4dCBST0dST1VQIGlmICEkU2VsZi0+e0xheW91dE9iamVjdH0tPnsiVXNlcklzR3JvdXBSb1skUm9Hcm91cF0ifTsKICAgICAgICAgICAgbmV4dCBST0dST1VQIGlmICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+eyJVc2VySXNHcm91cFJvWyRSb0dyb3VwXSJ9IG5lICdZZXMnOwoKICAgICAgICAgICAgIyBzZXQgYWNjZXNzCiAgICAgICAgICAgICRBY2Nlc3MgPSAxOwogICAgICAgICAgICBsYXN0IFJPR1JPVVA7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlYWQgd3JpdGUgZ3JvdXBzCiAgICAgICAgUldHUk9VUDoKICAgICAgICBmb3IgbXkgJFJ3R3JvdXAgKCBAeyRHcm91cHNSd30gKSB7CgogICAgICAgICAgICBuZXh0IFJXR1JPVVAgaWYgISRTZWxmLT57TGF5b3V0T2JqZWN0fS0+eyJVc2VySXNHcm91cFskUndHcm91cF0ifTsKICAgICAgICAgICAgbmV4dCBSV0dST1VQIGlmICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+eyJVc2VySXNHcm91cFskUndHcm91cF0ifSBuZSAnWWVzJzsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgICMgb3V0cHV0IG1lbnUgaXRlbQogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZW51SXRlbScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXsgJFBhcmFte0ZBUUl0ZW19IH0sCiAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWd9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBjaGVjayBpZiBhIGRpYWxvZyBoYXMgdG8gYmUgc2hvd24KICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntEaWFsb2dUaXRsZX0gKSB7CgogICAgICAgICMgb3V0cHV0IGNvbmZpcm1hdGlvbiBkaWFsb2cKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTaG93Q29uZmlybWF0aW9uRGlhbG9nJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkUGFyYW17RkFRSXRlbX0gfSwKICAgICAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWd9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAkUGFyYW17Q291bnRlcn0rKzsKCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFPdmVydmlld1NtYWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKAogICAgICAgIHF3KENvbmZpZ09iamVjdCBMb2dPYmplY3QgREJPYmplY3QgTGF5b3V0T2JqZWN0IFVzZXJJRCBVc2VyT2JqZWN0IE1haW5PYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57JE9iamVjdH0gPSAkUGFyYW17JE9iamVjdH0gfHwgZGllICJHb3Qgbm8gJE9iamVjdCEiOwogICAgfQoKICAgICRTZWxmLT57TXVsdGlMYW5ndWFnZX0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKICAgIG15IEBTaG93Q29sdW1uczsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIG5lZWQgRkFRSURzCiAgICBpZiAoICEkUGFyYW17RkFRSURzfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdGhlIEZBUUlEcyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc3RvcmUgdGhlIEZBUUlEcwogICAgbXkgQElEczsKICAgIGlmICggJFBhcmFte0ZBUUlEc30gJiYgcmVmICRQYXJhbXtGQVFJRHN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgQElEcyA9IEB7ICRQYXJhbXtGQVFJRHN9IH07CiAgICB9CgogICAgaWYgKEBJRHMpIHsKCiAgICAgICAgIyBjaGVjayBTaG93Q29sdW1ucyBwYXJhbWV0ZXIKICAgICAgICBpZiAoICRQYXJhbXtTaG93Q29sdW1uc30gJiYgcmVmICRQYXJhbXtTaG93Q29sdW1uc30gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgQFNob3dDb2x1bW5zID0gQHsgJFBhcmFte1Nob3dDb2x1bW5zfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBjb2x1bW4gaGVhZGVyIGJsb2NrcwogICAgICAgIGlmIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICMgY2FsbCBtYWluIGJsb2NrCiAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ1JlY29yZEZvcm0nICk7CgogICAgICAgICAgICBDT0xVTU46CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAoICRDb2x1bW4gZXEgJ0xhbmd1YWdlJyAmJiAhJFNlbGYtPntNdWx0aUxhbmd1YWdlfSApOwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIG5lZWRlZCB2YXJpYWJsZXMKICAgICAgICAgICAgICAgIG15ICRDU1MgPSAnJzsKICAgICAgICAgICAgICAgIG15ICRPcmRlckJ5OwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIElEIGlmIG5lY2VzYXJ5CiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gJFBhcmFte1NvcnRCeX0gZXEgJ1ByaW9yaXR5SUQnCiAgICAgICAgICAgICAgICAgICAgICAgID8gJ1ByaW9yaXR5JwogICAgICAgICAgICAgICAgICAgICAgICA6ICRQYXJhbXtTb3J0Qnl9IGVxICdDYXRlZ29yeUlEJyA/ICdDYXRlZ29yeScKICAgICAgICAgICAgICAgICAgICAgICAgOiAkUGFyYW17U29ydEJ5fSBlcSAnTGFuZ3VhZ2VJRCcgPyAnTGFuZ3VhZ2UnCiAgICAgICAgICAgICAgICAgICAgICAgIDogJFBhcmFte1NvcnRCeX0gZXEgJ1N0YXRlSUQnICAgID8gJ1N0YXRlJwogICAgICAgICAgICAgICAgICAgICAgICA6ICRQYXJhbXtTb3J0Qnl9IGVxICdGQVFJRCcgICAgICA/ICdOdW1iZXInCiAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIGNvcnJlY3QgU2V0IENTUyBjbGFzcyBhbmQgb3JkZXIgYnkgbGluawogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5fSAmJiAoICRQYXJhbXtPcmRlckJ5fSBlcSAnVXAnICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnSGVhZGVyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgSUQ6CiAgICAgICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgdG8gc3RvcmUgYWxsIGRhdGEKICAgICAgICAgICAgICAgIG15ICVEYXRhOwoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhCiAgICAgICAgICAgICAgICBteSAlRkFRID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgRkFRSUQgID0+ICRJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IElEIGlmICElRkFROwoKICAgICAgICAgICAgICAgICMgYWRkIEZBUSBkYXRhCiAgICAgICAgICAgICAgICAlRGF0YSA9ICggJURhdGEsICVGQVEgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIHJlY29yZCBibG9jawogICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgY29sdW1uIHJlY29yZCBibG9ja3MKICAgICAgICAgICAgICAgIGlmIChAU2hvd0NvbHVtbnMpIHsKICAgICAgICAgICAgICAgICAgICBDT0xVTU46CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBTaG93Q29sdW1ucykgewoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgKCAkQ29sdW1uIGVxICdMYW5ndWFnZScgJiYgISRTZWxmLT57TXVsdGlMYW5ndWFnZX0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG8gbm90IGRpc3BsYXkgY29sdW1ucyBhcyBsaW5rcyBpbiB0aGUgY3VzdG9tZXIgZnJvbnRlbmQKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJFBhcmFte0Zyb250ZW5kfSBlcSAnQ3VzdG9tZXInOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IGxpbmtzIGlmIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua1N0YXJ0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdMaW5rRW5kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9PiAnTm9GQVFGb3VuZCcgKTsKICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRT3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAkU2VsZi0+e1ZpZXdUeXBlfSwKICAgICAgICAgICAgQ29sdW1uQ291bnQgPT4gc2NhbGFyIEBTaG93Q29sdW1ucywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhRkFRU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgZm9yIChxdyhDb25maWdPYmplY3QgTG9nT2JqZWN0IExheW91dE9iamVjdCBUaW1lT2JqZWN0KSkgewogICAgICAgICRTZWxmLT57JF99ID0gJFBhcmFteyRffSB8fCBkaWUgIkdvdCBubyAkXyEiOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZXNzaW9uID0gJyc7CiAgICBpZiAoICEkU2VsZi0+e0xheW91dE9iamVjdH0tPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICRTZXNzaW9uID0gJzsnIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57U2Vzc2lvbk5hbWV9IC4gJz0nCiAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57U2Vzc2lvbklEfTsKICAgIH0KCiAgICAjIGJ1aWxkIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGZvciBGQVEgbnVtYmVyCiAgICBteSAkVGl0bGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdE5hbWUnKTsKCiAgICAkVGl0bGUgLj0gJygnIC4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpIC4gJyknOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdzZWFyY2gnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgSHJlZiAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JyAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIGZ1bGx0ZXh0CiAgICBteSAkRnVsbHRleHQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPntMYW5ndWFnZU9iamVjdH0tPkdldCgnRkFRRnVsbHRleHQnKTsKICAgICRUaXRsZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdQcm9kdWN0TmFtZScpOwogICAgJFRpdGxlIC49ICcoJyAuICRGdWxsdGV4dCAuICcpJzsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPScgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXRGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgR2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1JhdGV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvciggTWVzc2FnZSA9PiAnTmVlZCByYXRlIScgKTsKICAgIH0KICAgIG15ICRDc3NUbXAgICAgICAgICAgICAgPSAnJzsKICAgIG15ICRWb3RpbmdSZXN1bHRDb2xvcnMgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpFeHBsb3Jlcjo6SXRlbUxpc3Q6OlZvdGluZ1Jlc3VsdENvbG9ycycpOwoKICAgIGZvciBteSAkS2V5ICggc29ydCB7ICRiIDw9PiAkYSB9IGtleXMgJXskVm90aW5nUmVzdWx0Q29sb3JzfSApIHsKICAgICAgICBpZiAoICRQYXJhbXtSYXRlfSA8PSAkS2V5ICkgewogICAgICAgICAgICAkQ3NzVG1wID0gJFZvdGluZ1Jlc3VsdENvbG9ycy0+eyRLZXl9OwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAkQ3NzVG1wOwp9Cgo9aXRlbSBGQVFMaXN0U2hvdygpCgpSZXR1cm5zIGEgbGlzdCBvZiBGQVEgaXRlbXMgYXMgc29ydGFibGUgbGlzdCB3aXRoIHBhZ2luYXRpb24uCgpUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gTDxLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0VGlja2V0OjpUaWNrZXRMaXN0U2hvdygpPgppbiBGPEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXRUaWNrZXQucG0+LgoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5GQVFMaXN0U2hvdygKICAgICAgICBGQVFJRHMgICAgID0+ICRGQVFJRHNSZWYsICAgICAgICAgICAgICAgICAgICAgICAgICMgdG90YWwgbGlzdCBvZiBGQVFJRHMsIHRoYXQgY2FuIGJlIGxpc3RlZAogICAgICAgIFRvdGFsICAgICAgPT4gc2NhbGFyIEB7ICRGQVFJRHNSZWYgfSwgICAgICAgICAgICAgIyB0b3RhbCBudW1iZXIgb2YgbGlzdCBpdGVtcywgaW4gdGhpcyBjYXNlCiAgICAgICAgVmlldyAgICAgICA9PiAkU2VsZi0+e1ZpZXd9LCAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAnU21hbGwnCiAgICAgICAgRmlsdGVyICAgICA9PiAnQWxsJywKICAgICAgICBGaWx0ZXJzICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIEZpbHRlckxpbmsgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgVGl0bGVOYW1lICA9PiAnT3ZlcnZpZXc6IEZBUScsCiAgICAgICAgVGl0bGVWYWx1ZSA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgRW52ICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgID0+ICRMaW5rUGFnZSwKICAgICAgICBMaW5rU29ydCAgID0+ICRMaW5rU29ydCwKICAgICAgICBGcm9udGVuZCAgID0+ICdBZ2VudCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgKEFnZW50fEN1c3RvbWVyfFB1YmxpYyksIGRlZmF1bHQ6IEFnZW50LCBpbmRpY2F0ZXMgZnJvbSB3aGljaCBmcm9udGVuZCB0aGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQKICAgICk7Cgo9Y3V0CgpzdWIgRkFRTGlzdFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRha2Ugb2JqZWN0IHJlZiB0byBsb2NhbCwgcmVtb3ZlIGl0IGZyb20gJVBhcmFtIChwcmV2ZW50IG1lbW9yeSBsZWFrKQogICAgbXkgJEVudiA9IGRlbGV0ZSAkUGFyYW17RW52fTsKCiAgICAjIGxvb2t1cCBsYXRlc3QgdXNlZCB2aWV3IG1vZGUKICAgIGlmICggISRQYXJhbXtWaWV3fSAmJiAkU2VsZi0+eyAnVXNlckZBUU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFBhcmFte1ZpZXd9ID0gJFNlbGYtPnsgJ1VzZXJGQVFPdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGZyb250ZW5kCiAgICBteSAkRnJvbnRlbmQgPSAkUGFyYW17RnJvbnRlbmR9IHx8ICdBZ2VudCc7CgogICAgIyBzZXQgZGVmYXV0IHZpZXcgbW9kZSB0byAnc21hbGwnCiAgICBteSAkVmlldyA9ICRQYXJhbXtWaWV3fSB8fCAnU21hbGwnOwoKICAgICMgc3RvcmUgbGF0ZXN0IHZpZXcgbW9kZQogICAgJFNlbGYtPntTZXNzaW9uT2JqZWN0fS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdVc2VyRkFRT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgKTsKCiAgICAjIGdldCBiYWNrZW5kIGZyb20gY29uZmlnCiAgICBteSAkQmFja2VuZHMgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnKTsKICAgIGlmICggISRCYWNrZW5kcyApIHsKICAgICAgICByZXR1cm4gJEVudi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBoYXNoLXJlZgogICAgaWYgKCByZWYgJEJhY2tlbmRzIG5lICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJEVudi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgY29uZmlnIGtleQogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewogICAgICAgIHJldHVybiAkRW52LT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAiTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgJyRWaWV3JyEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBuYXYgYmFyCiAgICBteSAkU3RhcnRIaXQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oCiAgICAgICAgUGFyYW0gPT4gJ1N0YXJ0SGl0JywKICAgICkgfHwgMTsKCiAgICAjIGdldCBwZXJzb25hbCBwYWdlIHNob3duIGNvdW50CiAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnVXNlckZBUU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CiAgICBteSAkR3JvdXAgICAgICAgICAgICAgICAgICAgPSAnRkFRT3ZlcnZpZXcnIC4gJFZpZXcgLiAnUGFnZVNob3duJzsKCiAgICAjIGNoZWNrIHN0YXJ0IG9wdGlvbiwgaWYgaGlnaGVyIHRoZW4gZWxlbWVudHMgYXZhaWxhYmxlLCBzZXQKICAgICMgaXQgdG8gdGhlIGxhc3Qgb3ZlcnZpZXcgcGFnZSAoVGhhbmtzIHRvIFN0ZWZhbiBTY2htaWR0ISkKICAgIGlmICggJFN0YXJ0SGl0ID4gJFBhcmFte1RvdGFsfSApIHsKICAgICAgICBteSAkUGFnZXMgPSBpbnQoICggJFBhcmFte1RvdGFsfSAvICRQYWdlU2hvd24gKSArIDAuOTk5OTkgKTsKICAgICAgICAkU3RhcnRIaXQgPSAoICggJFBhZ2VzIC0gMSApICogJFBhZ2VTaG93biApICsgMTsKICAgIH0KCiAgICAjIGdldCBkYXRhIHNlbGVjdGlvbgogICAgbXkgJURhdGE7CiAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1ByZWZlcmVuY2VzR3JvdXBzJyk7CiAgICBpZiAoICRDb25maWcgJiYgJENvbmZpZy0+eyRHcm91cH0gJiYgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSApIHsKICAgICAgICAlRGF0YSA9ICV7ICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gfTsKICAgIH0KCiAgICAjIHNldCBwYWdlIGxpbWl0IGFuZCBidWlsZCBwYWdlIG5hdgogICAgbXkgJExpbWl0ID0gJFBhcmFte0xpbWl0fSB8fCAyMF8wMDA7CiAgICBteSAlUGFnZU5hdiA9ICRFbnYtPntMYXlvdXRPYmplY3R9LT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPScgLiAkRW52LT57TGF5b3V0T2JqZWN0fS0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICApOwoKICAgICMgYnVpbGQgc2hvd24gZmFxIGFydGljbGVzIG9uIGEgcGFnZQogICAgJFBhcmFte1JlcXVlc3RlZFVSTH0gICAgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkU2VsZi0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5LAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICApOwoKICAgICMgYnVpbGQgbmF2YmFyIGNvbnRlbnQKICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKCiAgICBteSAkTGlua0JhY2tJRCA9ICdGQVFTZWFyY2gnOwogICAgaWYgKCAkUGFyYW17TmF2fSAmJiAkUGFyYW17TmF2fSBlcSAnTm9uZScgKSB7CiAgICAgICAgJExpbmtCYWNrSUQgLj0gJ1NtYWxsJzsKICAgIH0KCiAgICAjIGJhY2sgbGluawogICAgaWYgKCAkUGFyYW17TGlua0JhY2t9ICkgewogICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQmFjaycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGlua0JhY2tJRCA9PiAkTGlua0JhY2tJRCwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGZpbHRlcnMKICAgIGlmICggJFBhcmFte0ZpbHRlcnN9ICkgewoKICAgICAgICAjIGdldCBnaXZlbiBmaWx0ZXJzCiAgICAgICAgbXkgQE5hdkJhckZpbHRlcnM7CiAgICAgICAgZm9yIG15ICRQcmlvICggc29ydCBrZXlzICV7ICRQYXJhbXtGaWx0ZXJzfSB9ICkgewogICAgICAgICAgICBwdXNoIEBOYXZCYXJGaWx0ZXJzLCAkUGFyYW17RmlsdGVyc30tPnskUHJpb307CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIGZpbHRlciBjb250ZW50CiAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgbG9vcCBvdmVyIGZpbHRlcnMKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkRmlsdGVyIChATmF2QmFyRmlsdGVycykgewoKICAgICAgICAgICAgIyBpbmNyZW1lbnQgZmlsdGVyIGNvdW50IGFuZCBidWlsZCBmaWx0ZXIgaXRlbQogICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZmlsdGVyIGlzIHNlbGVjdGVkCiAgICAgICAgICAgIGlmICggJEZpbHRlci0+e0ZpbHRlcn0gZXEgJFBhcmFte0ZpbHRlcn0gKSB7CiAgICAgICAgICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkTm90JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGxvb3Agb3ZlciBjb25maWd1cmVkIGJhY2tlbmRzCiAgICBmb3IgbXkgJEJhY2tlbmQgKCBrZXlzICV7JEJhY2tlbmRzfSApIHsKCiAgICAgICAgIyBidWlsZCBuYXZiYXIgdmlldyBtb2RlCiAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGN1cnJlbnQgdmlldyBpcyBjb25maWd1cmVkIGluIGJhY2tlbmQKICAgICAgICBpZiAoICRWaWV3IGVxICRCYWNrZW5kICkgewogICAgICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEVudi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBwYWdlIG5hdiBpcyBhdmFpbGFibGUKICAgIGlmICglUGFnZU5hdikgewogICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhZ2VOYXYsCiAgICAgICAgKTsKCiAgICAgICAgIyBkb24ndCBzaG93IGNvbnRleHQgc2V0dGluZ3MgaW4gQUpBWCBjYXNlIChlLiBnLiBpbiBjdXN0b21lciBGQVEgaGlzdG9yeSksCiAgICAgICAgIyBiZWNhdXNlIHRoZSBzdWJtaXQgd2l0aCBwYWdlIHJlbG9hZCB3aWxsIG5vdCB3b3JrIHRoZXJlCiAgICAgICAgaWYgKCAhJFBhcmFte0FKQVh9ICkgewogICAgICAgICAgICAkRW52LT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZXh0U2V0dGluZ3MnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCBodG1sIGNvbnRlbnQKICAgIG15ICRPdXRwdXROYXZCYXIgPSAkRW52LT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgKTsKCiAgICAjIGNyZWF0ZSBvdXRwdXQKICAgIG15ICRPdXRwdXRSYXcgPSAnJzsKICAgIGlmICggISRQYXJhbXtPdXRwdXR9ICkgewogICAgICAgICRFbnYtPntMYXlvdXRPYmplY3R9LT5QcmludCgKICAgICAgICAgICAgT3V0cHV0ID0+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+IHsKICAgICAgICAgICAgICAgIEZpZWxkICAgICA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICBDYXB0aW9uICAgPT4gJENhcHRpb24sCiAgICAgICAgICAgICAgICBTdGF0ZU5hbWUgPT4gJFN0YXRlVHlwZURhdGEtPntOYW1lfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAkQ29udGVudCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHN0b3JlIHRoZSBmaWVsZCB0byByZXR1cm4gYWxsIEZBUSBCb2R5CiAgICAgICAgaWYgKCAkUGFyYW17UmV0dXJuQ29udGVudH0gJiYgJENvbnRlbnQgKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIGN1cnJlbnQgZmllbGQgaXMgaW50ZXJuYWwKICAgICAgICAgICAgbXkgJElzSW50ZXJuYWw7CiAgICAgICAgICAgIGlmICggJFN0YXRlVHlwZURhdGEtPntTdGF0ZUlEfSA9PSAkSW50ZXJuYWxTdGF0ZUlEICkgewogICAgICAgICAgICAgICAgJElzSW50ZXJuYWwgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENoZWNrIGlmIGZpZWxkIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSByZXR1cm5pbmcgc3RyaW5nCiAgICAgICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntJbmNsdWRlSW50ZXJuYWx9IHx8ICEkSXNJbnRlcm5hbCApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIGZpZWxkIG5hbWUgc2hvdWxkIGJlIHJldHVybmVkCiAgICAgICAgICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0ZpZWxkTmFtZXN9ICkgewogICAgICAgICAgICAgICAgICAgICRGdWxsQ29udGVudCAuPSAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KCRDYXB0aW9uKSAuICcgPGJyLz4gJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRGdWxsQ29udGVudCAuPSAkQ29udGVudCAuICcgPGJyLz4gJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHJldHVybiBhbGwgdGhlIChwZXJtaXRlZCkgRkFRIGJvZHkKICAgIGlmICggJFBhcmFte1JldHVybkNvbnRlbnR9ICkgewogICAgICAgIGlmICgkRnVsbENvbnRlbnQpIHsKICAgICAgICAgICAgcmV0dXJuICRGdWxsQ29udGVudDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gRkFRUGF0aFNob3coKQoKaWYgaXRzIGFsbG93ZWQgYnkgdGhlIGNvbmZpZ3VyYXRpb24sIG91dHB1dHMgdGhlIG5lY2Vzc2FyeSBEVEwgYmxvY2tzIHRvIGRpc3BsYXkgdGhlIEZBUSBpdGVtIHBhdGgsCmFuZCByZXR1cm5zIHRoZSB2YWx1ZSAxLgoKICAgIG15ICRTaG93UGF0aE9rID0gJExheW91dE9iamVjdC0+RkFRUGF0aFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgPT4gJEZBUU9iamVjdCwgICAgICAgICAgICAgICAgICAgIyBuZWVkZWQgZm9yIGNvcmUgbW9kdWxlIGludGVyYWN0aW9uCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gNSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIE5hdiAgICAgICAgID0+ICdub25lJywgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRUGF0aFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhGQVFPYmplY3QgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENhdGVnb3J5SUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIEZBUSBvYmplY3QgbG9jYWxseQogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgIyBvdXRwdXQgY2F0ZWdvcnkgcm9vdAogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUVBhdGhDYXRlZ29yeUVsZW1lbnQnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBOYW1lICAgICAgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkRlZmF1bHQ6OlJvb3RDYXRlZ29yeU5hbWUnKSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAwLAogICAgICAgICAgICBOYXYgICAgICAgID0+ICRQYXJhbXtOYXZ9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IFNob3cgRkFRIFBhdGggc2V0dGluZwogICAgbXkgJFNob3dQYXRoID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6OlBhdGg6OlNob3cnKTsKCiAgICAjIGRvIG5vdCBkaXBsYXkgdGhlIHBhdGggaWYgc2V0dGluZyBpcyBvZmYKICAgIHJldHVybiBpZiAhJFNob3dQYXRoOwoKICAgICMgZ2V0IGNhdGVnb3J5IGxpc3QgdG8gY29uc3RydWN0IHRoZSBwYXRoCiAgICBteSAkQ2F0ZWdvcnlMaXN0ID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFQYXRoTGlzdEdldCgKICAgICAgICBDYXRlZ29yeUlEID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBzdWJjYXRlZ29yaWVzCiAgICBmb3IgbXkgJENhdGVnb3J5RGF0YSAoIEB7JENhdGVnb3J5TGlzdH0gKSB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYXYgPT4gJFBhcmFte05hdn0sCiAgICAgICAgICAgICAgICAleyRDYXRlZ29yeURhdGF9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gRkFRUmF0aW5nU3RhcnNTaG93KCkKCk91dHB1dHMgdGhlIG5lY2Vzc2FyeSBEVEwgYmxvY2tzIHRvIHJlcHJlc2VudCB0aGUgRkFRIGl0ZW0gcmF0aW5nCmFzICJTdGFycyIgaW4gdGhlIHNjYWxlIGZyb20gMSB0byA1LgoKICAgICRMYXlvdXRPYmplY3QtPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICBWb3RlUmVzdWx0ID0+ICRGQVFEYXRhLT57Vm90ZVJlc3VsdH0sCiAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YSAtPntWb3Rlc30sCiAgICApOwoKPWN1dAoKc3ViIEZBUVJhdGluZ1N0YXJzU2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFZvdGVSZXN1bHQgVm90ZXMpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBzdGFycyBieSBtdXRpcGx5IGJ5IDUgYW5kIGRpdmlkZSBieSAxMDAKICAgICMgMTAwIGJlY2F1c2UgVm90ZSByZXN1bHQgaXMgYSAlCiAgICAjIDUgYmVjYXVzZSB3ZSBoYXZlIG9ubHkgNSBzdGFycwogICAgbXkgJFN0YXJDb3VudGVyID0gaW50KCAkUGFyYW17Vm90ZVJlc3VsdH0gKiAwLjA1ICk7CiAgICBpZiAoICRTdGFyQ291bnRlciA8IDUgKSB7CgogICAgICAgICMgYWRkIDEgYmVjYXVzZSBsb3dlc3QgdmFsdWUgc2hvdWxkIGJlIDEKICAgICAgICAkU3RhckNvdW50ZXIrKzsKICAgIH0KCiAgICAjIHRoZSBudW1iZXIgb2Ygc3RhcnMgY2FuJ3QgYmUgZ3JhdGVyIHRoYXQgNQogICAgZWxzaWYgKCAkU3RhckNvdW50ZXIgPiA1ICkgewogICAgICAgICRTdGFyQ291bnRlciA9IDU7CiAgICB9CgogICAgIyBvdXRwdXQgcmF0aW5nIGJsb2NrCiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnVmlld1JhdGluZycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGRvIG5vdCBvdXRwdXQgYW55IHN0YXIgaWYgdGhpcyBGQVEgaGFzIGJlZW4gbm90IHZvdGVkCiAgICBpZiAoICRQYXJhbXtWb3Rlc30gZXEgJzAnICkgewogICAgICAgICRTdGFyQ291bnRlciA9IDA7CiAgICB9CgogICAgIyBzaG93IHN0YXJzIG9ubHkgaWYgdGhlIEZBUSBpdGVtIGhhcyBiZWVuIHZvdGVkIGF0IGxlYXN0IG9uY2UgZXZlbiBpZiB0aGUgJFZvdGVSZXN1bHQgaXMgMAogICAgZWxzZSB7CgogICAgICAgICMgb3V0cHV0IHN0YXJzCiAgICAgICAgZm9yICggMSAuLiAkU3RhckNvdW50ZXIgKSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JhdGVTdGFycycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgb3V0cHV0IHN0YXJzIHRleHQKICAgICRTZWxmLT5CbG9jaygKICAgICAgICBOYW1lID0+ICdSYXRlU3RhcnNDb3VudCcsCiAgICAgICAgRGF0YSA9PiB7IFN0YXJzID0+ICRTdGFyQ291bnRlciB9LAogICAgKTsKfQoKPWl0ZW0gRkFRU2hvd0xhdGVzdE5ld3NCb3goKQoKU2hvd3MgYW4gaW5mbyBib3ggd2loIHRoZSBsYXN0IHVwZGF0ZWQgb3IgbGFzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcy4KRGVwZW5kaW5nIG9uIHRoZSB1c2VzIGludGVyZmFjZSAoYWdlbnQsIGN1c3RvbWVyLCBwdWJsaWMpIG9ubHkgdGhlIGFwcHJvcHJpYXRlCmFydGljbGVzIGFyZSBzaG93biBoZXJlLgoKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LCAgICAgICAgICAgICAgICAgIyBuZWVkZWQgZm9yIGNvcmUgbW9kdWxlIGludGVyYWN0aW9uCiAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdMYXN0Q3JlYXRlJywgICAgICAgICAgICAgICAjIChMYXN0Q3JlYXRlIHwgTGFzdENoYW5nZSkKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsICAgICAgICAgICAgICAgICAgICMgKEFnZW50LCBDdXN0b21lciwgUHVibGljKQogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiA1LAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJ25vbmUnLCAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRU2hvd0xhdGVzdE5ld3NCb3ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhGQVFPYmplY3QgVHlwZSBNb2RlIEludGVyZmFjZSBJbnRlcmZhY2VTdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ2F0ZWdvcnlJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc3RvcmUgRkFRIG9iamVjdCBsb2NhbGx5CiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSAkUGFyYW17RkFRT2JqZWN0fTsKCiAgICAjIGNoZWNrIHR5cGUKICAgIGlmICggJFBhcmFte1R5cGV9ICF+IG17IExhc3RDcmVhdGUgfCBMYXN0Q2hhbmdlIH14bXMgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgbW9kZQogICAgaWYgKCAkUGFyYW17TW9kZX0gIX4gbXsgQWdlbnQgfCBDdXN0b21lciB8IFB1YmxpYyB9eG1zICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTW9kZSBtdXN0IGJlIGVpdGhlciBBZ2VudCwgQ3VzdG9tZXIgb3IgUHVibGljIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBDdXN0b21lclVzZXIKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdDdXN0b21lcicgJiYgISRQYXJhbXtDdXN0b21lclVzZXJ9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDdXN0b21lclVzZXIhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBvcmRlciBieSBzZWFyY2ggcGFyYW1ldGVyIGFuZCBoZWFkZXIgYmFzZWQgb24gdHlwZQogICAgbXkgJE9yZGVyQnk7CiAgICBteSAkSGVhZGVyOwogICAgbXkgJFJTU1RpdGxlOwogICAgaWYgKCAkUGFyYW17VHlwZX0gZXEgJ0xhc3RDcmVhdGUnICkgewogICAgICAgICRPcmRlckJ5ICA9ICdDcmVhdGVkJzsKICAgICAgICAkSGVhZGVyICAgPSAnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJzsKICAgICAgICAkUlNTVGl0bGUgPSAnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17VHlwZX0gZXEgJ0xhc3RDaGFuZ2UnICkgewogICAgICAgICRPcmRlckJ5ICA9ICdDaGFuZ2VkJzsKICAgICAgICAkSGVhZGVyICAgPSAnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJzsKICAgICAgICAkUlNTVGl0bGUgPSAnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSc7CiAgICB9CgogICAgbXkgJFJlc3VsdCA9IC0xOwoKICAgICMgc2hvdyBsYXN0IGFkZGVkL3VwZGF0ZWQgYXJ0aWNsZXMKICAgIG15ICRTaG93ID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RXhwbG9yZXI6OiRQYXJhbXtUeXBlfTo6U2hvdyIpOwogICAgaWYgKCAkU2hvdy0+eyAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IH0gKSB7CgogICAgICAgICMgdG8gc3RvcmUgc2VhcmNoIHBhcmFtIGZvciBjYXRlZ29yaWVzCiAgICAgICAgbXkgJUNhdGVnb3J5U2VhcmNoUGFyYW07CgogICAgICAgICMgaWYgc3ViY2F0ZWdvcmllcyBzaG91bGQgYWxzbyBiZSBzaG93bgogICAgICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoIkZBUTo6RXhwbG9yZXI6OiRQYXJhbXtUeXBlfTo6U2hvd1N1YkNhdGVnb3J5SXRlbXMiKSApIHsKCiAgICAgICAgICAgICMgZmluZCB0aGUgc3ViY2F0ZWdvcmllcyBvZiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgIG15ICRTdWJDYXRlZ29yeUlEc1JlZiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgICAgIFBhcmVudElEICAgICA9PiAkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgICAgICBNb2RlICAgICAgICAgPT4gJFBhcmFte01vZGV9LAogICAgICAgICAgICAgICAgSXRlbVN0YXRlcyAgID0+ICRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9IHx8ICcnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZWFyY2ggaW4gdGhlIGdpdmVuIGNhdGVnb3J5IGFuZCBhZGQgdGhlIHN1YmNhdGVnb3J5CiAgICAgICAgICAgICRDYXRlZ29yeVNlYXJjaFBhcmFte0NhdGVnb3J5SURzfSA9IFsgJFBhcmFte0NhdGVnb3J5SUR9LCBAeyRTdWJDYXRlZ29yeUlEc1JlZn0gXTsKICAgICAgICB9CgogICAgICAgICMgYSBjYXRlZ29yeSBpcyBnaXZlbiBhbmQgc3ViY2F0ZWdvcmllcyBzaG91bGQgbm90IGJlIHNob3duCiAgICAgICAgZWxzaWYgKCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CgogICAgICAgICAgICAjIHNlYXJjaCBvbmx5IGluIHRoZSBnaXZlbiBjYXRlZ29yeQogICAgICAgICAgICAkQ2F0ZWdvcnlTZWFyY2hQYXJhbXtDYXRlZ29yeUlEc30gPSBbICRQYXJhbXtDYXRlZ29yeUlEfSBdOwogICAgICAgIH0KCiAgICAgICAgIyBzZWFyY2ggdGhlIEZBUSBhcnRpY2xlcwogICAgICAgIG15IEBJdGVtSURzID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFTZWFyY2goCiAgICAgICAgICAgIFN0YXRlcyAgICAgICAgICAgPT4gJFBhcmFte0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyRPcmRlckJ5XSwKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ0Rvd24nXSwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkUGFyYW17SW50ZXJmYWNlfSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgiRkFROjpFeHBsb3Jlcjo6JFBhcmFte1R5cGV9OjpMaW1pdCIpIHx8IDUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICVDYXRlZ29yeVNlYXJjaFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHNob3cKICAgICAgICBpZiAoQEl0ZW1JRHMpIHsKCiAgICAgICAgICAgICRSZXN1bHQgPSAxOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBpbmZvIGJveAogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgSGVhZGVyID0+ICRIZWFkZXIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBSU1MgRmVlZCBpY29uCiAgICAgICAgICAgIGlmICggJFBhcmFte01vZGV9IGVxICdQdWJsaWMnICkgewoKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3ROZXdzUlNTJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRSU1NUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNob3cgdGhlIGFydGljbGUgcm93CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hdiA9PiAkUGFyYW17TmF2fSwKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCj1pdGVtIEZBUVNob3dUb3AxMCgpCgpTaG93cyBhbiBpbmZvIGJveCB3aWggdGhlIFRvcCAxMCBGQVEgYXJ0aWNsZXMuCkRlcGVuZGluZyBvbiB0aGUgdXNlcyBpbnRlcmZhY2UgKGFnZW50LCBjdXN0b21lciwgcHVibGljKSBvbmx5IHRoZSBhcHByb3ByaWF0ZQphcnRpY2xlcyBhcmUgc2hvd24gaGVyZS4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgY29yZSBtb2R1bGUgaW50ZXJhY3Rpb24KICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsICAgICAgICAgICAgICAgICAgICMgKEFnZW50LCBDdXN0b21lciwgUHVibGljKQogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiA1LAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJ25vbmUnLCAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRU2hvd1RvcDEwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoRkFRT2JqZWN0IE1vZGUgSW50ZXJmYWNlIEludGVyZmFjZVN0YXRlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBDYXRlZ29yeUlEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBtb2RlCiAgICBpZiAoICRQYXJhbXtNb2RlfSAhfiBteyBBZ2VudCB8IEN1c3RvbWVyIHwgUHVibGljIH14bXMgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdNb2RlIG11c3QgYmUgZWl0aGVyIEFnZW50LCBDdXN0b21lciBvciBQdWJsaWMhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIEN1c3RvbWVyVXNlcgogICAgaWYgKCAkUGFyYW17TW9kZX0gZXEgJ0N1c3RvbWVyJyAmJiAhJFBhcmFte0N1c3RvbWVyVXNlcn0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEN1c3RvbWVyVXNlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc3RvcmUgRkFRIG9iamVjdCBsb2NhbGx5CiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gPSAkUGFyYW17RkFRT2JqZWN0fTsKCiAgICBteSAkUmVzdWx0ID0gLTE7CgogICAgIyBzaG93IGxhc3QgYWRkZWQvdXBkYXRlZCBhcnRpY2xlcwogICAgbXkgJFNob3cgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OlNob3cnKTsKICAgIGlmICggJFNob3ctPnsgJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSB9ICkgewoKICAgICAgICAjIHRvIHN0b3JlIHNlYXJjaCBwYXJhbSBmb3IgY2F0ZWdvcmllcwogICAgICAgIG15ICVDYXRlZ29yeVNlYXJjaFBhcmFtOwoKICAgICAgICAjIGlmIHN1YmNhdGVnb3JpZXMgc2hvdWxkIGFsc28gYmUgc2hvd24KICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkV4cGxvcmVyOjpUb3AxMDo6U2hvd1N1YkNhdGVnb3J5SXRlbXMnKSApIHsKCiAgICAgICAgICAgICMgZmluZCB0aGUgc3ViY2F0ZWdvcmllcyBvZiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgIG15ICRTdWJDYXRlZ29yeUlEc1JlZiA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgICAgIFBhcmVudElEICAgICA9PiAkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgICAgICBNb2RlICAgICAgICAgPT4gJFBhcmFte01vZGV9LAogICAgICAgICAgICAgICAgSXRlbVN0YXRlcyAgID0+ICRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9IHx8ICcnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZWFyY2ggaW4gdGhlIGdpdmVuIGNhdGVnb3J5IGFuZCBhZGQgdGhlIHN1YmNhdGVnb3J5CiAgICAgICAgICAgICRDYXRlZ29yeVNlYXJjaFBhcmFte0NhdGVnb3J5SURzfSA9IFsgJFBhcmFte0NhdGVnb3J5SUR9LCBAeyRTdWJDYXRlZ29yeUlEc1JlZn0gXTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSB0b3AgMTAgYXJ0aWNsZXMgZm9yIGNhdGVnb3JpZXMgd2l0aCBhdCBsZWFzdCBybyBwZXJtaXNzaW9ucwogICAgICAgIG15ICRUb3AxMEl0ZW1JRHNSZWYgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVRvcDEwR2V0KAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSwKICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkV4cGxvcmVyOjpUb3AxMDo6TGltaXQnKSB8fCAxMCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAlQ2F0ZWdvcnlTZWFyY2hQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIHRoZXJlIGlzIHNvbWV0aGluZyB0byBzaG93CiAgICAgICAgaWYgKCBAeyRUb3AxMEl0ZW1JRHNSZWZ9ICkgewoKICAgICAgICAgICAgJFJlc3VsdCA9IDE7CgogICAgICAgICAgICAjIHNob3cgdGhlIGluZm8gYm94CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBIZWFkZXIgPT4gJ1RvcCAxMCBGQVEgYXJ0aWNsZXMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgUlNTIEZlZWQgaWNvbgogICAgICAgICAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnUHVibGljJyApIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0TmV3c1JTUycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgID0+ICdUb3AxMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICdGQVEgQXJ0aWNsZXMgKFRvcCAxMCknLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkTnVtYmVyOwogICAgICAgICAgICBmb3IgbXkgJFRvcDEwSXRlbSAoIEB7JFRvcDEwSXRlbUlEc1JlZn0gKSB7CgogICAgICAgICAgICAgICAgIyBpbmNyZWFzZSB0aGUgbnVtYmVyCiAgICAgICAgICAgICAgICAkTnVtYmVyKys7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPntGQVFPYmplY3R9LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRUb3AxMEl0ZW0tPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzaG93IHRoZSBhcnRpY2xlIHJvdwogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYXYgPT4gJFBhcmFte05hdn0sCiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgVG9wMTAgcG9zaXRpb24gbnVtYmVyCiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvd1Bvc2l0aW9uTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyID0+ICROdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCj1pdGVtIEZBUVNob3dRdWlja1NlYXJjaCgpCgpTaG93cyBhbiBpbmZvIGJveCB3aWggdGhlIFF1aWNrIFNlYXJjaC4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLCAgICAgICAgICAgICAgICAgICAjIChBZ2VudCwgQ3VzdG9tZXIsIFB1YmxpYykKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICdub25lJywgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIEZBUVNob3dRdWlja1NlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE1vZGUgSW50ZXJmYWNlIEludGVyZmFjZVN0YXRlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBtb2RlCiAgICBpZiAoICRQYXJhbXtNb2RlfSAhfiBteyBBZ2VudCB8IEFnZW50U21hbGwgfCBDdXN0b21lciB8IFB1YmxpYyB9eG1zICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTW9kZSBtdXN0IGJlIGVpdGhlciBBZ2VudCwgQ3VzdG9tZXIgb3IgUHVibGljIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgYWN0aW9uIG1vZHVsZQogICAgbXkgJEFjdGlvbjsKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdBZ2VudFNtYWxsJyApIHsKICAgICAgICAkQWN0aW9uID0gJ0FnZW50RkFRU2VhcmNoU21hbGwnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEFjdGlvbiA9ICRQYXJhbXtNb2RlfSAuICdGQVFTZWFyY2gnOwogICAgfQoKICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VyCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ3VzdG9tZXInICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ3VzdG9tZXJVc2VyIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzaG93IHF1aWNrIHNlYXJjaAogICAgbXkgJFNob3cgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpFeHBsb3Jlcjo6UXVpY2tTZWFyY2g6OlNob3cnKTsKICAgIGlmICggJFNob3ctPnsgJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSB9IHx8ICRQYXJhbXtNb2RlfSBlcSAnQWdlbnRTbWFsbCcgKSB7CgogICAgICAgICMgY2FsbCBRdWlja1NlYXJjaCBibG9jawogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVpY2tTZWFyY2gnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAkQWN0aW9uLAogICAgICAgICAgICAgICAgTmF2ICAgID0+ICRQYXJhbXtOYXZ9IHx8ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0RkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3RGQVEgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgbGluayBvYmplY3QgKEZBUSkKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGlua09iamVjdEZBUS0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhDb25maWdPYmplY3QgTG9nT2JqZWN0IE1haW5PYmplY3QgREJPYmplY3QgVXNlck9iamVjdCBFbmNvZGVPYmplY3QKICAgICAgICBRdWV1ZU9iamVjdCBHcm91cE9iamVjdCBQYXJhbU9iamVjdCBUaW1lT2JqZWN0IExhbmd1YWdlT2JqZWN0IFVzZXJMYW5ndWFnZSBVc2VySUQpCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57JE9iamVjdH0gPSAkUGFyYW17JE9iamVjdH0gfHwgZGllICJHb3Qgbm8gJE9iamVjdCEiOwogICAgfQoKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fSA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQtPm5ldyggJXskU2VsZn0gKTsKCiAgICAjIGRlZmluZSBuZWVkZWQgdmFyaWFibGVzCiAgICAkU2VsZi0+e09iamVjdERhdGF9ID0gewogICAgICAgIE9iamVjdCAgID0+ICdGQVEnLAogICAgICAgIFJlYWxuYW1lID0+ICdGQVEnLAogICAgfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIFRhYmxlQ3JlYXRlQ29tcGxleCgpCgpyZXR1cm4gYW4gYXJyYXkgd2l0aCB0aGUgYmxvY2sgZGF0YQoKICAgIG15IEBCbG9ja0RhdGEgPSAkTGlua09iamVjdC0+VGFibGVDcmVhdGVDb21wbGV4KAogICAgICAgIE9iamVjdExpbmtMaXN0V2l0aERhdGEgPT4gJE9iamVjdExpbmtMaXN0UmVmLAogICAgKTsKCmEgcmVzdWx0IGNvdWxkIGJlCgogICAgJUJsb2NrRGF0YSA9ICgKICAgICAgICB7CiAgICAgICAgICAgIE9iamVjdCAgICA9PiAnRkFRJywKICAgICAgICAgICAgQmxvY2tuYW1lID0+ICdGQVEnLAogICAgICAgICAgICBIZWFkbGluZSAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0ZBUSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdUaXRsZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1N0YXRlJywKICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDExMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJdGVtTGlzdCA9PiBbCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyMzEyMzEyMycsCiAgICAgICAgICAgICAgICAgICAgICAgIENzcyAgICAgPT4gJ3N0eWxlPSJ0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaCInLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1RoZSB0aXRsZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdpbnRlcm5hbCAoYWdlbnQpJywKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1RpbWVMb25nJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMS0wMSAxMjoxMjowMCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzQzNDIzNCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnVGhlIHRpdGxlIG9mIEZBUSAyJywKICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ3B1YmxpYyAoYWxsKScsCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDEtMDEgMTI6MTI6MDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFRhYmxlQ3JlYXRlQ29tcGxleCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfHwgcmVmICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIE9iamVjdExpbmtMaXN0V2l0aERhdGEhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNvbnZlcnQgdGhlIGxpc3QKICAgIG15ICVMaW5rTGlzdDsKICAgIGZvciBteSAkTGlua1R5cGUgKCBrZXlzICV7ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB9ICkgewoKICAgICAgICAjIGV4dHJhY3QgbGluayB0eXBlIExpc3QKICAgICAgICBteSAkTGlua1R5cGVMaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfTsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBrZXlzICV7JExpbmtUeXBlTGlzdH0gKSB7CgogICAgICAgICAgICAjIGV4dHJhY3QgZGlyZWN0aW9uIGxpc3QKICAgICAgICAgICAgbXkgJERpcmVjdGlvbkxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn07CgogICAgICAgICAgICBmb3IgbXkgJEZBUUlEICgga2V5cyAleyREaXJlY3Rpb25MaXN0fSApIHsKCiAgICAgICAgICAgICAgICAkTGlua0xpc3R7JEZBUUlEfS0+e0RhdGF9ID0gJERpcmVjdGlvbkxpc3QtPnskRkFRSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIHRoZSBpdGVtIGxpc3QKICAgIG15IEBJdGVtTGlzdDsKICAgIGZvciBteSAkRkFRSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlTGlua0xpc3QgKSB7CgogICAgICAgICMgZXh0cmFjdCBmYXEgZGF0YQogICAgICAgIG15ICRGQVEgPSAkTGlua0xpc3R7JEZBUUlEfS0+e0RhdGF9OwoKICAgICAgICBteSBASXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgS2V5ICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRGQVEtPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgTGluayAgICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScgLiAkRkFRSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJEZBUS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAkRkFRLT57U3RhdGV9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1RpbWVMb25nJywKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEZBUS0+e0NyZWF0ZWR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEl0ZW1MaXN0LCBcQEl0ZW1Db2x1bW5zOwogICAgfQoKICAgIHJldHVybiBpZiAhQEl0ZW1MaXN0OwoKICAgICMgZGVmaW5lIHRoZSBibG9jayBkYXRhCiAgICBteSAkRkFRSG9vayA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgIG15ICVCbG9jayAgID0gKAogICAgICAgIE9iamVjdCAgICA9PiAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSwKICAgICAgICBCbG9ja25hbWUgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSwKICAgICAgICBIZWFkbGluZSAgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRGQVFIb29rLAogICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMzAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1RpdGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnU3RhdGUnLAogICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMzAsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBJdGVtTGlzdCA9PiBcQEl0ZW1MaXN0LAogICAgKTsKCiAgICByZXR1cm4gKCBcJUJsb2NrICk7Cn0KCj1pdGVtIFRhYmxlQ3JlYXRlU2ltcGxlKCkKCnJldHVybiBhIGhhc2ggd2l0aCB0aGUgbGluayBvdXRwdXQgZGF0YQoKICAgIG15ICVMaW5rT3V0cHV0RGF0YSA9ICRMaW5rT2JqZWN0LT5UYWJsZUNyZWF0ZVNpbXBsZSgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7CgphIHJlc3VsdCBjb3VsIGJlIFJldHVybgoKICAgICVMaW5rT3V0cHV0RGF0YSA9ICgKICAgICAgICBOb3JtYWw6OlNvdXJjZSA9PiB7CiAgICAgICAgICAgIFRpY2tldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRjo1NTU1NScsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnRkFRIzU1NTU1NTogVGhlIEZBUSB0aXRsZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0Y6MjIyMjInLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0ZBUSMyMjIyMjogVGl0bGUgb2YgRkFRIDIyMjIyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBQYXJlbnRDaGlsZDo6VGFyZ2V0ID0+IHsKICAgICAgICAgICAgVGlja2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGOjc3Nzc3JywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdGQVEjNzc3Nzc6IEZBUSB0aXRsZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFRhYmxlQ3JlYXRlU2ltcGxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB8fCByZWYgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IG5lICdIQVNIJyApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRGQVFIb29rID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgbXkgJUxpbmtPdXRwdXREYXRhOwogICAgZm9yIG15ICRMaW5rVHlwZSAoIGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIGtleXMgJXskTGlua1R5cGVMaXN0fSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBkaXJlY3Rpb24gbGlzdAogICAgICAgICAgICBteSAkRGlyZWN0aW9uTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufTsKCiAgICAgICAgICAgIG15IEBJdGVtTGlzdDsKICAgICAgICAgICAgZm9yIG15ICRGQVFJRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7JERpcmVjdGlvbkxpc3R9ICkgewoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aWNrdCBkYXRhCiAgICAgICAgICAgICAgICBteSAkRkFRID0gJERpcmVjdGlvbkxpc3QtPnskRkFRSUR9OwoKICAgICAgICAgICAgICAgICMgZGVmaW5lIGl0ZW0gZGF0YQogICAgICAgICAgICAgICAgbXkgJUl0ZW0gPSAoCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRjonIC4gJEZBUS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAiJEZBUUhvb2skRkFRLT57TnVtYmVyfTogJEZBUS0+e1RpdGxlfSIsCiAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAnJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScgLiAkRkFRSUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcHVzaCBASXRlbUxpc3QsIFwlSXRlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgaXRlbSBsaXN0IHRvIGxpbmsgb3V0cHV0IGRhdGEKICAgICAgICAgICAgJExpbmtPdXRwdXREYXRheyAkTGlua1R5cGUgLiAnOjonIC4gJERpcmVjdGlvbiB9LT57RkFRfSA9IFxASXRlbUxpc3Q7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlTGlua091dHB1dERhdGE7Cn0KCj1pdGVtIENvbnRlbnRTdHJpbmdDcmVhdGUoKQoKcmV0dXJuIGEgb3V0cHV0IHN0cmluZwoKICAgIG15ICRTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5Db250ZW50U3RyaW5nQ3JlYXRlKAogICAgICAgIENvbnRlbnREYXRhID0+ICRIYXNoUmVmLAogICAgKTsKCj1jdXQKCnN1YiBDb250ZW50U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDb250ZW50RGF0YX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbnRlbnREYXRhIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuOwp9Cgo9aXRlbSBTZWxlY3RhYmxlT2JqZWN0TGlzdCgpCgpyZXR1cm4gYW4gYXJyYXkgaGFzaCB3aXRoIHNlbGVjdGFibGUgb2JqZWN0cwoKICAgIG15IEBTZWxlY3RhYmxlT2JqZWN0TGlzdCA9ICRMaW5rT2JqZWN0LT5TZWxlY3RhYmxlT2JqZWN0TGlzdCgKICAgICAgICBTZWxlY3RlZCA9PiAkSWRlbnRpZmllciwgICMgKG9wdGlvbmFsKQogICAgKTsKCmEgcmVzdWx0IGNvdWxkIGJlCgogICAgQFNlbGVjdGFibGVPYmplY3RMaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUScsCiAgICAgICAgICAgIFZhbHVlID0+ICdGQVEnLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFNlbGVjdGFibGVPYmplY3RMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGVjdGVkOwogICAgaWYgKCAkUGFyYW17U2VsZWN0ZWR9ICYmICRQYXJhbXtTZWxlY3RlZH0gZXEgJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0gKSB7CiAgICAgICAgJFNlbGVjdGVkID0gMTsKICAgIH0KCiAgICAjIG9iamVjdCBzZWxlY3QgbGlzdAogICAgbXkgQE9iamVjdFNlbGVjdExpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSwKICAgICAgICAgICAgVmFsdWUgICAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSwKICAgICAgICAgICAgU2VsZWN0ZWQgPT4gJFNlbGVjdGVkLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiBAT2JqZWN0U2VsZWN0TGlzdDsKfQoKPWl0ZW0gU2VhcmNoT3B0aW9uTGlzdCgpCgpyZXR1cm4gYW4gYXJyYXkgaGFzaCB3aXRoIHNlYXJjaCBvcHRpb25zCgogICAgbXkgQFNlYXJjaE9wdGlvbkxpc3QgPSAkTGlua09iamVjdC0+U2VhcmNoT3B0aW9uTGlzdCgKICAgICAgICBTdWJPYmplY3QgPT4gJ0JsYScsICAjIChvcHRpb25hbCkKICAgICk7CgphIHJlc3VsdCBjb3VsZCBiZQoKICAgIEBTZWFyY2hPcHRpb25MaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ0ZBUSMnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnMTIzNCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgSW5wdXRTdHJnID0+ICRGb3JtU3RyaW5nLAogICAgICAgICAgICBGb3JtRGF0YSAgPT4gJ0JsYUJsYScsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoT3B0aW9uTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2VhcmNoIG9wdGlvbiBsaXN0CiAgICBteSAkRkFRSG9vayAgICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgIG15IEBTZWFyY2hPcHRpb25MaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgTmFtZSA9PiAkRkFRSG9vaywKICAgICAgICAgICAgVHlwZSA9PiAnVGV4dCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgTmFtZSA9PiAnVGl0bGUnLAogICAgICAgICAgICBUeXBlID0+ICdUZXh0JywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICA9PiAnV2hhdCcsCiAgICAgICAgICAgIE5hbWUgPT4gJ0Z1bGx0ZXh0JywKICAgICAgICAgICAgVHlwZSA9PiAnVGV4dCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgZm9ybWtleQogICAgZm9yIG15ICRSb3cgKEBTZWFyY2hPcHRpb25MaXN0KSB7CiAgICAgICAgJFJvdy0+e0Zvcm1LZXl9ID0gJ1NFQVJDSDo6JyAuICRSb3ctPntLZXl9OwogICAgfQoKICAgICMgYWRkIGZvcm0gZGF0YSBhbmQgaW5wdXQgc3RyaW5nCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKCiAgICAgICAgIyBwcmVwYXJlIHRleHQgaW5wdXQgZmllbGRzCiAgICAgICAgaWYgKCAkUm93LT57VHlwZX0gZXEgJ1RleHQnICkgewoKICAgICAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgICAgICRSb3ctPntGb3JtRGF0YX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRSb3ctPntGb3JtS2V5fSApOwoKICAgICAgICAgICAgIyBwYXJzZSB0aGUgaW5wdXQgdGV4dCBibG9jawogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5wdXRUZXh0JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRSb3ctPntGb3JtS2V5fSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUm93LT57Rm9ybURhdGF9IHx8ICcnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIHRoZSBpbnB1dCBzdHJpbmcKICAgICAgICAgICAgJFJvdy0+e0lucHV0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnTGlua09iamVjdCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSBsaXN0IGJveGVzCiAgICAgICAgaWYgKCAkUm93LT57VHlwZX0gZXEgJ0xpc3QnICkgewoKICAgICAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgICAgIG15IEBGb3JtRGF0YSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRBcnJheSggUGFyYW0gPT4gJFJvdy0+e0Zvcm1LZXl9ICk7CiAgICAgICAgICAgICRSb3ctPntGb3JtRGF0YX0gPSBcQEZvcm1EYXRhOwoKICAgICAgICAgICAgbXkgJUxpc3REYXRhOwogICAgICAgICAgICBpZiAoICRSb3ctPntLZXl9IGVxICdTdGF0ZUlEcycgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgc3RhdGUgbGlzdAogICAgICAgICAgICAgICAgJUxpc3REYXRhID0gJFNlbGYtPntTdGF0ZU9iamVjdH0tPlN0YXRlTGlzdCgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgdGhlIGlucHV0IHN0cmluZwogICAgICAgICAgICAkUm93LT57SW5wdXRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+IFwlTGlzdERhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICRSb3ctPntGb3JtS2V5fSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFJvdy0+e0Zvcm1EYXRhfSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgPT4gMywKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUk9XOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gQFNlYXJjaE9wdGlvbkxpc3Q7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpPdXRwdXRGaWx0ZXJGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAocXcoQ29uZmlnT2JqZWN0IE1haW5PYmplY3QgTG9nT2JqZWN0IExheW91dE9iamVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRPYmplY3R9ID0gJFBhcmFteyRPYmplY3R9IHx8IGRpZSAiR290IG5vICRPYmplY3QhIjsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGRhdGEKICAgIHJldHVybiBpZiAhJFBhcmFte0RhdGF9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17RGF0YX0gbmUgJ1NDQUxBUic7CiAgICByZXR1cm4gaWYgISR7ICRQYXJhbXtEYXRhfSB9OwogICAgcmV0dXJuIGlmICEkUGFyYW17VGVtcGxhdGVGaWxlfTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIHJldHVybiBpZiAhJFNlbGYtPntMYXlvdXRPYmplY3R9LT57RW52UmVmfS0+eydVc2VySXNHcm91cFJvW2ZhcV0nfTsKCiAgICAjIGdldCBhbGxvd2VkIHRlbXBsYXRlIG5hbWVzCiAgICBteSAkVmFsaWRUZW1wbGF0ZXMgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRnJvbnRlbmQ6Ok91dHB1dDo6RmlsdGVyRWxlbWVudFBvc3QnKS0+e0ZBUX0tPntUZW1wbGF0ZXN9OwoKICAgICMgY2hlY2sgdGVtcGxhdGUgbmFtZQogICAgcmV0dXJuIGlmICEkVmFsaWRUZW1wbGF0ZXMtPnsgJFBhcmFte1RlbXBsYXRlRmlsZX0gfTsKCiAgICBteSAkU3RhcnRQYXR0ZXJuICAgID0gJzwhLS0gWyBdIE91dHB1dEZpbHRlckhvb2tfVGlja2V0T3B0aW9uc0VuZCBbIF0gLS0+IC4rPyc7CiAgICBteSAkRkFRVHJhbnNsYXRhYmxlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUScpOwoKICAgICMgYWRkIEZBUSBsaW5rIHRvIGFuIGV4aXN0aW5nIE9wdGlvbnMgYmxvY2sKICAgICMkRmluaXNoUGF0dGVybiB3aWxsIGJlIHJlcGxhY2VkIGJ5ICRSZXBsYWNlCiAgICBpZiAoICR7ICRQYXJhbXtEYXRhfSB9ID1+IG17ICRTdGFydFBhdHRlcm4gfWl4bXMgKSB7CgogICAgICAgIG15ICRGaW5pc2hQYXR0ZXJuID0gJzwvZGl2Pic7CiAgICAgICAgbXkgJFJlcGxhY2UgICAgICAgPSA8PCJFTkQiOwogICAgICAgICAgICAgICAgICAgICAgICA8YSAgaHJlZj1cIiNcIiBpZD1cIk9wdGlvbkZBUVwiPlsgJEZBUVRyYW5zbGF0YWJsZSBdPC9hPgoKPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KRkFRLkFnZW50LlRpY2tldENvbXBvc2UuSW5pdEZBUVRpY2tldENvbXBvc2UoXCQoJyNSaWNoVGV4dCcpKTsKXCQoJyNPcHRpb25GQVEnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIEZBUUlGcmFtZSA9ICc8aWZyYW1lIGNsYXNzPVwiVGV4dE9wdGlvbiBGQVFcIiBzcmM9XCInICsgQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSArICc/QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7TmF2PU5vbmU7U3ViamVjdD07V2hhdD1cIj48L2lmcmFtZT4nOwogICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coRkFRSUZyYW1lLCAnJywgJzEwcHgnLCAnQ2VudGVyJywgdHJ1ZSk7CiAgICByZXR1cm4gZmFsc2U7Cn0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpFTkQKICAgICAgICAkeyAkUGFyYW17RGF0YX0gfSA9fiBzeyAoJFN0YXJ0UGF0dGVybikgJEZpbmlzaFBhdHRlcm4gfXskMSRSZXBsYWNlfWl4bXM7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBhZGQgRkFRIGxpbmsgYW5kIGl0cyBvd24gYmxvY2ssIGlmIHRoZXJlIG5vIFRpY2tldE9wdGlvbnMgYmxvY2sgd2FzIGNhbGxlZAogICAgJFN0YXJ0UGF0dGVybiA9ICc8IS0tIFsgXSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIFsgXSAtLT4gLis/JzsKICAgIG15ICRPcHRpb25zVHJhbnNsYXRhYmxlID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ09wdGlvbnMnKTsKICAgIG15ICRSZXBsYWNlICAgICAgICAgICAgID0gPDwiRU5EIjsKPCEtLSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIC0tPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kT3B0aW9uc1RyYW5zbGF0YWJsZTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgIGhyZWY9XCIjXCIgaWQ9XCJPcHRpb25GQVFcIj5bICRGQVFUcmFuc2xhdGFibGUgXTwvYT4KCjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCi8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwpGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5Jbml0RkFRVGlja2V0Q29tcG9zZShcJCgnI1JpY2hUZXh0JykpOwpcJCgnI09wdGlvbkZBUScpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgRkFRSUZyYW1lID0gJzxpZnJhbWUgY2xhc3M9IlRleHRPcHRpb24gRkFRIiBzcmM9IicgKyBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpICsgJz9BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtOYXY9Tm9uZTtTdWJqZWN0PTtXaGF0PSI+PC9pZnJhbWU+JzsKICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKEZBUUlGcmFtZSwgJycsICcxMHB4JywgJ0NlbnRlcicsIHRydWUpOwogICAgcmV0dXJuIGZhbHNlOwp9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiQ2xlYXJcIj48L2Rpdj4KRU5ECiAgICAkeyAkUGFyYW17RGF0YX0gfSA9fiBzeyAoJFN0YXJ0UGF0dGVybikgfXskUmVwbGFjZX1peG1zOwogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpQdWJsaWNIZWFkZXJNZXRhRkFRU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgZm9yIChxdyhDb25maWdPYmplY3QgTG9nT2JqZWN0IExheW91dE9iamVjdCBUaW1lT2JqZWN0KSkgewogICAgICAgICRTZWxmLT57JF99ID0gJFBhcmFteyRffSB8fCBkaWUgIkdvdCBubyAkXyEiOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZXNzaW9uID0gJyc7CiAgICBpZiAoICEkU2VsZi0+e0xheW91dE9iamVjdH0tPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICRTZXNzaW9uID0gJzsnIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57U2Vzc2lvbk5hbWV9IC4gJz0nCiAgICAgICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57U2Vzc2lvbklEfTsKICAgIH0KCiAgICAjIGJ1aWxkIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGZvciBGQVEgbnVtYmVyCiAgICBteSAkVGl0bGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdE5hbWUnKTsKCiAgICAkVGl0bGUgLj0gJyAtIFB1YmxpYyAoJyAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKSAuICcpJzsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICckRW52eyJCYXNlbGluayJ9QWN0aW9uPScgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyAuICRTZXNzaW9uLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBmdWxsdGV4dAogICAgbXkgJEZ1bGx0ZXh0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57TGFuZ3VhZ2VPYmplY3R9LT5HZXQoJ0ZBUUZ1bGx0ZXh0Jyk7CiAgICAkVGl0bGUgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnUHJvZHVjdE5hbWUnKTsKICAgICRUaXRsZSAuPSAnIC0gUHVibGljICgnIC4gJEZ1bGx0ZXh0IC4gJyknOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdzZWFyY2gnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgSHJlZiAgPT4gJyRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JyAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CgogICAgPGgxPiRUZXh0eyJBZGQgRkFRIEFydGljbGUifTwvaDE+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+Cgo8IS0tIGR0bDpibG9jazpGQVFBZGQgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTYXZlIi8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSIkUURhdGF7IkZvcm1JRCJ9Ii8+CgogICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgoKICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IlRpdGxlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUaXRsZSIgaWQ9IlRpdGxlIiB2YWx1ZT0iJFFEYXRheyJUaXRsZSJ9IiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgJFFEYXRheyJUaXRsZVNlcnZlckVycm9yIn0iIG1heGxlbmd0aD0iMjAwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPiRUZXh0eyJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9PC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZHMiPiRUZXh0eyJLZXl3b3JkcyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZHMiIGlkPSJLZXl3b3JkcyIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZHMifSIgY2xhc3M9Ilc1MHBjIiBtYXhsZW5ndGg9IjIwMCIvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ2F0ZWdvcnlJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJDYXRlZ29yeU9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IkEgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDYXRlZ29yeUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSUQiPiRUZXh0eyJTdGF0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiU3RhdGVPcHRpb24ifQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiMgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZhbGlkSUQiPiRUZXh0eyJWYWxpZGl0eSJ9OjwvbGFiZWw+CiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJWYWxpZE9wdGlvbiJ9CiMgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+Cgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMYW5ndWFnZUlEIj4kVGV4dHsiTGFuZ3VhZ2UifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikxhbmd1YWdlT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgoKPCEtLSBkdGw6YmxvY2s6Tm9MYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYW5ndWFnZUlEIiB2YWx1ZT0iJFFEYXRheyJMYW5ndWFnZUlEIn0iLz4KPCEtLSBkdGw6YmxvY2s6Tm9MYW5ndWFnZSAtLT4KCgo8IS0tIGR0bDpibG9jazpBcHByb3ZhbCAtLT4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBcHByb3ZlZCI+JFRleHR7IkFwcHJvdmFsIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJBcHByb3ZhbE9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpBcHByb3ZhbCAtLT4KCjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRVcGxvYWQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJBdHRhY2htZW50In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkZpbGVuYW1lIn0gKCRRRGF0YXsiRmlsZXNpemUifSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgaWQ9IkF0dGFjaG1lbnREZWxldGUkUURhdGF7IkZpbGVJRCJ9IiBuYW1lPSJBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifSIgdmFsdWU9IiRUZXh0eyJEZWxldGUifSI+JFRleHR7IkRlbGV0ZSJ9PC9idXR0b24+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjQXR0YWNobWVudERlbGV0ZSRRRGF0YXsiRmlsZUlEIn0nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuRGlzYWJsZVZhbGlkYXRpb24oJCgnI0F0dGFjaG1lbnREZWxldGUkUURhdGF7IkZpbGVJRCJ9JykuY2xvc2VzdCgnZm9ybScpKTsKICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJGaWxlVXBsb2FkIiBpZD0iRmlsZVVwbG9hZCIgdHlwZT0iZmlsZSIgc2l6ZT0iNDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQXR0YWNobWVudFVwbG9hZCIgbmFtZT0iQXR0YWNobWVudFVwbG9hZCIgdmFsdWU9IjAiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjRmlsZVVwbG9hZCcpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIHZhciAkRm9ybSA9ICQoJyNGaWxlVXBsb2FkJykuY2xvc2VzdCgnZm9ybScpOwogICAgICAgIENvcmUuRm9ybS5WYWxpZGF0ZS5EaXNhYmxlVmFsaWRhdGlvbigkRm9ybSk7CiAgICAgICAgJEZvcm0uZmluZCgnI0F0dGFjaG1lbnRVcGxvYWQnKS52YWwoJzEnKS5lbmQoKS5zdWJtaXQoKTsKICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+Cgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50VXBsb2FkIC0tPgoKPCEtLSBkdGw6YmxvY2s6UmljaFRleHQgLS0+CiRJbmNsdWRleyJSaWNoVGV4dEVkaXRvciJ9CjwhLS0gZHRsOmJsb2NrOlJpY2hUZXh0IC0tPgoKPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSIkUURhdGF7IkZpZWxkIn0iPiRUZXh0eyIkRGF0YXsiQ2FwdGlvbiJ9In06PGJyLz48c3BhbiBjbGFzcz0iRkFRU3RhdGVOYW1lIj4oJFRleHR7IiREYXRheyJTdGF0ZU5hbWUifSJ9KTwvc3Bhbj48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IiRRRGF0YXsiRmllbGQifSIgY2xhc3M9IlJpY2hUZXh0IiBuYW1lPSIkUURhdGF7IkZpZWxkIn0iIHJvd3M9IjE1IiBjb2xzPSI3MCI+JFFEYXRheyJDb250ZW50In08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTdWJtaXQifSI+JFRleHR7IlN1Ym1pdCJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJvciJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4kVGV4dHsiQ2FuY2VsIn08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQWRkIC0tPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3QgLS0+Cjx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgIDx0Ym9keT4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdyAtLT4KICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9IiBjbGFzcz0iQXNCbG9jayIgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSAoJFFEYXRheyJDYXRlZ29yeU5hbWUifSkiPgogICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUiLCI1MCJ9CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkNhdGVnb3J5U2hvcnROYW1lIn0gJFRpbWVTaG9ydHsiJERhdGF7IkNoYW5nZWQifSJ9CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdyAtLT4KICAgIDwvdGJvZHk+CjwvdGFibGU+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdCAtLT4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpPdmVydmlldyAtLT4KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDE+JFRleHR7IkZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50In08L2gxPgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbkxpc3QgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiQWN0aW9ucyJ9PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uT3ZlcnZpZXcgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiI+PHNwYW4+JFRleHR7IkdvIHRvIG92ZXJ2aWV3In08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbk92ZXJ2aWV3IC0tPgoKPCEtLSBkdGw6YmxvY2s6QWN0aW9uQWRkIC0tPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249QWRkIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQbHVzIj48c3Bhbj4kVGV4dHsiQWRkIGNhdGVnb3J5In08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbkFkZCAtLT4KCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uTGlzdCAtLT4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJMaXN0In08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBWYXJpYWJsZVdpZHRoIiBzdW1tYXJ5PSJGQVEgY2F0ZWdvcmllcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7Ik5hbWUifTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7IlZhbGlkaXR5In08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJEZWxldGUifTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CjwhLS0gZHRsOmJsb2NrOk5vRGF0YUZvdW5kTXNnIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Ik5vIGRhdGEgZm91bmQuIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOk5vRGF0YUZvdW5kTXNnIC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1DaGFuZ2U7Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn0iPiRRRGF0YXsiTmFtZSJ9PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JFRleHR7IiREYXRheyJWYWxpZCJ9In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIgTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkRlbGV0ZUNhdGVnb3J5SUQkUURhdGF7IkNhdGVnb3J5SUQifSIgY2xhc3M9IlRyYXNoQ2FuIiBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IkRlbGV0ZSJ9OiAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCi8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwogICAgRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5CaW5kQ29uZmlybWF0aW9uRGlhbG9nKHsKICAgICAgICBFbGVtZW50SUQ6ICAgICAgICAgICAgICAgICAgJ0RlbGV0ZUNhdGVnb3J5SUQkUURhdGF7IkNhdGVnb3J5SUQifScsCiAgICAgICAgRWxlbWVudFNlbGVjdG9yOiAgICAgICAgICAgICcjRGVsZXRlQ2F0ZWdvcnlJRCRRRGF0YXsiQ2F0ZWdvcnlJRCJ9JywKICAgICAgICBEaWFsb2dDb250ZW50UXVlcnlTdHJpbmc6ICAgJ0FjdGlvbj1BZ2VudEZBUUNhdGVnb3J5O1N1YmFjdGlvbj1EZWxldGU7Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn0nLAogICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiAnQWN0aW9uPUFnZW50RkFRQ2F0ZWdvcnk7U3ViYWN0aW9uPURlbGV0ZUFjdGlvbjtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifScsCiAgICAgICAgRGlhbG9nVGl0bGU6ICAgICAgICAgICAgICAgICckSlNUZXh0eyJEZWxldGUgQ2F0ZWdvcnkifScsCiAgICAgICAgVHJhbnNsYXRlZFRleHQ6ICAgICAgICAgICAgIHsKICAgICAgICAgICAgWWVzOiAnJEpTVGV4dHsiWWVzIn0nLAogICAgICAgICAgICBObzogICckSlNUZXh0eyJObyJ9JywKICAgICAgICAgICAgT2s6ICAnJEpTVGV4dHsiT2sifScKICAgICAgICB9CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KCjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3VXBkYXRlIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgo8IS0tIGR0bDpibG9jazpIZWFkZXJBZGQgLS0+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkFkZCBDYXRlZ29yeSJ9PC9oMj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyQWRkIC0tPgo8IS0tIGR0bDpibG9jazpIZWFkZXJFZGl0IC0tPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJFZGl0IENhdGVnb3J5In08L2gyPgo8IS0tIGR0bDpibG9jazpIZWFkZXJFZGl0IC0tPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIGNsYXNzPSJWYWxpZGF0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJEVudnsiQWN0aW9uIn0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSIkTFFEYXRheyJBY3Rpb24ifUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNhdGVnb3J5SUQiIHZhbHVlPSIkUURhdGF7IkNhdGVnb3J5SUQifSIvPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5hbWUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+ICRUZXh0eyJOYW1lIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIGlkPSJOYW1lIiB2YWx1ZT0iJFFEYXRheyJOYW1lIn0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCAkUURhdGF7Ik5hbWVTZXJ2ZXJFcnJvciJ9IiBtYXhsZW5ndGg9IjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IiREYXRheyJOYW1lU2VydmVyRXJyb3JNZXNzYWdlIn0ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUGFyZW50SUQiPiRUZXh0eyJTdWJjYXRlZ29yeSBvZiJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJDYXRlZ29yeU9wdGlvbiJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJDb21tZW50Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiAkVGV4dHsiQ29tbWVudCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJDb21tZW50IiBpZD0iQ29tbWVudCIgdmFsdWU9IiRRRGF0YXsiQ29tbWVudCJ9IiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgJFFEYXRheyJDb21tZW50U2VydmVyRXJyb3IifSIgbWF4bGVuZ3RoPSI4MCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29tbWVudEVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbW1lbnRTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4kVGV4dHsiV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLiJ9PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEIj4kVGV4dHsiVmFsaWRpdHkifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiVmFsaWRPcHRpb24ifQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iUGVybWlzc2lvbkdyb3VwcyI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gJFRleHR7IlBlcm1pc3Npb24ifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiR3JvdXBPcHRpb24ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUGVybWlzc2lvbkdyb3Vwc0Vycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IlBsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBlcm1pc3Npb25Hcm91cHNTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4kVGV4dHsiQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5LiJ9PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTdWJtaXQifSI+JFRleHR7IlN1Ym1pdCJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsib3IifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifSI+JFRleHR7IkNhbmNlbCJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdVcGRhdGUgLS0+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3IC0tPgoKCjwhLS0gZHRsOmJsb2NrOkRlbGV0ZSAtLT4KCjwhLS0gZHRsOmJsb2NrOk5vQWZmZWN0ZWQgLS0+CjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgJFFEYXRheyJOYW1lIn0KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgICRUZXh0eyJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/In0KPC9wPgo8IS0tIGR0bDpibG9jazpOb0FmZmVjdGVkIC0tPgoKPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWQgLS0+CjxwPgogICAgJFRleHR7IllvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSJ9CjwvcD4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWQgLS0+Cgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZEl0ZW1zIC0tPgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tIj4KICAgICRUZXh0eyJUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSJ9Ogo8L3A+Cjx1bD4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRJdGVtc1JvdyAtLT4KICAgIDxsaSBjbGFzcz0iSW5kZW50IFNwYWNpbmdCb3R0b21TbWFsbCI+CiAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifSREYXRheyJMaW5rIn07QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iPgogICAgICAgICAgICAkQ29uZmlneyJGQVE6OkZBUUhvb2sifTokUURhdGF7Ik51bWJlciJ9PHNwYW4+Jm5ic3A7Jm1kYXNoOzwvc3Bhbj4gJFFEYXRheyJUaXRsZSIsICI2MCJ9CiAgICAgICAgPC9hPgogICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRJdGVtc1JvdyAtLT4KPC91bD4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRJdGVtcyAtLT4KCjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkU3ViQ2F0ZWdvcmllcyAtLT4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbSI+CiAgICAkVGV4dHsiVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzIn06CjwvcD4KPHVsPgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZFN1YkNhdGVnb3JpZXNSb3cgLS0+CiAgICA8bGkgY2xhc3M9IkluZGVudCBTcGFjaW5nQm90dG9tU21hbGwiPgogICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRGF0YXsiTGluayJ9O0FjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4KICAgICAgICAgICAgJFFEYXRheyJMb25nTmFtZSJ9CiAgICAgICAgPC9hPgogICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRTdWJDYXRlZ29yaWVzUm93IC0tPgo8L3VsPgo8IS0tIGR0bDpibG9jazpBZmZlY3RlZFN1YkNhdGVnb3JpZXMgLS0+Cgo8IS0tIGR0bDpibG9jazpEZWxldGUgLS0+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBXMzAwcHgiPgogICAgPGxhYmVsPiRUZXh0eyJUaXRsZSJ9OjwvbGFiZWw+CiAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2ZpZWxkc2V0Pgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBDZW50ZXIiPgogICAgJFRleHR7IkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8ifQo8L3A+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgxPiRUZXh0eyJFZGl0In06ICRUZXh0eyJGQVEifTogJFFEYXRheyJOdW1iZXIifTwvaDE+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIj4kVGV4dHsiQ2FuY2VsICYgY2xvc2Ugd2luZG93In08L2E+CiAgICAgICAgPC9wPgogICAgPC9kaXY+Cgo8IS0tIGR0bDpibG9jazpGQVFFZGl0IC0tPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJEVudnsiQWN0aW9uIn0iLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2F2ZSIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSIkUURhdGF7IkZvcm1JRCJ9Ii8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikl0ZW1JRCIgdmFsdWU9IiRRRGF0YXsiSXRlbUlEIn0iLz4KCiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IlRpdGxlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGl0bGUiIGlkPSJUaXRsZSIgdmFsdWU9IiRRRGF0YXsiVGl0bGUifSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkICRRRGF0YXsiVGl0bGVTZXJ2ZXJFcnJvciJ9IiBtYXhsZW5ndGg9IjIwMCIvPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUaXRsZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+JFRleHR7IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkcyI+JFRleHR7IktleXdvcmRzIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZHMiIGlkPSJLZXl3b3JkcyIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZHMifSIgY2xhc3M9Ilc1MHBjIiBtYXhsZW5ndGg9IjIwMCIvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ2F0ZWdvcnlJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ2F0ZWdvcnlPcHRpb24ifQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDYXRlZ29yeUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IkEgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZUlEIj4kVGV4dHsiU3RhdGUifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJTdGF0ZU9wdGlvbiJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiMgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+JFRleHR7IlZhbGlkaXR5In06PC9sYWJlbD4KIyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiMgICAgICAgICAgICAgICAgICAgICREYXRheyJWYWxpZE9wdGlvbiJ9CiMgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMYW5ndWFnZUlEIj4kVGV4dHsiTGFuZ3VhZ2UifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJMYW5ndWFnZU9wdGlvbiJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+Cgo8IS0tIGR0bDpibG9jazpOb0xhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IiRRRGF0YXsiTGFuZ3VhZ2VJRCJ9Ii8+CjwhLS0gZHRsOmJsb2NrOk5vTGFuZ3VhZ2UgLS0+Cgo8IS0tIGR0bDpibG9jazpBcHByb3ZhbCAtLT4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkFwcHJvdmVkIj4kVGV4dHsiQXBwcm92YWwifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJBcHByb3ZhbE9wdGlvbiJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QXBwcm92YWwgLS0+Cgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50VXBsb2FkIC0tPgogICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJBdHRhY2htZW50In06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8dWw+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiRmlsZW5hbWUifSAoJFFEYXRheyJGaWxlc2l6ZSJ9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGlkPSJBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifSIgbmFtZT0iQXR0YWNobWVudERlbGV0ZSRRRGF0YXsiRmlsZUlEIn0iIHZhbHVlPSIkVGV4dHsiRGVsZXRlIn0iPiRUZXh0eyJEZWxldGUifTwvYnV0dG9uPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0F0dGFjaG1lbnREZWxldGUkUURhdGF7IkZpbGVJRCJ9JykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgQ29yZS5Gb3JtLlZhbGlkYXRlLkRpc2FibGVWYWxpZGF0aW9uKCQoJyNBdHRhY2htZW50RGVsZXRlJFFEYXRheyJGaWxlSUQifScpLmNsb3Nlc3QoJ2Zvcm0nKSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iRmlsZVVwbG9hZCIgaWQ9IkZpbGVVcGxvYWQiIHR5cGU9ImZpbGUiIHNpemU9IjQwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQXR0YWNobWVudFVwbG9hZCIgbmFtZT0iQXR0YWNobWVudFVwbG9hZCIgdmFsdWU9IjAiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJyNGaWxlVXBsb2FkJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgdmFyICRGb3JtID0gJCgnI0ZpbGVVcGxvYWQnKS5jbG9zZXN0KCdmb3JtJyk7CiAgICAgICAgQ29yZS5Gb3JtLlZhbGlkYXRlLkRpc2FibGVWYWxpZGF0aW9uKCRGb3JtKTsKICAgICAgICAkRm9ybS5maW5kKCcjQXR0YWNobWVudFVwbG9hZCcpLnZhbCgnMScpLmVuZCgpLnN1Ym1pdCgpOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KCjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRVcGxvYWQgLS0+Cgo8IS0tIGR0bDpibG9jazpSaWNoVGV4dCAtLT4KJEluY2x1ZGV7IlJpY2hUZXh0RWRpdG9yIn0KPCEtLSBkdGw6YmxvY2s6UmljaFRleHQgLS0+Cgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iJFFEYXRheyJGaWVsZCJ9Ij4kVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9Ojxici8+PHNwYW4gY2xhc3M9IkZBUVN0YXRlTmFtZSI+KCRUZXh0eyIkRGF0YXsiU3RhdGVOYW1lIn0ifSk8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iJFFEYXRheyJGaWVsZCJ9IiBjbGFzcz0iUmljaFRleHQiIG5hbWU9IiRRRGF0YXsiRmllbGQifSIgcm93cz0iMTUiIGNvbHM9IjcwIj4kUURhdGF7IkNvbnRlbnQifTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU3VibWl0In0iPiRUZXh0eyJTdWJtaXQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFFZGl0IC0tPgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGQVEiPgogICAgPGRpdiBjbGFzcz0iQ2xlYXJMZWZ0Ij48L2Rpdj4KICAgIDxoMT4kVGV4dHsiRkFRIEV4cGxvcmVyIn08L2gxPgoKICAgIDxkaXYgY2xhc3M9IkZBUVBhdGhDYXRlZ29yeSI+CiAgICAgICAgPGgzPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgogICAgICAgICAgICAkQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifQogICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07TmF2PSRMUURhdGF7Ik5hdiJ9Ij4KICAgICAgICAgICAgICAgICRRRGF0YXsiTmFtZSJ9CiAgICAgICAgICAgIDwvYT4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICA8L2gzPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiAkUURhdGF7IlNpZGViYXJDbGFzcyJ9Ij4KCjwhLS0gZHRsOmJsb2NrOlF1aWNrU2VhcmNoIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IlNlYXJjaCJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ubGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJFFEYXRheyJBY3Rpb24ifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IiRRRGF0YXsiTmF2In0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IlNlYXJjaCJ9IiBpZD0iU2VhcmNoIiB0aXRsZT0iJFRleHR7IlNlYXJjaCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU2VhcmNoIn0iPiRUZXh0eyJRdWljayBTZWFyY2gifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJXaWxkY2FyZHMgYXJlIGFsbG93ZWQuIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGQVFTZWFyY2hCdXR0b24gU3BhY2luZ1RvcCIgaWQ9IiRMUURhdGF7IkFjdGlvbiJ9IiBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRMUURhdGF7IkFjdGlvbiJ9O05hdj0kTFFEYXRheyJOYXYifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7IkFkdmFuY2VkIFNlYXJjaCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjQWdlbnRGQVFTZWFyY2gnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coJ0FnZW50RkFRU2VhcmNoJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KCjwhLS0gZHRsOmJsb2NrOlF1aWNrU2VhcmNoIC0tPgoKPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IiREYXRheyJIZWFkZXIifSJ9PC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiTnVtYmVyIn0uCjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifTtOYXY9JExRRGF0YXsiTmF2In0iIHRpdGxlPSIkUURhdGF7IlRpdGxlIn0gKCRRRGF0YXsiQ2F0ZWdvcnlOYW1lIn0pIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIiwiNTAifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJDYXRlZ29yeVNob3J0TmFtZSIsIjE1In0gJFFEYXRheyJMYW5ndWFnZSJ9ICRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9ICRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IC0tPgogICAgICAgICAgICAgICAgICAgIDwvdWw+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
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgxPgogICAgICAgICAgICAkVGV4dHsiSGlzdG9yeSBvZiJ9ICRDb25maWd7IkZBUTo6RkFRSG9vayJ9OiAkUURhdGF7Ik51bWJlciJ9IC0gJFFEYXRheyJUaXRsZSIsIjYwIn0KICAgICAgICA8L2gxPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCI+JFRleHR7IkNhbmNlbCAmIGNsb3NlIHdpbmRvdyJ9PC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+CiAgICAgICAgICAgICAgICAgICAgJFRleHR7Ikhpc3RvcnkgQ29udGVudCJ9CiAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgc3VtbWFyeT0iRkFRIGhpc3RvcnkgZGF0YSB0YWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7IkFjdGlvbiJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiVXNlciJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiQ3JlYXRldGltZSJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KCjwhLS0gZHRsOmJsb2NrOlJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyIkRGF0YXsiTmFtZSJ9In0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJDcmVhdGVkQnkifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGltZUxvbmd7IiREYXRheyJDcmVhdGVkIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Um93IC0tPgoKICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICA8L2Rpdj4KPC9kaXY+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLlVJLkFjdGlvblJvdy5Jbml0KCk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgoKPGRpdiBpZD0iT3ZlcnZpZXdCb2R5IiBjbGFzcz0iT3ZlcnZpZXcgRml4ZWRIZWFkZXIiPgo8IS0tIGR0bDpibG9jazpOb0ZBUUZvdW5kIC0tPgogICAgPGRpdiBpZD0iRW1wdHlNZXNzYWdlU21hbGwiPgogICAgICAgICRUZXh0eyJObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLiJ9CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Tm9GQVFGb3VuZCAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkRm9ybSAtLT4KICAgIDx0YWJsZSBpZD0iRml4ZWRUYWJsZSIgY2xhc3M9IlRhYmxlU21hbGwiIHN1bW1hcnk9IkEgZ2VuZXJpYyBGQVEgdGFibGUiPgogICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgPHRyPgo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJIZWFkZXIgLS0+CiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+JENvbmZpZ3siRkFROjpGQVFIb29rIn08L3NwYW4+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFRpdGxlSGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7IlRpdGxlIn08L3NwYW4+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaXRsZUhlYWRlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkQ2F0ZWdvcnlIZWFkZXIgLS0+CiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNhdGVnb3J5Ij4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiQ2F0ZWdvcnkifTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5SGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmROYW1lSGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJOYW1lIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiTmFtZSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTmFtZUhlYWRlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGltZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGltZSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7IlRpbWUifTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFRpbWVIZWFkZXIgLS0+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICA8dGJvZHk+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgPHRyIGlkPSJJdGVtSURfJFFEYXRheyJJdGVtSUQifV8kUURhdGF7IkNvdW50ZXIifSIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlciAtLT4KICAgICAgICAgICAgICAgIDx0ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyTGlua1N0YXJ0IC0tPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifSIgdGl0bGU9IiRMUURhdGF7Ik51bWJlciJ9IiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlckxpbmtTdGFydCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJOdW1iZXIifQo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJMaW5rRW5kIC0tPgogICAgICAgICAgICAgICAgICAgIDwvYT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyTGlua0VuZCAtLT4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGUgLS0+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iJFFEYXRheyJTdWJqZWN0In0iPiRRRGF0YXsiU3ViamVjdCIsIjQwIn08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFRpdGxlIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDYXRlZ29yeSAtLT4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSIkVGV4dHsiJERhdGF7IkNhdGVnb3J5In0ifSI+JFRleHR7IiREYXRheyJDYXRlZ29yeSJ9In08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5IC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmROYW1lIC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQWN0aW9uIn0ifSI+JFRleHR7IiREYXRheyJBY3Rpb24ifSJ9PC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmROYW1lIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaW1lIC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IiRUaW1lTG9uZ3siJFFEYXRheyJDcmVhdGVkIn0ifSI+JFRpbWVMb25neyIkUURhdGF7IkNyZWF0ZWQifSJ9PC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaW1lIC0tPgogICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+CjwhLS0gZHRsOmJsb2NrOlJlY29yZEZvcm0gLS0+CjwvZGl2Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLlVJLkluaXRUYWJsZUhlYWQoJCgnI0ZpeGVkVGFibGUgdGhlYWQnKSwgJCgnI0ZpeGVkVGFibGUgdGJvZHknKSk7CiAgICBDb3JlLlVJLlN0YXRpY1RhYmxlQ29udHJvbCgkKCcjT3ZlcnZpZXdDb250cm9sJykuYWRkKCQoJyNPdmVydmlld0JvZHknKSkpOwogICAgJCgnLk1hc3RlckFjdGlvbicpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgdmFyICRNYXN0ZXJBY3Rpb25MaW5rID0gJCh0aGlzKS5maW5kKCcuTWFzdGVyQWN0aW9uTGluaycpOwogICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAkTWFzdGVyQWN0aW9uTGluay5hdHRyKCdocmVmJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9KTsKICAgICQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKSB7CiAgICAgICAgQ29yZS5VSS5BZGp1c3RUYWJsZUhlYWQoJCgnI092ZXJ2aWV3SGVhZGVyIHRoZWFkJyksICQoJyNPdmVydmlld0JvZHkgdGJvZHknKSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpPdmVydmlldyAtLT4KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CgogICAgPGgxPiRUZXh0eyJGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCJ9PC9oMT4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KCjwhLS0gZHRsOmJsb2NrOkRpc2FibGVkIC0tPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7Ik5vdGljZSJ9PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQgQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFkbWluU3lzQ29uZmlnIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iRWRpdCIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN5c0NvbmZpZ0dyb3VwIiB2YWx1ZT0iRkFRIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3lzQ29uZmlnU3ViR3JvdXAiIHZhbHVlPSJDb3JlIi8+CiAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJUaGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQhIn08L2gzPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlVzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLiJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiRW5hYmxlIGl0IGhlcmUhIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiRUZXh0eyJFbmFibGUgaXQgaGVyZSEifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpEaXNhYmxlZCAtLT4KCjwhLS0gZHRsOmJsb2NrOkFjdGlvbkxpc3QgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkFjdGlvbnMifTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbk92ZXJ2aWV3IC0tPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iPjxzcGFuPiRUZXh0eyJHbyB0byBvdmVydmlldyJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBY3Rpb25PdmVydmlldyAtLT4KCjwhLS0gZHRsOmJsb2NrOkFjdGlvbkFkZCAtLT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUFkZCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUGx1cyI+PHNwYW4+JFRleHR7IkFkZCBsYW5ndWFnZSJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBY3Rpb25BZGQgLS0+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uTGlzdCAtLT4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7Ikxpc3QifTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBWYXJpYWJsZVdpZHRoIiBzdW1tYXJ5PSJGQVEgbGFuZ3VhZ2VzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiTmFtZSJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiRGVsZXRlIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJObyBkYXRhIGZvdW5kLiJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249Q2hhbmdlO0xhbmd1YWdlSUQ9JExRRGF0YXsiTGFuZ3VhZ2VJRCJ9Ij4kUURhdGF7Ik5hbWUifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIgTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkRlbGV0ZUxhbmd1YWdlSUQkUURhdGF7Ikxhbmd1YWdlSUQifSIgY2xhc3M9IlRyYXNoQ2FuIiBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IkRlbGV0ZSJ9OiAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCi8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwogICAgRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5CaW5kQ29uZmlybWF0aW9uRGlhbG9nKHsKICAgICAgICBFbGVtZW50SUQ6ICAgICAgICAgICAgICAgICAgJ0RlbGV0ZUxhbmd1YWdlSUQkUURhdGF7Ikxhbmd1YWdlSUQifScsCiAgICAgICAgRWxlbWVudFNlbGVjdG9yOiAgICAgICAgICAgICcjRGVsZXRlTGFuZ3VhZ2VJRCRRRGF0YXsiTGFuZ3VhZ2VJRCJ9JywKICAgICAgICBEaWFsb2dDb250ZW50UXVlcnlTdHJpbmc6ICAgJ0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlO1N1YmFjdGlvbj1EZWxldGU7TGFuZ3VhZ2VJRD0kTFFEYXRheyJMYW5ndWFnZUlEIn0nLAogICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiAnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPURlbGV0ZUFjdGlvbjtMYW5ndWFnZUlEPSRMUURhdGF7Ikxhbmd1YWdlSUQifScsCiAgICAgICAgRGlhbG9nVGl0bGU6ICAgICAgICAgICAgICAgICckSlNUZXh0eyJEZWxldGUgTGFuZ3VhZ2UifSAkUURhdGF7Ik5hbWUifScsCiAgICAgICAgVHJhbnNsYXRlZFRleHQ6ICAgICAgICAgICAgIHsKICAgICAgICAgICAgWWVzOiAnJEpTVGV4dHsiWWVzIn0nLAogICAgICAgICAgICBObzogICckSlNUZXh0eyJObyJ9JywKICAgICAgICAgICAgT2s6ICAnJEpTVGV4dHsiT2sifScKICAgICAgICB9CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0IC0tPgoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdVcGRhdGUgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgo8IS0tIGR0bDpibG9jazpIZWFkZXJBZGQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiQWRkIExhbmd1YWdlIn08L2gyPgo8IS0tIGR0bDpibG9jazpIZWFkZXJBZGQgLS0+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckVkaXQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiRWRpdCBMYW5ndWFnZSJ9PC9oMj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyRWRpdCAtLT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJEVudnsiQWN0aW9uIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IiRMUURhdGF7IkFjdGlvbiJ9QWN0aW9uIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYW5ndWFnZUlEIiB2YWx1ZT0iJFFEYXRheyJMYW5ndWFnZUlEIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiAkVGV4dHsiTmFtZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgaWQ9Ik5hbWUiIHZhbHVlPSIkUURhdGF7Ik5hbWUifSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkICRRRGF0YXsiTmFtZVNlcnZlckVycm9yIn0iIG1heGxlbmd0aD0iNTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IiREYXRheyJOYW1lU2VydmVyRXJyb3JNZXNzYWdlIn0ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU3VibWl0In0iPiRUZXh0eyJTdWJtaXQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsib3IifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9Ij4kVGV4dHsiQ2FuY2VsIn08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1VwZGF0ZSAtLT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXcgLS0+Cgo8IS0tIGR0bDpibG9jazpEZWxldGUgLS0+CjwhLS0gZHRsOmJsb2NrOk5vQWZmZWN0ZWRJdGVtcyAtLT4KPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgVzMwMHB4Ij4KICAgIDxsYWJlbD4kVGV4dHsiTGFuZ3VhZ2UifTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2ZpZWxkc2V0Pgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBDZW50ZXIiPgogICAgJFRleHR7IkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8ifQo8L3A+CjwhLS0gZHRsOmJsb2NrOk5vQWZmZWN0ZWRJdGVtcyAtLT4KCjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXMgLS0+CjxwPgogICAgJFRleHR7IllvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEifQo8L3A+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgJFRleHR7IlRoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpIn06CjwvcD4KCjx1bD4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRJdGVtc1JvdyAtLT4KICAgIDxsaSBjbGFzcz0iSW5kZW50IFNwYWNpbmdCb3R0b21TbWFsbCI+CiAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifSREYXRheyJMaW5rIn07QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iPgogICAgICAgICAgICAkQ29uZmlneyJGQVE6OkZBUUhvb2sifTokUURhdGF7Ik51bWJlciJ9PHNwYW4+Jm5ic3A7Jm1kYXNoOzwvc3Bhbj4gJFFEYXRheyJUaXRsZSIsICI2MCJ9CiAgICAgICAgPC9hPgogICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRJdGVtc1JvdyAtLT4KPC91bD4KCjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXMgLS0+CjwhLS0gZHRsOmJsb2NrOkRlbGV0ZSAtLT4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpPdmVydmlldyAtLT4KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CgogICAgPGgxPiRUZXh0eyJGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCJ9PC9oMT4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KCjwhLS0gZHRsOmJsb2NrOkRpc2FibGVkIC0tPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7Ik5vdGljZSJ9PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQgQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFkbWluU3lzQ29uZmlnIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iRWRpdCIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN5c0NvbmZpZ0dyb3VwIiB2YWx1ZT0iRkFRIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3lzQ29uZmlnU3ViR3JvdXAiIHZhbHVlPSJDb3JlIi8+CiAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJUaGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQhIn08L2gzPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlVzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1Z2VzLiJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiRW5hYmxlIGl0IGhlcmUhIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiRUZXh0eyJFbmFibGUgaXQgaGVyZSEifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpEaXNhYmxlZCAtLT4KCjwhLS0gZHRsOmJsb2NrOkFjdGlvbkxpc3QgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkFjdGlvbnMifTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbk92ZXJ2aWV3IC0tPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iPjxzcGFuPiRUZXh0eyJHbyB0byBvdmVydmlldyJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBY3Rpb25PdmVydmlldyAtLT4KCjwhLS0gZHRsOmJsb2NrOkFjdGlvbkFkZCAtLT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUFkZCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUGx1cyI+PHNwYW4+JFRleHR7IkFkZCBsYW5ndWFnZSJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBY3Rpb25BZGQgLS0+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QWN0aW9uTGlzdCAtLT4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdCAtLT4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7Ikxpc3QifTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBWYXJpYWJsZVdpZHRoIiBzdW1tYXJ5PSJGQVEgbGFuZ3VhZ2VzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiTmFtZSJ9PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4kVGV4dHsiRGVsZXRlIn08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJObyBkYXRhIGZvdW5kLiJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249Q2hhbmdlO0xhbmd1YWdlSUQ9JExRRGF0YXsiTGFuZ3VhZ2VJRCJ9Ij4kUURhdGF7Ik5hbWUifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIgTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkRlbGV0ZUxhbmd1YWdlSUQkUURhdGF7Ikxhbmd1YWdlSUQifSIgY2xhc3M9IlRyYXNoQ2FuIiBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IkRlbGV0ZSJ9OiAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCi8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwogICAgRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5CaW5kQ29uZmlybWF0aW9uRGlhbG9nKHsKICAgICAgICBFbGVtZW50SUQ6ICAgICAgICAgICAgICAgICAgJ0RlbGV0ZUxhbmd1YWdlSUQkUURhdGF7Ikxhbmd1YWdlSUQifScsCiAgICAgICAgRWxlbWVudFNlbGVjdG9yOiAgICAgICAgICAgICcjRGVsZXRlTGFuZ3VhZ2VJRCRRRGF0YXsiTGFuZ3VhZ2VJRCJ9JywKICAgICAgICBEaWFsb2dDb250ZW50UXVlcnlTdHJpbmc6ICAgJ0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlO1N1YmFjdGlvbj1EZWxldGU7TGFuZ3VhZ2VJRD0kTFFEYXRheyJMYW5ndWFnZUlEIn0nLAogICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiAnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPURlbGV0ZUFjdGlvbjtMYW5ndWFnZUlEPSRMUURhdGF7Ikxhbmd1YWdlSUQifScsCiAgICAgICAgRGlhbG9nVGl0bGU6ICAgICAgICAgICAgICAgICckSlNUZXh0eyJEZWxldGUgTGFuZ3VhZ2UifSAkUURhdGF7Ik5hbWUifScsCiAgICAgICAgVHJhbnNsYXRlZFRleHQ6ICAgICAgICAgICAgIHsKICAgICAgICAgICAgWWVzOiAnJEpTVGV4dHsiWWVzIn0nLAogICAgICAgICAgICBObzogICckSlNUZXh0eyJObyJ9JywKICAgICAgICAgICAgT2s6ICAnJEpTVGV4dHsiT2sifScKICAgICAgICB9CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0IC0tPgoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdVcGRhdGUgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgo8IS0tIGR0bDpibG9jazpIZWFkZXJBZGQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiQWRkIExhbmd1YWdlIn08L2gyPgo8IS0tIGR0bDpibG9jazpIZWFkZXJBZGQgLS0+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckVkaXQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiRWRpdCBMYW5ndWFnZSJ9PC9oMj4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyRWRpdCAtLT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJEVudnsiQWN0aW9uIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IiRMUURhdGF7IkFjdGlvbiJ9QWN0aW9uIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYW5ndWFnZUlEIiB2YWx1ZT0iJFFEYXRheyJMYW5ndWFnZUlEIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiAkVGV4dHsiTmFtZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgaWQ9Ik5hbWUiIHZhbHVlPSIkUURhdGF7Ik5hbWUifSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkICRRRGF0YXsiTmFtZVNlcnZlckVycm9yIn0iIG1heGxlbmd0aD0iNTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IiREYXRheyJOYW1lU2VydmVyRXJyb3JNZXNzYWdlIn0ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU3VibWl0In0iPiRUZXh0eyJTdWJtaXQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsib3IifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9Ij4kVGV4dHsiQ2FuY2VsIn08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1VwZGF0ZSAtLT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXcgLS0+Cgo8IS0tIGR0bDpibG9jazpEZWxldGUgLS0+CjwhLS0gZHRsOmJsb2NrOk5vQWZmZWN0ZWRJdGVtcyAtLT4KPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgVzMwMHB4Ij4KICAgIDxsYWJlbD4kVGV4dHsiTGFuZ3VhZ2UifTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2ZpZWxkc2V0Pgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBDZW50ZXIiPgogICAgJFRleHR7IkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8ifQo8L3A+CjwhLS0gZHRsOmJsb2NrOk5vQWZmZWN0ZWRJdGVtcyAtLT4KCjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXMgLS0+CjxwPgogICAgJFRleHR7IllvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEifQo8L3A+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgJFRleHR7IlRoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpIn06CjwvcD4KCjx1bD4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRJdGVtc1JvdyAtLT4KICAgIDxsaSBjbGFzcz0iSW5kZW50IFNwYWNpbmdCb3R0b21TbWFsbCI+CiAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifSREYXRheyJMaW5rIn07QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iPgogICAgICAgICAgICAkQ29uZmlneyJGQVE6OkZBUUhvb2sifTokUURhdGF7Ik51bWJlciJ9PHNwYW4+Jm5ic3A7Jm1kYXNoOzwvc3Bhbj4gJFFEYXRheyJUaXRsZSIsICI2MCJ9CiAgICAgICAgPC9hPgogICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6QWZmZWN0ZWRJdGVtc1JvdyAtLT4KPC91bD4KCjwhLS0gZHRsOmJsb2NrOkFmZmVjdGVkSXRlbXMgLS0+CjwhLS0gZHRsOmJsb2NrOkRlbGV0ZSAtLT4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhciAtLT4KPGRpdiBjbGFzcz0iT3ZlcnZpZXdCb3ggQVJJQVJvbGVNYWluICRRRGF0YXsiVmlldyJ9Ij4KICAgIDxoMT4kVGV4dHsiJERhdGF7IlRpdGxlTmFtZSJ9In06ICRUZXh0eyIkRGF0YXsiVGl0bGVWYWx1ZSJ9In08L2gxPgoKJERhdGF7IkRhdGFJblRoZU1pZGRsZSJ9CgogICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdDb250cm9sIiBpZD0iT3ZlcnZpZXdDb250cm9sIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250cm9sUm93Ij4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJGaWx0ZXIgLS0+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW0gLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIC0tPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlICRRRGF0YXsiQ1NTIn0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9OyREYXRheyJGaWx0ZXJMaW5rIn1GaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn0iPiRUZXh0eyIkRGF0YXsiTmFtZSJ9In08c3Bhbj4kUURhdGF7IkNvdW50In08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCAtLT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IiRRRGF0YXsiQ1NTIn0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9OyREYXRheyJGaWx0ZXJMaW5rIn1GaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn0iPiRUZXh0eyIkRGF0YXsiTmFtZSJ9In08c3Bhbj4kUURhdGF7IkNvdW50In08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkTm90IC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCAtLT4KICAgICAgICAgICAgICAgICAgICAtCjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlckl0ZW0gLS0+CiAgICAgICAgICAgICAgICA8L3VsPgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhckZpbHRlciAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJQYWdlQmFjayAtLT4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0iJExRRGF0YXsiTGlua0JhY2tJRCJ9IiBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9OyRRRGF0YXsiTGlua0JhY2sifSI+JFRleHR7IkNoYW5nZSBzZWFyY2ggb3B0aW9ucyJ9PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0ZBUVNlYXJjaCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5BZ2VudC5TZWFyY2guT3BlblNlYXJjaERpYWxvZyggJ0FnZW50RkFRU2VhcmNoJywgIiRRRGF0YXsiUHJvZmlsZSJ9IiApOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyUGFnZUJhY2sgLS0+Cgo8IS0tIGR0bDpibG9jazpDb250ZXh0U2V0dGluZ3MgLS0+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkNvbnRleHRGdW5jdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQ29udGV4dFNldHRpbmdzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlNob3dDb250ZXh0U2V0dGluZ3NEaWFsb2ciIHRpdGxlPSIkVGV4dHsiQ29udGV4dCBTZXR0aW5ncyJ9Ij48c3Bhbj4kVGV4dHsiQ29udGV4dCBTZXR0aW5ncyJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIiIGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50UHJlZmVyZW5jZXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVXBkYXRlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikdyb3VwIiB2YWx1ZT0iJFFEYXRheyJHcm91cCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJlZGlyZWN0VVJMIiB2YWx1ZT0iJFFEYXRheyJSZXF1ZXN0ZWRVUkwifSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSIkUURhdGF7IlByZWZlcmVuY2VzS2V5In0iPiRUZXh0eyJGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJQYWdlU2hvd25TdHJpbmcifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+Cgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAvLyBiaW5kIHRoZSBDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIKICAgICQoJyNTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksICckSlNUZXh0eyJTZXR0aW5ncyJ9JywgJzIwJScsICdDZW50ZXInLCB0cnVlLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGFiZWw6ICckSlNUZXh0eyJTdWJtaXQifScsCiAgICAgICAgICAgICAgICAgICAgVHlwZTogJ1N1Ym1pdCcsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICdQcmltYXJ5JwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgKTsKICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPCEtLSBkdGw6YmxvY2s6Q29udGV4dFNldHRpbmdzIC0tPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJPdmVydmlld0FjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICREYXRheyJBY3Rpb25Sb3cifQogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iT3ZlcnZpZXdab29tIj4KCjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyVmlld01vZGUgLS0+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyVmlld01vZGVTZWxlY3RlZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJBY3RpdmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IiRRRGF0YXsiTmFtZSJ9IiBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0ZpbHRlcj0kTFFEYXRheyJGaWx0ZXIifTtWaWV3PSRMUURhdGF7IlZpZXcifTskUURhdGF7IkxpbmtGaWx0ZXIifSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiTmFtZSJ9In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbWFnZU1vZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTmFtZVNob3J0Ij4kVGV4dHsiJERhdGF7Ik5hbWVTaG9ydCJ9In08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJOYW1lTG9uZyI+JFRleHR7IiREYXRheyJOYW1lIn0ifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyVmlld01vZGVTZWxlY3RlZCAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iJFFEYXRheyJOYW1lIn0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07Vmlldz0kTFFEYXRheyJWaWV3In07JERhdGF7IkxpbmtGaWx0ZXIifSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiTmFtZSJ9In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbWFnZU1vZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTmFtZVNob3J0Ij4kVGV4dHsiJERhdGF7Ik5hbWVTaG9ydCJ9In08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJOYW1lTG9uZyI+JFRleHR7IiREYXRheyJOYW1lIn0ifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCAtLT4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJWaWV3TW9kZSAtLT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUmVzdWx0TG9uZyJ9CiAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJTaXRlTmF2QmFyTG9uZyJ9CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciAtLT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXJMZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgojIHNvcnQgb3JkZXIgYmFyIGlmIG5lZWRlZAogICAgICAgICAgICAgICAgJERhdGF7IlNvcnRPcmRlckJhciJ9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld05hdkJhciAtLT4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLlVJLkFjdGlvblJvdy5Jbml0KCk7Ci8vXV0+PC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgoKPGRpdiBpZD0iT3ZlcnZpZXdCb2R5IiBjbGFzcz0iT3ZlcnZpZXcgRml4ZWRIZWFkZXIiPgo8IS0tIGR0bDpibG9jazpOb0ZBUUZvdW5kIC0tPgogICAgPGRpdiBpZD0iRW1wdHlNZXNzYWdlU21hbGwiPgogICAgICAgICRUZXh0eyJObyBGQVEgZGF0YSBmb3VuZC4ifQogICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk5vRkFRRm91bmQgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZEZvcm0gLS0+CiAgICA8dGFibGUgaWQ9IkZpeGVkVGFibGUiIGNsYXNzPSJUYWJsZVNtYWxsIiBzdW1tYXJ5PSIkVGV4dHsiQSBnZW5lcmljIEZBUSB0YWJsZSJ9Ij4KICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgIDx0cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVySGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgJFFEYXRheyJDU1MifSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiTGlua1NvcnQifTtTb3J0Qnk9RkFRSUQ7T3JkZXJCeT0kTFFEYXRheyJPcmRlckJ5In0iPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVySGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRUaXRsZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgJFFEYXRheyJDU1MifSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiTGlua1NvcnQifTtTb3J0Qnk9VGl0bGU7T3JkZXJCeT0kTFFEYXRheyJPcmRlckJ5In0iPiRUZXh0eyJUaXRsZSJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkVGl0bGVIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENhdGVnb3J5SGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSAkUURhdGF7IkNTUyJ9Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9OyREYXRheyJMaW5rU29ydCJ9O1NvcnRCeT1DYXRlZ29yeTtPcmRlckJ5PSRMUURhdGF7Ik9yZGVyQnkifSI+JFRleHR7IkNhdGVnb3J5In08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDYXRlZ29yeUhlYWRlciAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2VIZWFkZXIgLS0+CiAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlICRRRGF0YXsiQ1NTIn0iPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07JERhdGF7IkxpbmtTb3J0In07U29ydEJ5PUxhbmd1YWdlO09yZGVyQnk9JExRRGF0YXsiT3JkZXJCeSJ9Ij4kVGV4dHsiTGFuZ3VhZ2UifTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlSGVhZGVyIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRTdGF0ZUhlYWRlciAtLT4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iU3RhdGUgJFFEYXRheyJDU1MifSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiTGlua1NvcnQifTtTb3J0Qnk9U3RhdGU7T3JkZXJCeT0kTFFEYXRheyJPcmRlckJ5In0iPiRUZXh0eyJTdGF0ZSJ9PC9hPgogICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkU3RhdGVIZWFkZXIgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENoYW5nZWRIZWFkZXIgLS0+CiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNoYW5nZWQgJFFEYXRheyJDU1MifSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTskRGF0YXsiTGlua1NvcnQifTtTb3J0Qnk9Q2hhbmdlZDtPcmRlckJ5PSRMUURhdGF7Ik9yZGVyQnkifSI+JFRleHR7IkNoYW5nZWQifTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOlJlY29yZENoYW5nZWRIZWFkZXIgLS0+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICA8dGJvZHk+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgPHRyIGlkPSJJdGVtSURfJFFEYXRheyJJdGVtSUQifV8kUURhdGF7IkNvdW50ZXIifSIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlciAtLT4KICAgICAgICAgICAgICAgIDx0ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyTGlua1N0YXJ0IC0tPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifTtOYXY9JExRRGF0YXsiTmF2In0iIHRpdGxlPSIkTFFEYXRheyJOdW1iZXIifSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPgo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXJMaW5rU3RhcnQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiTnVtYmVyIn0KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTnVtYmVyTGlua0VuZCAtLT4KICAgICAgICAgICAgICAgICAgICA8L2E+CjwhLS0gZHRsOmJsb2NrOlJlY29yZE51bWJlckxpbmtFbmQgLS0+CiAgICAgICAgICAgICAgICA8L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmROdW1iZXIgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFRpdGxlIC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSI+JFFEYXRheyJUaXRsZSIsIjQwIn08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFRpdGxlIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDYXRlZ29yeSAtLT4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSIkVGV4dHsiJERhdGF7IkNhdGVnb3J5TmFtZSJ9In0iPiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnlOYW1lIn0iLCI1MCJ9PC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDYXRlZ29yeSAtLT4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4kVGV4dHsiJERhdGF7Ikxhbmd1YWdlIn0ifTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFN0YXRlIC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXY+JFRleHR7IiREYXRheyJTdGF0ZSJ9In08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZFN0YXRlIC0tPgo8IS0tIGR0bDpibG9jazpSZWNvcmRDaGFuZ2VkIC0tPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXY+JFRpbWVTaG9ydHsiJFFEYXRheyJDaGFuZ2VkIn0ifTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkQ2hhbmdlZCAtLT4KICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgIDwvdGJvZHk+CiAgICA8L3RhYmxlPgo8IS0tIGR0bDpibG9jazpSZWNvcmRGb3JtIC0tPgo8L2Rpdj4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5VSS5Jbml0VGFibGVIZWFkKCQoJyNGaXhlZFRhYmxlIHRoZWFkJyksICQoJyNGaXhlZFRhYmxlIHRib2R5JykpOwogICAgQ29yZS5VSS5TdGF0aWNUYWJsZUNvbnRyb2woJCgnI092ZXJ2aWV3Q29udHJvbCcpLmFkZCgkKCcjT3ZlcnZpZXdCb2R5JykpKTsKICAgICQoJy5NYXN0ZXJBY3Rpb24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgaWYgKEV2ZW50LnRhcmdldCAhPT0gJE1hc3RlckFjdGlvbkxpbmsuZ2V0KDApKSB7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0pOwogICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpIHsKICAgICAgICBDb3JlLlVJLkFkanVzdFRhYmxlSGVhZCgkKCcjT3ZlcnZpZXdIZWFkZXIgdGhlYWQnKSwgJCgnI092ZXJ2aWV3Qm9keSB0Ym9keScpKTsKICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9Im1haW5oZWFkIj4kQ29uZmlneyJGQVE6OkZBUUhvb2sifTogJFFEYXRheyJOdW1iZXIifSAvICRRRGF0YXsiVGl0bGUifTwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjEwIiB3aWR0aD0iMTAwJSI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4KICAgICAgICAgICAgJFRleHR7IkZBUS1JbmZvIn06CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNTAlIiB2YWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IkNhdGVnb3J5In06IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiREYXRheyJDYXRlZ29yeU5hbWUifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlN0YXRlIn06IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7Ikxhbmd1YWdlIn06IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiREYXRheyJMYW5ndWFnZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgoKPCEtLSBkdGw6YmxvY2s6UHJpbnRBcHByb3ZhbCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJBcHByb3ZhbCJ9OjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiA8ZGl2IHRpdGxlPSIkVGV4dHsiJERhdGF7IkFwcHJvdmFsIn0ifSI+JFRleHR7IiREYXRheyJBcHByb3ZhbCJ9In08L2Rpdj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UHJpbnRBcHByb3ZhbCAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUwJSIgdmFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KCjwhLS0gZHRsOmJsb2NrOlJhdGluZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJWb3RlcyJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4gJFFEYXRheyJWb3RlcyJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiUmVzdWx0In06IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiAkUURhdGF7IlZvdGVSZXN1bHQifSAmIzM3OzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSYXRpbmcgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7Ikxhc3QgdXBkYXRlIn06IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IktleXdvcmRzIn06IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiS2V5d29yZHMifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGhyPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+CiAgICAgICAgICAgICRUZXh0eyIkRGF0YXsiQ2FwdGlvbiJ9In06ICA8c3BhbiBjbGFzcz0ic21hbGwiPigkVGV4dHsiJERhdGF7IlN0YXRlTmFtZSJ9In0pIDwvc3Bhbj4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEwIiBjZWxsUGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiQ29udGVudCJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkPgogICAgICAgICAgICA8aHI+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+Cgo8IS0tIGR0bDpibG9jazpMaW5rIC0tPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+CiAgICAgICAgICAgICRUZXh0eyJMaW5rZWQtT2JqZWN0In06CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNTAlIiB2YWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgo8IS0tIGR0bDpibG9jazpMaW5rVHlwZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciB2YWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5IiB3aWR0aD0iMjAlIj4kVGV4dHsiJERhdGF7IkxpbmtUeXBlTmFtZSJ9In06PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+CjwhLS0gZHRsOmJsb2NrOkxpbmtUeXBlUm93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiTGlua1N0cmcifTxici8+CjwhLS0gZHRsOmJsb2NrOkxpbmtUeXBlUm93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpMaW5rVHlwZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6TGluayAtLT4KCjwvdGFibGU+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpTZWFyY2hBSkFYIC0tPgo8ZGl2IGNsYXNzPSJJbm5lckNvbnRlbnQiPgogICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBpZD0iU2VhcmNoRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iJEVudnsiQWN0aW9uIn0iIGlkPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IiRRRGF0YXsiRW1wdHlTZWFyY2gifSIgaWQ9IkVtcHR5U2VhcmNoIi8+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTmF2IiB2YWx1ZT0iJFFEYXRheyJOYXYifSIvPgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+JFRleHR7IlNlYXJjaCB0ZW1wbGF0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICREYXRheyJQcm9maWxlc1N0cmcifQoKICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVOZXciIHZhbHVlPSIkVGV4dHsiQ3JlYXRlIE5ldyJ9Ij4kVGV4dHsiQ3JlYXRlIE5ldyJ9PC9idXR0b24+CgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZURlbGV0ZSIgY2xhc3M9IkhpZGRlbiIgdmFsdWU9IiRUZXh0eyJEZWxldGUifSI+JFRleHR7IkRlbGV0ZSJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iU2VhcmNoUHJvZmlsZUFkZE5hbWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgdGl0bGU9IiRUZXh0eyJDcmVhdGUgVGVtcGxhdGUifSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPiRUZXh0eyJBZGQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiU2F2ZSBjaGFuZ2VzIGluIHRlbXBsYXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJTYXZlUHJvZmlsZSIgaWQ9IlNhdmVQcm9maWxlIiB2YWx1ZT0iMSIvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIiBpZD0iU2VhcmNoSW5zZXJ0Ij48L2ZpZWxkc2V0PgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+JFRleHR7IkFkZCBhbm90aGVyIGF0dHJpYnV0ZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICREYXRheyJBdHRyaWJ1dGVzU3RyZyJ9CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IkFkZCIgdmFsdWU9IkFkZCIgdGl0bGU9IkFkZCBlbnRyeSI+JFRleHR7IkFkZCJ9PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiT3V0cHV0In06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgJERhdGF7IlJlc3VsdEZvcm1TdHJnIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KICAgIDwvZm9ybT4KCiAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSJTZWFyY2hBdHRyaWJ1dGVzSGlkZGVuIj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iRnVsbHRleHQiaWQ9IkxhYmVsRnVsbHRleHQiPiRUZXh0eyJGdWxsdGV4dCJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IkZ1bGx0ZXh0In0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJOdW1iZXIiIGlkPSJMYWJlbE51bWJlciI+JENvbmZpZ3siRkFROjpGQVFIb29rIn0gJFRleHR7IihlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCopIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIHZhbHVlPSIkUURhdGF7Ik51bWJlciJ9IiBjbGFzcz0iVzUwcGMiLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IlRpdGxlIiBpZD0iTGFiZWxUaXRsZSI+JFRleHR7IlRpdGxlIn06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUaXRsZSIgdmFsdWU9IiRRRGF0YXsiVGl0bGUifSIgY2xhc3M9Ilc1MHBjIi8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iUmVtb3ZlIiB2YWx1ZT0iUmVtb3ZlIiB0aXRsZT0iJFRleHR7IlJlbW92ZSB0aGlzIGVudHJ5In0iPiRUZXh0eyJSZW1vdmUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkIiBpZD0iTGFiZWxLZXl3b3JkIj4kVGV4dHsiS2V5d29yZCJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZCIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZCJ9IiBjbGFzcz0iVzUwcGMiLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJMYW5ndWFnZUlEcyIgaWQ9IkxhYmVsTGFuZ3VhZ2VJRHMiPiRUZXh0eyJMYW5ndWFnZSJ9OjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAkRGF0YXsiTGFuZ3VhZ2VzU2VsZWN0aW9uU3RyaW5nIn0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IkNhdGVnb3J5SURzIiBpZD0iTGFiZWxDYXRlZ29yeUlEcyI+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICREYXRheyJDYXRlZ29yaWVzU2VsZWN0aW9uU3RyaW5nIn0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJSZW1vdmUiIHZhbHVlPSJSZW1vdmUiIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgZW50cnkifSI+JFRleHR7IlJlbW92ZSJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAkRGF0YXsiQXR0cmlidXRlc09yaWdTdHJnIn0KICAgIDwvZmllbGRzZXQ+CjwvZGl2PgoKPGRpdiBjbGFzcz0iQ29udGVudEZvb3RlciBDZW50ZXIiPgogICAgPGJ1dHRvbiBpZD0iU2VhcmNoRm9ybVN1Ym1pdCIgY2xhc3M9IlByaW1hcnkiIHZhbHVlPSJSdW4gU2VhcmNoIj4kVGV4dHsiUnVuIFNlYXJjaCJ9PC9idXR0b24+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKXsKPCEtLSBkdGw6YmxvY2s6U2VhcmNoQUpBWFNob3cgLS0+CiAgICAgICAgQ29yZS5BZ2VudC5TZWFyY2guU2VhcmNoQXR0cmlidXRlQWRkKCckUURhdGF7IkF0dHJpYnV0ZSJ9Jyk7CjwhLS0gZHRsOmJsb2NrOlNlYXJjaEFKQVhTaG93IC0tPgogICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkKCk7CiAgICB9LCAwKTsKLy9dXT48L3NjcmlwdD4KCjwhLS0gZHRsOmJsb2NrOlNlYXJjaEFKQVggLS0+Cgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+Cgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5BZ2VudC5TZWFyY2guT3BlblNlYXJjaERpYWxvZyggJyRFbnZ7IkFjdGlvbiJ9JyApOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+Cgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gKCRRdW90ZXsiJENvbmZpZ3siRkFROjpGQVFIb29rIn0ifSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPiRRdW90ZXsiJENvbmZpZ3siUHJvZHVjdE5hbWUifSJ9ICgkUXVvdGV7IiRDb25maWd7IkZBUTo6RkFRSG9vayJ9In0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+JEVudnsiVXNlckNoYXJzZXQifTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSIkQ29uZmlneyJIdHRwVHlwZSJ9Oi8vJEVudnsiSFRUUF9IT1NUIn0kRW52eyJCYXNlbGluayJ9QWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7TnVtYmVyPXtzZWFyY2hUZXJtc30iIC8+CjxJbWFnZSBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIHR5cGU9ImltYWdlL3gtaWNvbiI+JENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JENvbmZpZ3siRnJvbnRlbmQ6OkltYWdlUGF0aCJ9aWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gKCRUZXh0eyJGQVFGdWxsdGV4dCJ9KTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gKCRUZXh0eyJGQVFGdWxsdGV4dCJ9KTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPiRFbnZ7IlVzZXJDaGFyc2V0In08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iJENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0Z1bGx0ZXh0PXtzZWFyY2hUZXJtc30iIC8+CjxJbWFnZSBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIHR5cGU9ImltYWdlL3gtaWNvbiI+JENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JENvbmZpZ3siRnJvbnRlbmQ6OkltYWdlUGF0aCJ9aWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIHN0YXJ0IGZvcm0gLS0+CjxpPiREYXRheyJXYXJuaW5nIn08L2k+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0ibWFpbmhlYWQiPiRUZXh0eyJTZWFyY2gifTwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgo8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI0Ij4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRib2R5Ij4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMyI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kQ29uZmlneyJGQVE6OkZBUUhvb2sifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzNSUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiVGl0bGUifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiQ2F0ZWdvcnkifTwvdGQ+Cgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYW5ndWFnZSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlN0YXRlIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IkNoYW5nZWQifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiTnVtYmVyIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IlRpdGxlIiwiNDAifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIiwiMzAifTwvdGQ+Cgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJMYW5ndWFnZSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IlN0YXRlIiwiMzAifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgPC90cj4KPC90YWJsZT4KPCEtLSBlbmQgZm9ybSAtLT4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+CjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxPiRUZXh0eyJGQVEgU2VhcmNoIn08L2gxPgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiUHJvZmlsZSJ9PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSIkRW52eyJBY3Rpb24ifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iTG9hZFByb2ZpbGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IiRRRGF0YXsiTmF2In0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiPiRUZXh0eyJTZWFyY2ggdGVtcGxhdGUifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUHJvZmlsZXNTdHJnIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gU3BhY2luZ1RvcCIgbmFtZT0iU2VsZWN0VGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTZWxlY3QifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7IlNlbGVjdCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFNwYWNpbmdUb3AiIG5hbWU9IkVyYXNlVGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJEZWxldGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7IkRlbGV0ZSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFNwYWNpbmdUb3AiIG5hbWU9IlNlYXJjaFRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU2VhcmNoIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiRUZXh0eyJTZWFyY2gifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxmb3JtIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRFbnZ7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOYXYiIHZhbHVlPSIkUURhdGF7Ik5hdiJ9Ii8+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/In08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNhdmVQcm9maWxlIj4kVGV4dHsiU2F2ZSBhcyBUZW1wbGF0ZT8ifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iU2F2ZSBhcyBUZW1wbGF0ZSIgdHlwZT0iY2hlY2tib3giIGlkPSJTYXZlUHJvZmlsZSIgbmFtZT0iU2F2ZVByb2ZpbGUiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQcm9maWxlIj4kVGV4dHsiVGVtcGxhdGUgTmFtZSJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsZSBuYW1lIiB0eXBlPSJ0ZXh0IiBpZD0iUHJvZmlsZSIgbmFtZT0iUHJvZmlsZSIgdmFsdWU9IiRRRGF0YXsiUHJvZmlsZSJ9IiAvPgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJGdWxsdGV4dCJpZD0iTGFiZWxGdWxsdGV4dCI+JFRleHR7IkZ1bGx0ZXh0In06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSIkUURhdGF7IkZ1bGx0ZXh0In0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcFNtYWxsIENsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+JENvbmZpZ3siRkFROjpGQVFIb29rIn0gJFRleHR7IihlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCopIn08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJENvbmZpZ3siRkFROjpGQVFIb29rIn0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iJFFEYXRheyJOdW1iZXIifSIvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wU21hbGwgQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGl0bGUiPiRUZXh0eyJUaXRsZSJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJUaXRsZSJ9IiB0eXBlPSJ0ZXh0IiBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iJFFEYXRheyJUaXRsZSJ9IiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3BTbWFsbCBDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkIj4kVGV4dHsiS2V5d29yZCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ICJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGV4dHsiS2V5d29yZCJ9IiB0eXBlPSJ0ZXh0IiBpZD0iS2V5d29yZCIgbmFtZT0iS2V5d29yZCIgdmFsdWU9IiRRRGF0YXsiS2V5d29yZCJ9IiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nU3BhY2luZ1RvcFNtYWxsIENsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhbmd1YWdlSURzIj4kVGV4dHsiTGFuZ3VhZ2UifTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7Ikxhbmd1YWdlc1N0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J1NwYWNpbmdUb3BTbWFsbCBDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDYXRlZ29yeUlEcyI+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ2F0ZWdvcmllc1N0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxkaXYgaWQ9IkJvdHRvbUFjdGlvblJvdyIgY2xhc3M9IkNlbnRlciBTcGFjaW5nVG9wU21hbGwiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU2VhcmNoIn0iPiRUZXh0eyJTZWFyY2gifTwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZm9ybT4KPC9kaXY+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaCAtLT4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxoMSB0aXRsZT0iJENvbmZpZ3siRkFROjpGQVFIb29rIn06ICRRRGF0YXsiTnVtYmVyIn0gJm5kYXNoOyAkUURhdGF7IlRpdGxlIiwgIjQwIn0iPgogICAgICAgICAgICAkQ29uZmlneyJGQVE6OkZBUUhvb2sifTogJERhdGF7Ik51bWJlciJ9IDxzcGFuPiZtZGFzaDs8L3NwYW4+ICRRRGF0YXsiVGl0bGUiLCAiNjAifQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJGQVFQYXRoQ2F0ZWdvcnkiPgogICAgICAgIDxoMz4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgJENvbmZpZ3siRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2VwYXJhdG9yIn0KICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O05hdj0kTFFEYXRheyJOYXYifSI+CiAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICA8L2E+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CiAgICAgICAgPC9oMz4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiRkFRIEluZm9ybWF0aW9uIn08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSJ9Ij4kVGV4dHsiJERhdGF7IkNhdGVnb3J5TmFtZSJ9IiwiMTgifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJLZXl3b3JkcyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CjwhLS0gZHRsOmJsb2NrOktleXdvcmRzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0tleXdvcmQ9JExRRGF0YXsiS2V5d29yZCJ9IiB0aXRsZT0iJFFEYXRheyJLZXl3b3JkIn0iPiRRRGF0YXsiS2V5d29yZCJ9PC9hPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlN0YXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJTdGF0ZSJ9In0iPiRUZXh0eyIkRGF0YXsiU3RhdGUifSIsIjI1In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiTGFuZ3VhZ2UifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiJERhdGF7Ikxhbmd1YWdlIn0ifSI+JFRleHR7IiREYXRheyJMYW5ndWFnZSJ9IiwiMTgifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdBcHByb3ZhbCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJBcHByb3ZhbCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQXBwcm92YWwifSJ9Ij4kVGV4dHsiJERhdGF7IkFwcHJvdmFsIn0iLCIxOCJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOlZpZXdBcHByb3ZhbCAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiUmF0aW5nIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiUmF0aW5nICREYXRheyJWb3RlUmVzdWx0In0lIn0iPgoKPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPlN0YXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzIC0tPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnNDb3VudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJhdGVTdGFyVGV4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJTdGFycyJ9ICRUZXh0eyJvdXQgb2YgNSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzQ291bnQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+Cgo8IS0tIGR0bDpibG9jazpWaWV3Vm90ZXMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiVm90ZXMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGV4dHsiJERhdGF7IlZvdGVzIn0ifSI+JFRleHR7IiREYXRheyJWb3RlcyJ9IiwiMTgifTwvcD4KPCEtLSBkdGw6YmxvY2s6Vmlld1ZvdGVzIC0tPgo8IS0tIGR0bDpibG9jazpWaWV3Tm9Wb3RlcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJWb3RlcyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyJObyB2b3RlcyBmb3VuZCEifSI+JFRleHR7Ik5vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4ifTwvcD4KPCEtLSBkdGw6YmxvY2s6Vmlld05vVm90ZXMgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkNyZWF0ZWQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGltZUxvbmd7IiREYXRheyJDcmVhdGVkIn0ifSAoJERhdGF7IkNyZWF0ZWRCeUxvZ2luIn0pIj4kVGltZVNob3J0eyIkRGF0YXsiQ3JlYXRlZCJ9In0gICgkRGF0YXsiQ3JlYXRlZEJ5TG9naW4ifSk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiQ2hhbmdlZCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9ICgkRGF0YXsiQ3JlYXRlZEJ5TG9naW4ifSkiPiRUaW1lU2hvcnR7IiREYXRheyJDaGFuZ2VkIn0ifSAgKCREYXRheyJDaGFuZ2VkQnlMb2dpbiJ9KTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+Cgo8IS0tIGR0bDpibG9jazpMaW5rVGFibGVTaW1wbGUgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkxpbmtlZCBPYmplY3RzIn08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiTGlua1RhYmxlU3RyZyJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkxpbmtUYWJsZVNpbXBsZSAtLT4KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWRkaXRpb25hbEluZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbnMiPgoKPCEtLSBkdGw6YmxvY2s6TWVudUl0ZW0gLS0+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9JERhdGF7IkxpbmsifSIgaWQ9IiRRRGF0YXsiTWVudUlEIn0iIGNsYXNzPSIkUURhdGF7IkNsYXNzIn0iICREYXRheyJMaW5rUGFyYW0ifSB0aXRsZT0iJFRleHR7IiREYXRheyJEZXNjcmlwdGlvbiJ9In0iPiRUZXh0eyIkRGF0YXsiTmFtZSJ9In08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KCjwhLS0gZHRsOmJsb2NrOlNob3dDb25maXJtYXRpb25EaWFsb2cgLS0+CjwhLS1kdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCi8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwogICAgRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5CaW5kQ29uZmlybWF0aW9uRGlhbG9nKHsKICAgICAgICBFbGVtZW50SUQ6ICAgICAgICAgICAgICAgICAgJyREYXRheyJNZW51SUQifScsCiAgICAgICAgRWxlbWVudFNlbGVjdG9yOiAgICAgICAgICAgICckRGF0YXsiRWxlbWVudFNlbGVjdG9yIn0nLAogICAgICAgIERpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZzogICAnJERhdGF7IkRpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZyJ9JywKICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZzogJyREYXRheyJDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyJ9JywKICAgICAgICBEaWFsb2dUaXRsZTogICAgICAgICAgICAgICAgJyREYXRheyJEaWFsb2dUaXRsZSJ9JywKICAgICAgICBUcmFuc2xhdGVkVGV4dDogICAgICAgICAgICAgewogICAgICAgICAgICBZZXM6ICckSlNUZXh0eyJZZXMifScsCiAgICAgICAgICAgIE5vOiAgJyRKU1RleHR7Ik5vIn0nLAogICAgICAgICAgICBPazogICckSlNUZXh0eyJPayJ9JwogICAgICAgIH0KICAgIH0pOwovL11dPjwvc2NyaXB0Pgo8IS0tZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlLS0+CjwhLS0gZHRsOmJsb2NrOlNob3dDb25maXJtYXRpb25EaWFsb2cgLS0+Cgo8IS0tIGR0bDpibG9jazpNZW51SXRlbSAtLT4KCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0iRkFRQm9keSI+Cgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50SGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0Qm94Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXJ0aWNsZUZBUUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkF0dGFjaG1lbnRzIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgoKPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iRG93bmxvYWRBdHRhY2htZW50IiB0aXRsZT0iJFRleHR7IkRvd25sb2FkIEF0dGFjaG1lbnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn07RmlsZUlEPSRMUURhdGF7IkZpbGVJRCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiRmlsZW5hbWUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJFFEYXRheyJGaWxlc2l6ZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRSb3cgLS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRIZWFkZXIgLS0+Cgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0Qm94Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXJ0aWNsZUZBUUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IiREYXRheyJDYXB0aW9uIn0ifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkZBUVN0YXRlTmFtZSI+KCRUZXh0eyIkRGF0YXsiU3RhdGVOYW1lIn0ifSk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ29udGVudCJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0Qm94Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFWb3RpbmciIGlkPSJGQVFWb3RpbmciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiUmF0aW5nIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4kVGV4dHsiSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhIn08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJGQVFWb3RlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlTGFiZWxCZWZvcmUiPiRUZXh0eyJub3QgaGVscGZ1bCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZ1JhdGVSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJhdGVCdXR0b24kRGF0YXsiVmFsdWUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZUJ1dHRvbiBSYXRlVW5DaGVja2VkIj4kUURhdGF7IlRpdGxlIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpGQVFWb3RpbmdSYXRlUm93IC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlTGFiZWxBZnRlciI+JFRleHR7InZlcnkgaGVscGZ1bCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJIaWRkZW4iIGlkPSJSYXRlU3VibWl0QnV0dG9uIiBuYW1lPSJidG4iIHZhbHVlPSIkVGV4dHsiU3VibWl0In0iPiRUZXh0eyJTdWJtaXQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZ2VudEZBUVpvb20iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVm90ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iJFFEYXRheyJDYXRlZ29yeUlEIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iJFFEYXRheyJJdGVtSUQifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSYXRlIiB2YWx1ZT0iImlkPSJSYXRlVmFsdWUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nIC0tPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6TGlua1RhYmxlQ29tcGxleCAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAkRGF0YXsiTGlua1RhYmxlU3RyZyJ9CiAgICAgICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpMaW5rVGFibGVDb21wbGV4IC0tPgoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCd1bC5BY3Rpb25zIGEuQXNQb3B1cCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAgKCQodGhpcykuYXR0cignaHJlZicpLCAnQWN0aW9uJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7CgogICAgJCgnLlJhdGVCdXR0b24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIHZhciBSYXRlTnVtYmVyID0gcGFyc2VJbnQoJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5hdHRyKCdpZCcpLnJlcGxhY2UoL1JhdGVCdXR0b24vLCAnJyksIDEwKTsKICAgICAgICAkKCcjUmF0ZVZhbHVlJykudmFsKFJhdGVOdW1iZXIpOwogICAgICAgICQoJyNSYXRlU3VibWl0QnV0dG9uJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICQoJyNGQVFWb3RpbmcnKS5maW5kKCcuUmF0ZUJ1dHRvbicpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBJdGVtUmF0ZU51bWJlciA9IHBhcnNlSW50KCQodGhpcykuY2xvc2VzdCgnZGl2JykuYXR0cignaWQnKS5yZXBsYWNlKC9SYXRlQnV0dG9uLywgJycpLCAxMCk7CiAgICAgICAgICAgIGlmICggSXRlbVJhdGVOdW1iZXIgPD0gUmF0ZU51bWJlciApIHsKICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdSYXRlVW5DaGVja2VkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdSYXRlVW5DaGVja2VkJyk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdSYXRlQ2hlY2tlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxoMSB0aXRsZT0iJFRleHR7Ilpvb20ifSAkQ29uZmlneyJGQVE6OkZBUUhvb2sifTogJFFEYXRheyJOdW1iZXIifSAmbmRhc2g7ICRRRGF0YXsiVGl0bGUiLCAiNDAifSI+CiAgICAgICAgICAgICRDb25maWd7IkZBUTo6RkFRSG9vayJ9OiAkRGF0YXsiTnVtYmVyIn0gPHNwYW4+Jm1kYXNoOzwvc3Bhbj4gJFFEYXRheyJUaXRsZSIsICI2MCJ9CiAgICAgICAgPC9oMT4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkZBUVBhdGhDYXRlZ29yeSI+CiAgICAgICAgPGgzPgoKPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgJENvbmZpZ3siRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2VwYXJhdG9yIn0KICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O05hdj0kTFFEYXRheyJOYXYifSI+CiAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICA8L2E+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CgogICAgICAgIDwvaDM+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiRkFRIEluZm9ybWF0aW9uIn08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkNhdGVnb3J5In06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSJ9Ij4kVGV4dHsiJERhdGF7IkNhdGVnb3J5TmFtZSJ9In08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiS2V5d29yZHMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249QWdlbnRGQVFTZWFyY2hTbWFsbDtTdWJhY3Rpb249U2VhcmNoO0tleXdvcmQ9JExRRGF0YXsiS2V5d29yZCJ9IiB0aXRsZT0iJFFEYXRheyJLZXl3b3JkIn0iPiRRRGF0YXsiS2V5d29yZCJ9PC9hPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlN0YXRlIn06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IiREYXRheyJTdGF0ZSJ9In0iPiRUZXh0eyIkRGF0YXsiU3RhdGUifSJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+Cgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJMYW5ndWFnZSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiTGFuZ3VhZ2UifSJ9Ij4kVGV4dHsiJERhdGF7Ikxhbmd1YWdlIn0ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdBcHByb3ZhbCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJBcHByb3ZhbCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyIkRGF0YXsiQXBwcm92YWwifSJ9Ij4kVGV4dHsiJERhdGF7IkFwcHJvdmFsIn0ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpWaWV3QXBwcm92YWwgLS0+Cgo8IS0tIGR0bDpibG9jazpWaWV3UmF0aW5nIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IlJhdGluZyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZhbHVlIiB0aXRsZT0iJFRleHR7IlJhdGluZyAkRGF0YXsiVm90ZVJlc3VsdCJ9JSJ9Ij4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPlN0YXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzIC0tPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnNDb3VudCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJhdGVTdGFyVGV4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJTdGFycyJ9ICRUZXh0eyJvdXQgb2YgNSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzQ291bnQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOlZpZXdSYXRpbmcgLS0+Cgo8IS0tIGR0bDpibG9jazpWaWV3Vm90ZXMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiVm90ZXMifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPiRRRGF0YXsiVm90ZXMifTwvcD4KPCEtLSBkdGw6YmxvY2s6Vmlld1ZvdGVzIC0tPgo8IS0tIGR0bDpibG9jazpWaWV3Tm9Wb3RlcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRUZXh0eyJWb3RlcyJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUZXh0eyJObyB2b3RlcyBmb3VuZCEifSI+JFRleHR7Ik5vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4ifTwvcD4KPCEtLSBkdGw6YmxvY2s6Vmlld05vVm90ZXMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiQ3JlYXRlZCJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IiRUaW1lTG9uZ3siJERhdGF7IkNyZWF0ZWQifSJ9ICgkUURhdGF7IkNyZWF0ZWRCeUxvZ2luIn0pIj4kVGltZVNob3J0eyIkRGF0YXsiQ3JlYXRlZCJ9In0gICgkUURhdGF7IkNyZWF0ZWRCeUxvZ2luIn0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JFRleHR7IkNoYW5nZWQifTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSIkVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifSAoJFFEYXRheyJDcmVhdGVkQnlMb2dpbiJ9KSI+JFRpbWVTaG9ydHsiJERhdGF7IkNoYW5nZWQifSJ9ICAoJFFEYXRheyJDcmVhdGVkQnlMb2dpbiJ9KTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0Qm94Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFDb250ZW50U21hbGwiPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kVGV4dHsiJERhdGF7IkNhcHRpb24ifSJ9OjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ29udGVudCJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxpbnB1dCBpZD0iRkFRVGl0bGUiIHR5cGU9ImhpZGRlbiIgbmFtZT0iVGl0bGUiIHZhbHVlPSIkUURhdGF7IlRpdGxlIn0iPgogICAgPGlucHV0IGlkPSJGQVFCb2R5IiB0eXBlPSJoaWRkZW4iIG5hbWU9IkJvZHkiIHZhbHVlPSIkUURhdGF7IkZ1bGxCb2R5In0iPgogICAgPGlucHV0IGlkPSJGQVFQdWJsaWNMaW5rIiB0eXBlPSJoaWRkZW4iIG5hbWU9IkxpbmsiICB2YWx1ZT0iJERhdGF7IlB1YmxpY2xpbmsifSI+Cgo8L2Rpdj4KCjxkaXYgY2xhc3M9Ilpvb21TbWFsbEZvb3RlciI+CjwhLS0gZHRsOmJsb2NrOkluc2VydFRleHQgLS0+CiAgICA8YnV0dG9uIGlkPSJJbnNlcnRUZXh0IiBjbGFzcz0iUHJpbWFyeSBab29tU21hbGxCdXR0b24iPiRUZXh0eyJJbnNlcnQgRkFRIFRleHQifTwvYnV0dG9uPgo8IS0tIGR0bDpibG9jazpJbnNlcnRUZXh0IC0tPgoKPCEtLSBkdGw6YmxvY2s6SW5zZXJ0TGluayAtLT4KICAgIDxidXR0b24gaWQ9Ikluc2VydExpbmsiIGNsYXNzPSJQcmltYXJ5IFpvb21TbWFsbEJ1dHRvbiI+JFRleHR7Ikluc2VydCBGQVEgTGluayJ9PC9idXR0b24+CjwhLS0gZHRsOmJsb2NrOkluc2VydExpbmsgLS0+Cgo8IS0tIGR0bDpibG9jazpJbnNlcnRCb3RoIC0tPgogICAgPGJ1dHRvbiBpZD0iSW5zZXJ0Qm90aCIgY2xhc3M9IlByaW1hcnkgWm9vbVNtYWxsQnV0dG9uIj4kVGV4dHsiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayJ9PC9idXR0b24+CjwhLS0gZHRsOmJsb2NrOkluc2VydEJvdGggLS0+Cgo8IS0tIGR0bDpibG9jazpPciAtLT4KICAgICRUZXh0eyJvciJ9CjwhLS0gZHRsOmJsb2NrOk9yIC0tPgoKICAgIDxhIGlkPSJDYW5jZWwiIGNsYXNzPSIkUURhdGF7IkNhbmNlbEJ1dHRvbkNsYXNzIn0iIGhyZWY9IiMiPiRUZXh0eyJDYW5jZWwgJiBjbG9zZSB3aW5kb3cifTwvYT4KCjwvZGl2PgoKPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKLypnbG9iYWwgRkFROiB0cnVlICovCiQoJyNDYW5jZWwnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgcGFyZW50LkNvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2cnLCBwYXJlbnQuZG9jdW1lbnQpKTsKfSk7CgokKCcjSW5zZXJ0VGV4dCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgRkFRVGl0bGUgPSAkKCcjRkFRVGl0bGUnKS52YWwoKSwKICAgICAgICBGQVFDb250ZW50ID0gJCgnI0ZBUUJvZHknKS52YWwoKSwKICAgICAgICBGQVFIVE1MQ29udGVudCA9IEZBUUNvbnRlbnQ7CgogICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0RGF0YShGQVFUaXRsZSwgRkFRQ29udGVudCwgRkFRSFRNTENvbnRlbnQpOwp9KTsKCiQoJyNJbnNlcnRMaW5rJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIHZhciBGQVFUaXRsZSA9ICQoJyNGQVFUaXRsZScpLnZhbCgpLAogICAgICAgIEZBUUNvbnRlbnQgPSAkKCcjRkFRUHVibGljTGluaycpLnZhbCgpLAogICAgICAgIEZBUUhUTUxDb250ZW50ID0gJzxhIGhyZWY9IicgKyAkKCcjRkFRUHVibGljTGluaycpLnZhbCgpICsgJyI+JyArICQoJyNGQVFUaXRsZScpLnZhbCgpICsgJzwvYT4nOwoKICAgIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLlNldERhdGEoRkFRVGl0bGUsIEZBUUNvbnRlbnQsIEZBUUhUTUxDb250ZW50KTsKfSk7CgokKCcjSW5zZXJ0Qm90aCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgRkFRVGl0bGUgPSAkKCcjRkFRVGl0bGUnKS52YWwoKSwKICAgICAgICBGQVFDb250ZW50ID0gJCgnI0ZBUUJvZHknKS52YWwoKSArICJcbiIgKyAkKCcjRkFRUHVibGljTGluaycpLnZhbCgpLAogICAgICAgIEZBUUhUTUxDb250ZW50ID0gJCgnI0ZBUUJvZHknKS52YWwoKSArICc8YnIvPicgKyAnPGEgaHJlZj0iJyArICQoJyNGQVFQdWJsaWNMaW5rJykudmFsKCkgKyAnIj4nICsgJCgnI0ZBUVRpdGxlJykudmFsKCkgKyAnPC9hPic7CgogICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0RGF0YShGQVFUaXRsZSwgRkFRQ29udGVudCwgRkFRSFRNTENvbnRlbnQpOwp9KTsKLy9dXT48L3NjcmlwdD4KPCEtLWR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZS0tPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iQVJJQVJvbGVNYWluIj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJGQVFIZWFkZXIiPgogICAgICAgICAgICA8aDIgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSI+CiAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIiwiNDAifQogICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkZBUVBhdGhDYXRlZ29yeSI+CiAgICAgICAgICAgIDxoMz4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgICAgICRDb25maWd7IkZBUTo6RXhwbG9yZXI6OlBhdGg6OlNlcGFyYXRvciJ9CiAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn0iPgogICAgICAgICAgICAgICAgICAgICRRRGF0YXsiTmFtZSJ9CiAgICAgICAgICAgICAgICA8L2E+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIExhcmdlIj4KCjwhLS0gZHRsOmJsb2NrOlF1aWNrU2VhcmNoIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IlNlYXJjaCJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iJEVudnsiQ0dJSGFuZGxlIn0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IiRRRGF0YXsiQWN0aW9uIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IiRRRGF0YXsiTmF2In0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkZ1bGx0ZXh0IiB2YWx1ZT0iJFFEYXRheyJTZWFyY2gifSIgaWQ9IlNlYXJjaCIgdGl0bGU9IiRUZXh0eyJTZWFyY2gifSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTZWFyY2gifSI+JFRleHR7IlF1aWNrIFNlYXJjaCJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IldpbGRjYXJkcyBhcmUgYWxsb3dlZC4ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRkFRU2VhcmNoQnV0dG9uIFNwYWNpbmdUb3AiIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JExRRGF0YXsiQWN0aW9uIn07Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JFRleHR7IkFkdmFuY2VkIFNlYXJjaCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UXVpY2tTZWFyY2ggLS0+Cgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3QgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IiREYXRheyJIZWFkZXIifSJ9PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFEYXRheyJOdW1iZXIifS4KPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvd1Bvc2l0aW9uTnVtYmVyIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9IiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9ICgkUURhdGF7IkNhdGVnb3J5TmFtZSJ9KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUiLCI1MCJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkNhdGVnb3J5U2hvcnROYW1lIiwiMTUifSAkUURhdGF7Ikxhbmd1YWdlIn0gJFFEYXRheyJTdGF0ZSJ9ICRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+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+JERhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JERhdGF7IlRvdGFsSGl0cyJ9PC9zdHJvbmc+IC0gJFRleHR7IlBhZ2UifTogJERhdGF7IlNpdGVOYXZCYXIifQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UGFnaW5hdGlvbiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJPdmVydmlldyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciAkRGF0YXsiRkFRSURTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtTb3J0Qnk9RkFRSUQ7T3JkZXI9JExRRGF0YXsiT3JkZXIifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaXRsZSAkRGF0YXsiVGl0bGVTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtTb3J0Qnk9VGl0bGU7T3JkZXI9JExRRGF0YXsiT3JkZXIifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlRpdGxlIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSAkRGF0YXsiQ2F0ZWdvcnlTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtTb3J0Qnk9Q2F0ZWdvcnk7T3JkZXI9JExRRGF0YXsiT3JkZXIifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IkNhdGVnb3J5In0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iTGFuZ3VhZ2UgJERhdGF7Ikxhbmd1YWdlU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07U29ydEJ5PUxhbmd1YWdlO09yZGVyPSRMUURhdGF7Ik9yZGVyIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJMYW5ndWFnZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlN0YXRlICREYXRheyJTdGF0ZVNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9O1NvcnRCeT1TdGF0ZTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiU3RhdGUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpOb0ZBUURhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPiRUZXh0eyJObyBGQVEgYXJ0aWNsZXMgZm91bmQuIn08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Tm9GQVFEYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRkFRTnVtYmVyIiB0aXRsZT0iJFFEYXRheyJOdW1iZXIifSI+PGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPSREYXRheyJGQVFJRCJ9Ij4kRGF0YXsiTnVtYmVyIn08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJUaXRsZSIgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSI+JFFEYXRheyJUaXRsZSIsIjYwIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNhdGVnb3J5IiB0aXRsZT0iJFFEYXRheyJDYXRlZ29yeU5hbWUifSI+JFFEYXRheyJDYXRlZ29yeU5hbWUiLCI0NSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiIHRpdGxlPSIkUURhdGF7Ikxhbmd1YWdlIn0iPiRRRGF0YXsiTGFuZ3VhZ2UiLCI1In08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJTdGF0ZSIgdGl0bGU9IiRRRGF0YXsiU3RhdGUifSI+JFFEYXRheyJTdGF0ZSIsIjIxIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4kRGF0YXsiUmVzdWx0In08L3N0cm9uZz4gJFRleHR7Im9mIn0gPHN0cm9uZz4kRGF0YXsiVG90YWxIaXRzIn08L3N0cm9uZz4gLSAkVGV4dHsiUGFnZSJ9OiAkRGF0YXsiU2l0ZU5hdkJhciJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRSXRlbUxpc3QgLS0+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBDb3JlLkN1c3RvbWVyLkNsaWNrYWJsZVJvdygpOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9Im1haW5oZWFkIj4kQ29uZmlneyJGQVE6OkZBUUhvb2sifTogJFFEYXRheyJOdW1iZXIifSAvICRRRGF0YXsiVGl0bGUifTwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjEwIiB3aWR0aD0iMTAwJSI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4KICAgICAgICAgICAgJFRleHR7IkZBUS1JbmZvIn06CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNTAlIiB2YWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IkNhdGVnb3J5In06IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJTdGF0ZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IlN0YXRlIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiTGFuZ3VhZ2UifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJMYW5ndWFnZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI1MCUiIHZhbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+Cgo8IS0tIGR0bDpibG9jazpSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiVm90ZXMifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+ICRRRGF0YXsiVm90ZXMifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IlJlc3VsdCJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4gJFFEYXRheyJWb3RlUmVzdWx0In0gJiMzNzs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmF0aW5nIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJMYXN0IHVwZGF0ZSJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kVGltZUxvbmd7IiREYXRheyJDaGFuZ2VkIn0ifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8YnIvPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJLZXl3b3JkcyJ9OiA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOTAlIiBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiS2V5d29yZHMifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGhyPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+CiAgICAgICAgICAgICRUZXh0eyIkRGF0YXsiQ2FwdGlvbiJ9In06ICA8c3BhbiBjbGFzcz0ic21hbGwiPigkVGV4dHsiJERhdGF7IlN0YXRlTmFtZSJ9In0pIDwvc3Bhbj4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEwIiBjZWxsUGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kRGF0YXsiQ29udGVudCJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkPgogICAgICAgICAgICA8aHI+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+Cgo8L3RhYmxlPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+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+CiAgICAgICAgICAgICAgICAgICAgJERhdGF7IkNhdGVnb3JpZXNTdHJnIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IlNlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyJ9PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2F2ZVByb2ZpbGUiPiRUZXh0eyJTYXZlIGFzIFRlbXBsYXRlPyJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlNhdmUgYXMgVGVtcGxhdGUiIHR5cGU9ImNoZWNrYm94IiBpZD0iU2F2ZVByb2ZpbGUiIG5hbWU9IlNhdmVQcm9maWxlIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbCI+JFRleHR7IlRlbXBsYXRlIE5hbWUifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsIG5hbWUiIHR5cGU9InRleHQiIGlkPSJQcm9maWwiIG5hbWU9IlByb2ZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iJFFEYXRheyJQcm9maWxlIn0iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJFRleHR7IlNlYXJjaCJ9Ij4kVGV4dHsiU2VhcmNoIn08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxzcGFuPiRUZXh0eyJPdXRwdXQgdG8ifTwvc3Bhbj4KICAgICAgICAgICAgICAgICREYXRheyJSZXN1bHRGb3JtU3RyZyJ9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgIENvcmUuQ3VzdG9tZXIuSW5pdEZvY3VzKCk7Cjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPCEtLSBkdGw6YmxvY2s6U2VhcmNoIC0tPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiQ3VzdG9tZXIifSAoJFF1b3RleyIkQ29uZmlneyJGQVE6OkZBUUhvb2sifSJ9KTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiQ3VzdG9tZXIifSAoJFF1b3RleyIkQ29uZmlneyJGQVE6OkZBUUhvb2sifSJ9KTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPiRFbnZ7IlVzZXJDaGFyc2V0In08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iJENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO051bWJlcj17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPiRDb25maWd7Ikh0dHBUeXBlIn06Ly8kRW52eyJIVFRQX0hPU1QifSRDb25maWd7IkZyb250ZW5kOjpJbWFnZVBhdGgifWljb25zL3Byb2R1Y3QuaWNvPC9JbWFnZT4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiQ3VzdG9tZXIifSAoJFRleHR7IkZBUUZ1bGx0ZXh0In0pPC9TaG9ydE5hbWU+CjxEZXNjcmlwdGlvbj4kUXVvdGV7IiRDb25maWd7IlByb2R1Y3ROYW1lIn0ifSAtICRUZXh0eyJDdXN0b21lciJ9ICgkVGV4dHsiRkFRRnVsbHRleHQifSk8L0Rlc2NyaXB0aW9uPgo8SW5wdXRFbmNvZGluZz4kRW52eyJVc2VyQ2hhcnNldCJ9PC9JbnB1dEVuY29kaW5nPgo8VXJsIHR5cGU9InRleHQvaHRtbCIgdGVtcGxhdGU9IiRDb25maWd7Ikh0dHBUeXBlIn06Ly8kRW52eyJIVFRQX0hPU1QifSRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtGdWxsdGV4dD17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPiRDb25maWd7Ikh0dHBUeXBlIn06Ly8kRW52eyJIVFRQX0hPU1QifSRDb25maWd7IkZyb250ZW5kOjpJbWFnZVBhdGgifWljb25zL3Byb2R1Y3QuaWNvPC9JbWFnZT4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIHN0YXJ0IGZvcm0gLS0+CjxpPiREYXRheyJXYXJuaW5nIn08L2k+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0ibWFpbmhlYWQiPiRUZXh0eyJTZWFyY2gifTwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgo8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI0Ij4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRib2R5Ij4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMyI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kQ29uZmlneyJGQVE6OkZBUUhvb2sifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzNSUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiVGl0bGUifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiQ2F0ZWdvcnkifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7Ikxhbmd1YWdlIn08L3RkPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1JSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJTdGF0ZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJDaGFuZ2VkIn08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7Ik51bWJlciJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJUaXRsZSIsIjQwIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IkNhdGVnb3J5TmFtZSIsIjMwIn08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJMYW5ndWFnZSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiU3RhdGUiLCIzMCJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFRpbWVMb25neyIkRGF0YXsiQ2hhbmdlZCJ9In08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgo8IS0tIGVuZCBmb3JtIC0tPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0VmlldyBBUklBUm9sZU1haW4gU2VhcmNoUmVzdWx0cyAkQ29uZmlneyJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE92ZXJ2aWV3U29ydGFibGUifSBTb3J0YWJsZSI+CiAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUxvYWRQcm9maWxlOyRRRGF0YXsiTGluayJ9Ij4KICAgICAgICAgICAgICAgICAgICAmbGFycjsgJFRleHR7IkNoYW5nZSBzZWFyY2ggb3B0aW9ucyJ9CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KPCEtLSBkdGw6YmxvY2s6UGFnaW5hdGlvbiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJUYWJzIFBhZ2luYXRpb24iPgogICAgICAgICAgICA8c3Ryb25nPiREYXRheyJSZXN1bHQifTwvc3Ryb25nPiAkVGV4dHsib2YifSA8c3Ryb25nPiREYXRheyJUb3RhbEhpdHMifTwvc3Ryb25nPiAtICRUZXh0eyJQYWdlIn06ICREYXRheyJTaXRlTmF2QmFyIn0KICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UGFnaW5hdGlvbiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iU2VhcmNoVGVybXMiPgogICAgICAgICAgICA8aDI+JFRleHR7IlNlYXJjaCBSZXN1bHRzIGZvciJ9OjwvaDI+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaFRlcm1zIC0tPgogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICRRRGF0YXsiQXR0cmlidXRlIn06ICRRRGF0YXsiVmFsdWUifQojIGhpZGUgcmVtb3ZlIGxpbmssIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHlldCBpbXBsZW1lbnRlZAojICAgICAgICAgICAgICAgIDxhIHRpdGxlPSIkVGV4dHsiUmVtb3ZlIHRoaXMgU2VhcmNoIFRlcm0uIn0iIGhyZWY9IiREYXRheyJTZWFyY2hWYWx1ZSJ9Ij4mdGltZXM7PC9hPgogICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaFRlcm1zIC0tPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8dGFibGUgY2xhc3M9Ik92ZXJ2aWV3Ij4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRkFRTnVtYmVyICREYXRheyJGQVFJRFNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9RkFRSUQ7T3JkZXI9JExRRGF0YXsiT3JkZXIifTtQcm9maWxlPSRMUURhdGF7IlByb2ZpbGUifTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj0kTFFEYXRheyJGaWx0ZXIifTtMaW1pdD0kTFFEYXRheyJMaW1pdCJ9O1R5cGU9JExRRGF0YXsiVHlwZSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWd7IkZBUTo6RkFRSG9vayJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgJERhdGF7IlRpdGxlU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1UaXRsZTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9O1Byb2ZpbGU9JExRRGF0YXsiUHJvZmlsZSJ9O1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O0xpbWl0PSRMUURhdGF7IkxpbWl0In07VHlwZT0kTFFEYXRheyJUeXBlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlRpdGxlIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSAkRGF0YXsiQ2F0ZWdvcnlTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUNhdGVnb3J5O09yZGVyPSRMUURhdGF7Ik9yZGVyIn07UHJvZmlsZT0kTFFEYXRheyJQcm9maWxlIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2F0ZWdvcnkifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSAkRGF0YXsiTGFuZ3VhZ2VTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUxhbmd1YWdlO09yZGVyPSRMUURhdGF7Ik9yZGVyIn07UHJvZmlsZT0kTFFEYXRheyJQcm9maWxlIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiTGFuZ3VhZ2UifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDaGFuZ2VkICREYXRheyJDaGFuZ2VkU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1DaGFuZ2VkO09yZGVyPSRMUURhdGF7Ik9yZGVyIn07UHJvZmlsZT0kTFFEYXRheyJQcm9maWxlIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2hhbmdlZCJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgIDx0ciBpZD0iRW1wdHlNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPiRUZXh0eyJObyBGQVEgZGF0YSBmb3VuZC4ifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgIDx0ciB0aXRsZT0iJFFEYXRheyJUaWNrZXROdW1iZXIifSI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kRGF0YXsiRkFRSUQifSI+JERhdGF7Ik51bWJlciJ9PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJUaXRsZSI+JFFEYXRheyJUaXRsZSIsIjYwIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2F0ZWdvcnkiPiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIiwiNjAifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiPiRRRGF0YXsiTGFuZ3VhZ2UiLCI1In08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNoYW5nZWQiIHRpdGxlPSIkVGltZVNob3J0eyIkRGF0YXsiQ2hhbmdlZCJ9In0iPiRRRGF0YXsiQ2hhbmdlZCIsIjIwIn08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICA8L3Rib2R5PgogICAgICAgIDwvdGFibGU+CiAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6Qm90dG9tU3ViTmF2aWdhdGlvbiAtLT4KICAgIDxkaXYgaWQ9IkJvdHRvbUFjdGlvblJvdyIgY2xhc3M9IkFjdGlvblJvdyBCaWdCdXR0b25zIj4KICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTskTFFEYXRheyJMaW5rIn0iPgogICAgICAgICAgICAgICAgICAgICZsYXJyOyAkVGV4dHsiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIn0KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9IlRhYnMgUGFnaW5hdGlvbiI+CiAgICAgICAgICAgIDxzdHJvbmc+JERhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JERhdGF7IlRvdGFsSGl0cyJ9PC9zdHJvbmc+IC0gJFRleHR7IlBhZ2UifTogJERhdGF7IlNpdGVOYXZCYXIifQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpCb3R0b21TdWJOYXZpZ2F0aW9uIC0tPgo8L2Rpdj4KCjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBDb3JlLkN1c3RvbWVyLkNsaWNrYWJsZVJvdygpOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0Wm9vbSBBUklBUm9sZU1haW4iPgoKPCEtLSBkdGw6YmxvY2s6QmFjayAtLT4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn0kRW52eyJMYXN0U2NyZWVuT3ZlcnZpZXcifSI+JmxhcnI7ICRUZXh0eyJCYWNrIn08L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpCYWNrIC0tPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IkZBUUhlYWRlciI+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4KICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUiLCI0MCJ9CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iRkFRSG9vayI+JFFEYXRheyJOdW1iZXIifTwvc3Bhbj4KICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgPHVsIGlkPSJNZXRhZGF0YSI+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+JFRleHR7IkNhdGVnb3J5In06PC9zcGFuPiA8c3BhbiB0aXRsZT0iJFRleHR7IiREYXRheyJDYXRlZ29yeU5hbWUifSJ9Ij4kVGV4dHsiJERhdGF7IkNhdGVnb3J5TmFtZSJ9In08L3NwYW4+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiU3RhdGUifTo8L3NwYW4+IDxzcGFuIHRpdGxlPSIkVGV4dHsiJERhdGF7IlN0YXRlIn0ifSI+JFRleHR7IiREYXRheyJTdGF0ZSJ9In08L3NwYW4+PC9saT4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+JFRleHR7Ikxhbmd1YWdlIn06PC9zcGFuPiA8c3BhbiB0aXRsZT0iJFRleHR7IiREYXRheyJMYW5ndWFnZSJ9In0iPiRUZXh0eyIkRGF0YXsiTGFuZ3VhZ2UifSJ9PC9zcGFuPjwvbGk+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgoKPCEtLSBkdGw6YmxvY2s6Vmlld1JhdGluZyAtLT4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5IFJhdGluZ0xhYmVsIj4kVGV4dHsiUmF0aW5nIn06PC9zcGFuPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnMgLS0+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyIj5TdGFyPC9zcGFuPgo8IS0tIGR0bDpibG9jazpSYXRlU3RhcnMgLS0+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFyc0NvdW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhclRleHQiIHRpdGxlPSIkUURhdGF7IlN0YXJzIn0gJFRleHR7Im91dCBvZiA1In0iPgogICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IlN0YXJzIn0gJFRleHR7Im91dCBvZiA1In0KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFyc0NvdW50IC0tPgogICAgICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6Vmlld1JhdGluZyAtLT4KCjwhLS0gZHRsOmJsb2NrOlZpZXdWb3RlcyAtLT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiVm90ZXMifTo8L3NwYW4+IDxzcGFuIHRpdGxlPSIkUURhdGF7IlZvdGVzIn0iPiRRRGF0YXsiVm90ZXMifTwvc3Bhbj48L2xpPgo8IS0tIGR0bDpibG9jazpWaWV3Vm90ZXMgLS0+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUVByaW50O0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifSIgY2xhc3M9IlByaW50IEFzUG9wdXAiIHRpdGxlPSIkVGV4dHsiUHJpbnQifSI+JFRleHR7IlByaW50In08L2E+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJGQVFQYXRoQ2F0ZWdvcnkiPgogICAgICAgICAgICA8aDM+CjwhLS0gZHRsOmJsb2NrOkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQgLS0+CiAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifQogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4KICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifQogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iPgogICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDx1bCBpZD0iTWVzc2FnZXMiPgogICAgICAgICAgICA8bGkgY2xhc3M9IkN1c3RvbWVyIFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJEZXRhaWxzIn06PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkRldGFpbHMiPgogICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZBUUxhYmVsIj4kVGV4dHsiS2V5d29yZHMifTo8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOktleXdvcmRzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5d29yZCIgdGl0bGU9IiRUZXh0eyJTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCJ9OiAkUURhdGF7IktleXdvcmQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7S2V5d29yZD0kTFFEYXRheyJLZXl3b3JkIn0iPiRRRGF0YXsiS2V5d29yZCJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOktleXdvcmRzIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudEhlYWRlciAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBdHRhY2htZW50cyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZBUUxhYmVsIj4kVGV4dHsiQXR0YWNobWVudCJ9OjwvZGl2PgoKPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkRvd25sb2FkQXR0YWNobWVudCIgdGl0bGU9IiRUZXh0eyJEb3dubG9hZCBBdHRhY2htZW50In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD0kTFFEYXRheyJJdGVtSUQifTtGaWxlSUQ9JExRRGF0YXsiRmlsZUlEIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiRmlsZW5hbWUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAkUURhdGF7IkZpbGVzaXplIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgo8IS0tIGR0bDpibG9jazpBdHRhY2htZW50Um93IC0tPgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudEhlYWRlciAtLT4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KCjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iQ3VzdG9tZXIgVmlzaWJsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IiREYXRheyJDYXB0aW9uIn0ifTo8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXJ0aWNsZUZBUUNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ29udGVudCJ9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KCiAgICAgICAgPC91bD4KCjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZyAtLT4KICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkZBUVZvdGUiIGNsYXNzPSJQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iVm90aW5nQm94IFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJSYXRpbmcifTo8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBpZD0iTWVzc2VuZ2VyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iVm90aW5nUXVlc3Rpb24iPiRUZXh0eyIkQ29uZmlneyJGQVE6Okl0ZW06OlZvdGluZzo6UXVlc3Rpb25MYW5nS2V5In0ifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZUxhYmVsQmVmb3JlIj4kVGV4dHsibm90IGhlbHBmdWwifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZ1JhdGVSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUmF0ZUJ1dHRvbiREYXRheyJWYWx1ZSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlJhdGVCdXR0b24gJExRRGF0YXsiUmF0ZUNsYXNzIn0iIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9O1NlbGVjdGVkUmF0ZT0kTFFEYXRheyJWYWx1ZSJ9Ij4kUURhdGF7IlRpdGxlIn08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZ1JhdGVSb3cgLS0+CgogICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlTGFiZWxBZnRlciI+JFRleHR7InZlcnkgaGVscGZ1bCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkN1c3RvbWVyRkFRWm9vbSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlZvdGUiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iJFFEYXRheyJDYXRlZ29yeUlEIn0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJJdGVtSUQiIHZhbHVlPSIkUURhdGF7Ikl0ZW1JRCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KCjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZ1N1Ym1pdCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU3VibWl0In0iPiRUZXh0eyJTdWJtaXQifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSYXRlIiB2YWx1ZT0iJFFEYXRheyJTZWxlY3RlZFJhdGUifSJpZD0iUmF0ZVZhbHVlIi8+CjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZ1N1Ym1pdCAtLT4KCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgo8IS0tIGR0bDpibG9jazpGQVFWb3RpbmcgLS0+CgogICAgPC9kaXY+CjwvZGl2PgoKPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICQoJ2EuQXNQb3B1cCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAoJCh0aGlzKS5hdHRyKCdocmVmJyksICdUaWNrZXRBY3Rpb24nKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKPC9zY3JpcHQ+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iQVJJQVJvbGVNYWluIj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJGQVFIZWFkZXIiPgogICAgICAgICAgICA8aDIgdGl0bGU9IiRRRGF0YXsiVGl0bGUifSI+CiAgICAgICAgICAgICAgICAkUURhdGF7IlRpdGxlIiwiNDAifQogICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkZBUVBhdGhDYXRlZ29yeSI+CiAgICAgICAgICAgIDxoMz4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgICAgICRDb25maWd7IkZBUTo6RXhwbG9yZXI6OlBhdGg6OlNlcGFyYXRvciJ9CiAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4KICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgogICAgICAgICAgICA8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJMYXN0Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiBMYXJnZSI+Cgo8IS0tIGR0bDpibG9jazpRdWlja1NlYXJjaCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJTZWFyY2gifTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz0iU2VhcmNoQm94IiBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSIkUURhdGF7IkFjdGlvbiJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOYXYiIHZhbHVlPSIkUURhdGF7Ik5hdiJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJGdWxsdGV4dCIgdmFsdWU9IiRRRGF0YXsiU2VhcmNoIn0iIGlkPSJTZWFyY2giIHRpdGxlPSIkVGV4dHsiU2VhcmNoIn0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIHZhbHVlPSIkVGV4dHsiU2VhcmNoIn0iPiRUZXh0eyJRdWljayBTZWFyY2gifTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJXaWxkY2FyZHMgYXJlIGFsbG93ZWQuIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZBUVNlYXJjaEJ1dHRvbiBTcGFjaW5nVG9wIiBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRMUURhdGF7IkFjdGlvbiJ9OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiRUZXh0eyJBZHZhbmNlZCBTZWFyY2gifTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOlF1aWNrU2VhcmNoIC0tPgoKPCEtLSBkdGw6YmxvY2s6SW5mb0JveEZBUU1pbmlMaXN0IC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyIkRGF0YXsiSGVhZGVyIn0ifTwvaDM+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdE5ld3NSU1MgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRUlNTO1R5cGU9JFFEYXRheyJUeXBlIn0iIHRpdGxlPSIkVGV4dHsiJERhdGF7IlRpdGxlIn0ifSIgY2xhc3M9IlJTU0ljb24gQXNCbG9jayI+UlNTPC9hPgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3ROZXdzUlNTIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBGQVFNaW5pTGlzdCI+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CjwhLS0gZHRsOmJsb2NrOkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik51bWJlciJ9Lgo8IS0tIGR0bDpibG9jazpJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kUURhdGF7Ikl0ZW1JRCJ9IiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9ICgkUURhdGF7IkNhdGVnb3J5TmFtZSJ9KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUiLCI1MCJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkNhdGVnb3J5U2hvcnROYW1lIiwiMTUifSAkUURhdGF7Ikxhbmd1YWdlIn0gJFFEYXRheyJTdGF0ZSJ9ICRUaW1lU2hvcnR7IiREYXRheyJDcmVhdGVkIn0ifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+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+JERhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JERhdGF7IlRvdGFsSGl0cyJ9PC9zdHJvbmc+IC0gJFRleHR7IlBhZ2UifTogJERhdGF7IlNpdGVOYXZCYXIifQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6UGFnaW5hdGlvbiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJPdmVydmlldyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciAkRGF0YXsiRkFRSURTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtTb3J0Qnk9RkFRSUQ7T3JkZXI9JExRRGF0YXsiT3JkZXIifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZ3siRkFROjpGQVFIb29rIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaXRsZSAkRGF0YXsiVGl0bGVTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtTb3J0Qnk9VGl0bGU7T3JkZXI9JExRRGF0YXsiT3JkZXIifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlRpdGxlIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSAkRGF0YXsiQ2F0ZWdvcnlTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtTb3J0Qnk9Q2F0ZWdvcnk7T3JkZXI9JExRRGF0YXsiT3JkZXIifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IkNhdGVnb3J5In0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KPCEtLSBkdGw6YmxvY2s6SGVhZGVyTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iTGFuZ3VhZ2UgJERhdGF7Ikxhbmd1YWdlU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07Q2F0ZWdvcnlJRD0kTFFEYXRheyJDYXRlZ29yeUlEIn07U29ydEJ5PUxhbmd1YWdlO09yZGVyPSRMUURhdGF7Ik9yZGVyIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJMYW5ndWFnZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpOb0ZBUURhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPiRUZXh0eyJObyBGQVEgYXJ0aWNsZXMgZm91bmQuIn08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Tm9GQVFEYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRkFRTnVtYmVyIiB0aXRsZT0iJFFEYXRheyJOdW1iZXIifSI+PGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kRGF0YXsiRkFRSUQifTtab29tQmFja0xpbms9JFFEYXRheyJab29tQmFja0xpbmsifTsiPiREYXRheyJOdW1iZXIifTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIiB0aXRsZT0iJFFEYXRheyJUaXRsZSJ9Ij4kUURhdGF7IlRpdGxlIiwiNjAifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2F0ZWdvcnkiIHRpdGxlPSIkUURhdGF7IkNhdGVnb3J5TmFtZSJ9Ij4kUURhdGF7IkNhdGVnb3J5TmFtZSIsIjQ1In08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJMYW5ndWFnZSIgdGl0bGU9IiRRRGF0YXsiTGFuZ3VhZ2UifSI+JFFEYXRheyJMYW5ndWFnZSIsIjUifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4kRGF0YXsiUmVzdWx0In08L3N0cm9uZz4gJFRleHR7Im9mIn0gPHN0cm9uZz4kRGF0YXsiVG90YWxIaXRzIn08L3N0cm9uZz4gLSAkVGV4dHsiUGFnZSJ9OiAkRGF0YXsiU2l0ZU5hdkJhciJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRSXRlbUxpc3QgLS0+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBDb3JlLkN1c3RvbWVyLkNsaWNrYWJsZVJvdygpOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9Im1haW5oZWFkIj4kQ29uZmlneyJGQVE6OkZBUUhvb2sifTogJFFEYXRheyJOdW1iZXIifSAvICRRRGF0YXsiVGl0bGUifTwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjEwIiB3aWR0aD0iMTAwJSI+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4KICAgICAgICAgICAgJFRleHR7IkZBUS1JbmZvIn06CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNTAlIiB2YWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudGtleSI+JFRleHR7IkNhdGVnb3J5In06IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiQ2F0ZWdvcnlOYW1lIn08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiTGFuZ3VhZ2UifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJMYW5ndWFnZSJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI1MCUiIHZhbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+Cgo8IS0tIGR0bDpibG9jazpSYXRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiVm90ZXMifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJWb3RlcyJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiUmVzdWx0In06IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRRRGF0YXsiVm90ZVJlc3VsdCJ9ICYjMzc7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJhdGluZyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiTGFzdCB1cGRhdGUifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFRpbWVMb25neyIkRGF0YXsiQ2hhbmdlZCJ9In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiS2V5d29yZHMifTogPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkwJSIgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJLZXl3b3JkcyJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkPgogICAgICAgICAgICA8aHI+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CiAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50a2V5Ij4KICAgICAgICAgICAgJFRleHR7IiREYXRheyJDYXB0aW9uIn0ifTogIDxzcGFuIGNsYXNzPSJzbWFsbCI+KCRUZXh0eyIkRGF0YXsiU3RhdGVOYW1lIn0ifSkgPC9zcGFuPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMTAiIGNlbGxQYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiREYXRheyJDb250ZW50In08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDxocj4KICAgICAgICA8L3RkPgogICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6RkFRQ29udGVudCAtLT4KCjwvdGFibGU+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIGR0bDpibG9jazpTZWFyY2ggLS0+CjxkaXYgaWQ9Ik1haW5Cb3giIGNsYXNzPSJTZWFyY2ggQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8Zm9ybSBhY3Rpb249IiRFbnZ7IkNHSUhhbmRsZSJ9IiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSIkRW52eyJBY3Rpb24ifSIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPiRDb25maWd7IkZBUTo6RkFRSG9vayJ9PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIj4kQ29uZmlneyJGQVE6OkZBUUhvb2sifTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkQ29uZmlneyJGQVE6OkZBUUhvb2sifSIgdHlwZT0idGV4dCIgbmFtZT0iTnVtYmVyIiBpZD0iTnVtYmVyIiBzaXplPSIzMCIgdmFsdWU9IiRRRGF0YXsiTnVtYmVyIn0iLz4KICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiZS4gZy4gMTAqNTE1NSBvciAxMDU2NTgqIn08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSJ9PC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGl0bGUiPiRUZXh0eyJGdWxsdGV4dCJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IiRUZXh0eyJGdWxsdGV4dCJ9IiB0eXBlPSJ0ZXh0IiBpZD0iRnVsbFRleHQiIG5hbWU9IkZ1bGx0ZXh0IiB2YWx1ZT0iJFFEYXRheyJGdWxsdGV4dCJ9IiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaXRsZSI+JFRleHR7IlRpdGxlIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7IlRpdGxlIn0iIHR5cGU9InRleHQiIGlkPSJUaXRsZSIgbmFtZT0iVGl0bGUiIHZhbHVlPSIkUURhdGF7IlRpdGxlIn0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmQiPiRUZXh0eyJLZXl3b3JkIn08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iJFRleHR7IktleXdvcmQifSIgdHlwZT0idGV4dCIgaWQ9IktleXdvcmQiIG5hbWU9IktleXdvcmQiIHZhbHVlPSIkUURhdGF7IktleXdvcmQifSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiTGFuZ3VhZ2UifTo8L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiTGFuZ3VhZ2VzU3RyZyJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj4kVGV4dHsiQ2F0ZWdvcnkifTo8L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsiQ2F0ZWdvcmllc1N0cmcifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxkaXYgaWQ9IkJvdHRvbUFjdGlvblJvdyIgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTZWFyY2gifSI+JFRleHR7IlNlYXJjaCJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICA8c3Bhbj4kVGV4dHsiT3V0cHV0IHRvIn08L3NwYW4+CiAgICAgICAgICAgICAgICAkRGF0YXsiUmVzdWx0Rm9ybVN0cmcifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KPC9kaXY+CjwhLS0gZHRsOmpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBDb3JlLkN1c3RvbWVyLkluaXRGb2N1cygpOwo8L3NjcmlwdD4KPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjwhLS0gZHRsOmJsb2NrOlNlYXJjaCAtLT4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiUHVibGljIn0gKCRRdW90ZXsiJENvbmZpZ3siRkFROjpGQVFIb29rIn0ifSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPiRRdW90ZXsiJENvbmZpZ3siUHJvZHVjdE5hbWUifSJ9IC0gJFRleHR7IlB1YmxpYyJ9ICgkUXVvdGV7IiRDb25maWd7IkZBUTo6RkFRSG9vayJ9In0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+JEVudnsiVXNlckNoYXJzZXQifTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSIkQ29uZmlneyJIdHRwVHlwZSJ9Oi8vJEVudnsiSFRUUF9IT1NUIn0kRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0Z1bGx0ZXh0PXtzZWFyY2hUZXJtc30iIC8+CjxJbWFnZSBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIHR5cGU9ImltYWdlL3gtaWNvbiI+JENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JENvbmZpZ3siRnJvbnRlbmQ6OkltYWdlUGF0aCJ9aWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiUHVibGljIn0gKCRUZXh0eyJGQVFGdWxsdGV4dCJ9KTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+JFF1b3RleyIkQ29uZmlneyJQcm9kdWN0TmFtZSJ9In0gLSAkVGV4dHsiUHVibGljIn0gKCRUZXh0eyJGQVFGdWxsdGV4dCJ9KTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPiRFbnZ7IlVzZXJDaGFyc2V0In08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iJENvbmZpZ3siSHR0cFR5cGUifTovLyRFbnZ7IkhUVFBfSE9TVCJ9JEVudnsiQmFzZWxpbmsifUFjdGlvbj1QdWJsaWNGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtGdWxsdGV4dD17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPiRDb25maWd7Ikh0dHBUeXBlIn06Ly8kRW52eyJIVFRQX0hPU1QifSRDb25maWd7IkZyb250ZW5kOjpJbWFnZVBhdGgifWljb25zL3Byb2R1Y3QuaWNvPC9JbWFnZT4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8IS0tIHN0YXJ0IGZvcm0gLS0+CjxpPiREYXRheyJXYXJuaW5nIn08L2k+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0ibWFpbmhlYWQiPiRUZXh0eyJTZWFyY2gifTwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgo8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI0Ij4KICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnRib2R5Ij4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMyI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kQ29uZmlneyJGQVE6OkZBUUhvb2sifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiVGl0bGUifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzMCUiIGNsYXNzPSJjb250ZW50a2V5Ij4kVGV4dHsiQ2F0ZWdvcnkifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAlIiBjbGFzcz0iY29udGVudGtleSI+JFRleHR7Ikxhbmd1YWdlIn08L3RkPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgY2xhc3M9ImNvbnRlbnRrZXkiPiRUZXh0eyJDaGFuZ2VkIn08L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkIC0tPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7Ik51bWJlciJ9PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJUaXRsZSIsIjQwIn08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVudHZhbHVlIj4kUURhdGF7IkNhdGVnb3J5TmFtZSIsIjMwIn08L3RkPgo8IS0tIGR0bDpibG9jazpSZWNvcmRMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbnR2YWx1ZSI+JFFEYXRheyJMYW5ndWFnZSJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW50dmFsdWUiPiRUaW1lTG9uZ3siJERhdGF7IkNoYW5nZWQifSJ9PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgPC90cj4KPC90YWJsZT4KPCEtLSBlbmQgZm9ybSAtLT4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0VmlldyBBUklBUm9sZU1haW4gU2VhcmNoUmVzdWx0cyAkQ29uZmlneyJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE92ZXJ2aWV3U29ydGFibGUifSBTb3J0YWJsZSI+CiAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07JFFEYXRheyJMaW5rIn0iPgogICAgICAgICAgICAgICAgICAgICZsYXJyOyAkVGV4dHsiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIn0KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgo8IS0tIGR0bDpibG9jazpQYWdpbmF0aW9uIC0tPgogICAgICAgIDxkaXYgY2xhc3M9IlRhYnMgUGFnaW5hdGlvbiI+CiAgICAgICAgICAgIDxzdHJvbmc+JERhdGF7IlJlc3VsdCJ9PC9zdHJvbmc+ICRUZXh0eyJvZiJ9IDxzdHJvbmc+JERhdGF7IlRvdGFsSGl0cyJ9PC9zdHJvbmc+IC0gJFRleHR7IlBhZ2UifTogJERhdGF7IlNpdGVOYXZCYXIifQogICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpQYWdpbmF0aW9uIC0tPgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJTZWFyY2hUZXJtcyI+CiAgICAgICAgICAgIDxoMj4kVGV4dHsiU2VhcmNoIFJlc3VsdHMgZm9yIn06PC9oMj4KPCEtLSBkdGw6YmxvY2s6U2VhcmNoVGVybXMgLS0+CiAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgJFFEYXRheyJBdHRyaWJ1dGUifTogJFFEYXRheyJWYWx1ZSJ9CiMgaGlkZSByZW1vdmUgbGluaywgZnVuY3Rpb25hbGl0eSBpcyBub3QgeWV0IGltcGxlbWVudGVkCiMgICAgICAgICAgICAgICAgPGEgdGl0bGU9IiRUZXh0eyJSZW1vdmUgdGhpcyBTZWFyY2ggVGVybS4ifSIgaHJlZj0iJERhdGF7IlNlYXJjaFZhbHVlIn0iPiZ0aW1lczs8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KPCEtLSBkdGw6YmxvY2s6U2VhcmNoVGVybXMgLS0+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciPgogICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgJERhdGF7IkZBUUlEU29ydCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rpb249U2VhcmNoOyRRRGF0YXsiUHJvZmlsZSJ9U29ydEJ5PUZBUUlEO09yZGVyPSRMUURhdGF7Ik9yZGVyIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkZBUUhvb2sifQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlICREYXRheyJUaXRsZVNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPVNlYXJjaDskUURhdGF7IlByb2ZpbGUifVNvcnRCeT1UaXRsZTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9O1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O0xpbWl0PSRMUURhdGF7IkxpbWl0In07VHlwZT0kTFFEYXRheyJUeXBlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlRpdGxlIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSAkRGF0YXsiQ2F0ZWdvcnlTb3J0In0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7IkFjdGlvbiJ9O1N1YmFjdGlvbj1TZWFyY2g7JFFEYXRheyJQcm9maWxlIn1Tb3J0Qnk9Q2F0ZWdvcnk7T3JkZXI9JExRRGF0YXsiT3JkZXIifTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj0kTFFEYXRheyJGaWx0ZXIifTtMaW1pdD0kTFFEYXRheyJMaW1pdCJ9O1R5cGU9JExRRGF0YXsiVHlwZSJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJDYXRlZ29yeSJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgo8IS0tIGR0bDpibG9jazpIZWFkZXJMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlICREYXRheyJMYW5ndWFnZVNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPVNlYXJjaDskUURhdGF7IlByb2ZpbGUifVNvcnRCeT1MYW5ndWFnZTtPcmRlcj0kTFFEYXRheyJPcmRlciJ9O1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPSRMUURhdGF7IkZpbHRlciJ9O0xpbWl0PSRMUURhdGF7IkxpbWl0In07VHlwZT0kTFFEYXRheyJUeXBlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Ikxhbmd1YWdlIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckxhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCAkRGF0YXsiQ2hhbmdlZFNvcnQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPVNlYXJjaDskUURhdGF7IlByb2ZpbGUifVNvcnRCeT1DaGFuZ2VkO09yZGVyPSRMUURhdGF7Ik9yZGVyIn07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9JExRRGF0YXsiRmlsdGVyIn07TGltaXQ9JExRRGF0YXsiTGltaXQifTtUeXBlPSRMUURhdGF7IlR5cGUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiQ2hhbmdlZCJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5Pgo8IS0tIGR0bDpibG9jazpOb0RhdGFGb3VuZE1zZyAtLT4KICAgICAgICAgICAgICAgIDx0ciBpZD0iRW1wdHlNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPiRUZXh0eyJObyBGQVEgZGF0YSBmb3VuZC4ifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KPCEtLSBkdGw6YmxvY2s6Tm9EYXRhRm91bmRNc2cgLS0+CjwhLS0gZHRsOmJsb2NrOlJlY29yZCAtLT4KICAgICAgICAgICAgICAgIDx0ciB0aXRsZT0iJFFEYXRheyJUaWNrZXROdW1iZXIifSI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9JERhdGF7IkZBUUlEIn07Wm9vbUJhY2tMaW5rPSRRRGF0YXsiWm9vbUJhY2tMaW5rIn07Ij4kRGF0YXsiTnVtYmVyIn08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIj4kUURhdGF7IlRpdGxlIiwiNjAifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDYXRlZ29yeSI+JFFEYXRheyJDYXRlZ29yeU5hbWUiLCI2MCJ9PC90ZD4KPCEtLSBkdGw6YmxvY2s6UmVjb3JkTGFuZ3VhZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJMYW5ndWFnZSI+JFFEYXRheyJMYW5ndWFnZSIsIjUifTwvdGQ+CjwhLS0gZHRsOmJsb2NrOlJlY29yZExhbmd1YWdlIC0tPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2hhbmdlZCIgdGl0bGU9IiRUaW1lU2hvcnR7IiREYXRheyJDaGFuZ2VkIn0ifSI+JFFEYXRheyJDaGFuZ2VkIiwiMjAifTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpSZWNvcmQgLS0+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgPC90YWJsZT4KICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpCb3R0b21TdWJOYXZpZ2F0aW9uIC0tPgogICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93IEJpZ0J1dHRvbnMiPgogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPUxvYWRQcm9maWxlOyRMUURhdGF7IkxpbmsifSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7ICRUZXh0eyJDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMifQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz4kRGF0YXsiUmVzdWx0In08L3N0cm9uZz4gJFRleHR7Im9mIn0gPHN0cm9uZz4kRGF0YXsiVG90YWxIaXRzIn08L3N0cm9uZz4gLSAkVGV4dHsiUGFnZSJ9OiAkRGF0YXsiU2l0ZU5hdkJhciJ9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkJvdHRvbVN1Yk5hdmlnYXRpb24gLS0+CjwvZGl2PgoKPCEtLSBkdGw6anNfb25fZG9jdW1lbnRfY29tcGxldGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgIENvcmUuQ3VzdG9tZXIuQ2xpY2thYmxlUm93KCk7Cjwvc2NyaXB0Pgo8IS0tIGR0bDpqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0Wm9vbSBBUklBUm9sZU1haW4iPgoKPCEtLSBkdGw6YmxvY2s6QmFjayAtLT4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn07JFFEYXRheyJab29tQmFja0xpbmsifSIgY2xhc3M9Ikhpc3RvcnlCYWNrIj4mbGFycjsgJFRleHR7IkJhY2sifTwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkJhY2sgLS0+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iRkFRSGVhZGVyIj4KICAgICAgICAgICAgPGgyIHRpdGxlPSIkUURhdGF7IlRpdGxlIn0iPgogICAgICAgICAgICAgICAgJFFEYXRheyJUaXRsZSIsIjQwIn0KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJGQVFIb29rIj4kUURhdGF7Ik51bWJlciJ9PC9zcGFuPgogICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8dWwgaWQ9Ik1ldGFkYXRhIj4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiQ2F0ZWdvcnkifTo8L3NwYW4+IDxzcGFuIHRpdGxlPSIkVGV4dHsiJERhdGF7IkNhdGVnb3J5TmFtZSJ9In0iPiRUZXh0eyIkRGF0YXsiQ2F0ZWdvcnlOYW1lIn0ifTwvc3Bhbj48L2xpPgo8IS0tIGR0bDpibG9jazpMYW5ndWFnZSAtLT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij4kVGV4dHsiTGFuZ3VhZ2UifTo8L3NwYW4+IDxzcGFuIHRpdGxlPSIkVGV4dHsiJERhdGF7Ikxhbmd1YWdlIn0ifSI+JFRleHR7IiREYXRheyJMYW5ndWFnZSJ9In08L3NwYW4+PC9saT4KPCEtLSBkdGw6YmxvY2s6TGFuZ3VhZ2UgLS0+Cgo8IS0tIGR0bDpibG9jazpWaWV3UmF0aW5nIC0tPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkgUmF0aW5nTGFiZWwiPiRUZXh0eyJSYXRpbmcifTo8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFycyAtLT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPlN0YXI8L3NwYW4+CjwhLS0gZHRsOmJsb2NrOlJhdGVTdGFycyAtLT4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzQ291bnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyVGV4dCIgdGl0bGU9IiRRRGF0YXsiU3RhcnMifSAkVGV4dHsib3V0IG9mIDUifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICRRRGF0YXsiU3RhcnMifSAkVGV4dHsib3V0IG9mIDUifQogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KPCEtLSBkdGw6YmxvY2s6UmF0ZVN0YXJzQ291bnQgLS0+CiAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpWaWV3UmF0aW5nIC0tPgoKPCEtLSBkdGw6YmxvY2s6Vmlld1ZvdGVzIC0tPgogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPiRUZXh0eyJWb3RlcyJ9Ojwvc3Bhbj4gPHNwYW4gdGl0bGU9IiRUZXh0eyIkRGF0YXsiVm90ZXMifSJ9Ij4kUURhdGF7IlZvdGVzIn08L3NwYW4+PC9saT4KPCEtLSBkdGw6YmxvY2s6Vmlld1ZvdGVzIC0tPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249UHVibGljRkFRUHJpbnQ7SXRlbUlEPSRMUURhdGF7Ikl0ZW1JRCJ9IiBjbGFzcz0iUHJpbnQgQXNQb3B1cCIgdGl0bGU9IiRUZXh0eyJQcmludCJ9Ij4kVGV4dHsiUHJpbnQifTwvYT48L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkZBUVBhdGhDYXRlZ29yeSI+CiAgICAgICAgICAgIDxoMz4KPCEtLSBkdGw6YmxvY2s6RkFRUGF0aENhdGVnb3J5RWxlbWVudCAtLT4KICAgICAgICAgICAgICAgICRDb25maWd7IkZBUTo6RXhwbG9yZXI6OlBhdGg6OlNlcGFyYXRvciJ9CiAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JExRRGF0YXsiQ2F0ZWdvcnlJRCJ9Ij4KICAgICAgICAgICAgICAgICAgICAkUURhdGF7Ik5hbWUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IC0tPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgICAgICAkQ29uZmlneyJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTZXBhcmF0b3IifQogICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtDYXRlZ29yeUlEPSRMUURhdGF7IkNhdGVnb3J5SUQifTtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn0iPgogICAgICAgICAgICAgICAgICAgICRRRGF0YXsiVGl0bGUifQogICAgICAgICAgICAgICAgPC9hPgo8IS0tIGR0bDpibG9jazpGQVFQYXRoSXRlbUVsZW1lbnQgLS0+CiAgICAgICAgICAgIDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDx1bCBpZD0iTWVzc2FnZXMiPgogICAgICAgICAgICA8bGkgY2xhc3M9IkN1c3RvbWVyIFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJEZXRhaWxzIn06PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkRldGFpbHMiPgogICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZBUUxhYmVsIj4kVGV4dHsiS2V5d29yZHMifTo8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOktleXdvcmRzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5d29yZCIgdGl0bGU9IiRUZXh0eyJTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCJ9OiAkUURhdGF7IktleXdvcmQifSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0tleXdvcmQ9JExRRGF0YXsiS2V5d29yZCJ9Ij4kUURhdGF7IktleXdvcmQifTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgo8IS0tIGR0bDpibG9jazpLZXl3b3JkcyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRIZWFkZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXR0YWNobWVudHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFMYWJlbCI+JFRleHR7IkF0dGFjaG1lbnQifTo8L2Rpdj4KCjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRSb3cgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJEb3dubG9hZEF0dGFjaG1lbnQiIHRpdGxlPSIkVGV4dHsiRG93bmxvYWQgQXR0YWNobWVudCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn07RmlsZUlEPSRMUURhdGF7IkZpbGVJRCJ9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUURhdGF7IkZpbGVuYW1lIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJFFEYXRheyJGaWxlc2l6ZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KPCEtLSBkdGw6YmxvY2s6QXR0YWNobWVudFJvdyAtLT4KCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOkF0dGFjaG1lbnRIZWFkZXIgLS0+CgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+Cgo8IS0tIGR0bDpibG9jazpGQVFDb250ZW50IC0tPgogICAgICAgICAgICA8bGkgY2xhc3M9IkN1c3RvbWVyIFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyIkRGF0YXsiQ2FwdGlvbiJ9In06PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkNvbnRlbnQifQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+CjwhLS0gZHRsOmJsb2NrOkZBUUNvbnRlbnQgLS0+CgogICAgICAgIDwvdWw+Cgo8IS0tIGR0bDpibG9jazpGQVFWb3RpbmcgLS0+CiAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJGQVFWb3RlIiBjbGFzcz0iUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgIDxkaXYgaWQ9IkZvbGxvd1VwIiBjbGFzcz0iVmlzaWJsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+JFRleHR7IlJhdGluZyJ9OjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJNZXNzZW5nZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJWb3RpbmdRdWVzdGlvbiI+JFRleHR7IiRDb25maWd7IkZBUTo6SXRlbTo6Vm90aW5nOjpRdWVzdGlvbkxhbmdLZXkifSJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlTGFiZWxCZWZvcmUiPiRUZXh0eyJub3QgaGVscGZ1bCJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nUmF0ZVJvdyAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJSYXRlQnV0dG9uJERhdGF7IlZhbHVlIn0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iUmF0ZUJ1dHRvbiAkTFFEYXRheyJSYXRlQ2xhc3MifSIgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtJdGVtSUQ9JExRRGF0YXsiSXRlbUlEIn07U2VsZWN0ZWRSYXRlPSRMUURhdGF7IlZhbHVlIn0iPiRRRGF0YXsiVGl0bGUifTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nUmF0ZVJvdyAtLT4KCiAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVMYWJlbEFmdGVyIj4kVGV4dHsidmVyeSBoZWxwZnVsIn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQ3VzdG9tZXJGQVFab29tIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVm90ZSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNhdGVnb3J5SUQiIHZhbHVlPSIkUURhdGF7IkNhdGVnb3J5SUQifSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikl0ZW1JRCIgdmFsdWU9IiRRRGF0YXsiSXRlbUlEIn0iLz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgoKPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nU3VibWl0IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTdWJtaXQifSI+JFRleHR7IlN1Ym1pdCJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJhdGUiIHZhbHVlPSIkUURhdGF7IlNlbGVjdGVkUmF0ZSJ9ImlkPSJSYXRlVmFsdWUiLz4KPCEtLSBkdGw6YmxvY2s6RkFRVm90aW5nU3VibWl0IC0tPgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CjwhLS0gZHRsOmJsb2NrOkZBUVZvdGluZyAtLT4KCiAgICA8L2Rpdj4KPC9kaXY+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0IHF3KCk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6Q2FjaGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VXNlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpHcm91cDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpDdXN0b21lckdyb3VwOwp1c2UgS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VGlja2V0Owp1c2UgS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGU7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUSAtIGZhcSBsaWIKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGZhcSBmdW5jdGlvbnMuIEUuIGcuIHRvIGFkZCBmYXFzIG9yIHRvIGdldCBmYXFzLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYSBmYXEgb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6Q29uZmlnOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpFbmNvZGU7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkxvZzsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6TWFpbjsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6REI7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OlRpbWU7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gS2VybmVsOjpDb25maWctPm5ldygpOwogICAgbXkgJEVuY29kZU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpFbmNvZGUtPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICk7CiAgICBteSAkTG9nT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkxvZy0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIEVuY29kZU9iamVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgKTsKICAgIG15ICRNYWluT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06Ok1haW4tPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBFbmNvZGVPYmplY3QgPT4gJEVuY29kZU9iamVjdCwKICAgICAgICBMb2dPYmplY3QgICAgPT4gJExvZ09iamVjdCwKICAgICk7CiAgICBteSAkVGltZU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpUaW1lLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICApOwogICAgbXkgJERCT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkRCLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgRW5jb2RlT2JqZWN0ID0+ICRFbmNvZGVPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgID0+ICRNYWluT2JqZWN0LAogICAgKTsKICAgIG15ICRGQVFPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgRW5jb2RlT2JqZWN0ID0+ICRFbmNvZGVPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAgICAgREJPYmplY3QgICAgID0+ICREQk9iamVjdCwKICAgICAgICBUaW1lT2JqZWN0ICAgPT4gJFRpbWVPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgID0+ICRNYWluT2JqZWN0LAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KERCT2JqZWN0IENvbmZpZ09iamVjdCBMb2dPYmplY3QgRW5jb2RlT2JqZWN0IE1haW5PYmplY3QgVGltZU9iamVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRPYmplY3R9ID0gJFBhcmFteyRPYmplY3R9IHx8IGRpZSAiR290IG5vICRPYmplY3QhIjsKICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57R3JvdXBPYmplY3R9ICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6R3JvdXAtPm5ldyggJXskU2VsZn0gKTsKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9ICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6Q2FjaGUtPm5ldyggJXskU2VsZn0gKTsKICAgICRTZWxmLT57Q3VzdG9tZXJHcm91cE9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cC0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntVc2VyT2JqZWN0fSAgICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpVc2VyLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0gICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlRpY2tldC0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntMaW5rT2JqZWN0fSAgICAgICAgICA9IEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0LT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e1VwbG9hZENhY2hlT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUtPm5ldyggJXskU2VsZn0gKTsKCiAgICAjIGdldCBsaWtlIGVzY2FwZSBzdHJpbmcgbmVlZGVkIGZvciBzb21lIGRhdGFiYXNlcyAoZS5nLiBvcmFjbGUpCiAgICAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9ID0gJFNlbGYtPntEQk9iamVjdH0tPkdldERhdGFiYXNlRnVuY3Rpb24oJ0xpa2VFc2NhcGVTdHJpbmcnKTsKCiAgICAjIGdldCBkZWZhdWx0IG9wdGlvbnMKICAgICRTZWxmLT57Vm90aW5nfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gRkFRR2V0KCkKCmdldCBhbiBmYXEKCiAgICBteSAlRkFRID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlRkFRID0gKAogICAgICAgIElEICAgICAgICAgICAgICAgID0+IDMyLAogICAgICAgIEl0ZW1JRCAgICAgICAgICAgID0+IDMyLAogICAgICAgIEZBUUlEICAgICAgICAgICAgID0+IDMyLAogICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICBDYXRlZ29yeUlEICAgICAgICA9PiAnMicsCiAgICAgICAgQ2F0ZWdvcnlOYW1lJyAgICAgPT4gJ0NhdGVnb3J5QTo6Q2F0ZWdvcnlCJywKICAgICAgICBDYXRlZ29yeVNob3J0TmFtZSA9PiAnQ2F0ZWdvcnlCJywKICAgICAgICBMYW5ndWFnZUlEICAgICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlICAgICAgICAgID0+ICdlbicsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgPT4gJ0FydGljbGUgVGl0bGUnLAogICAgICAgIEZpZWxkMSAgICAgICAgICAgID0+ICdUaGUgU3ltcHRvbXMnLAogICAgICAgIEZpZWxkMiAgICAgICAgICAgID0+ICdUaGUgUHJvYmxlbScsCiAgICAgICAgRmllbGQzICAgICAgICAgICAgPT4gJ1RoZSBTb2x1dGlvbicsCiAgICAgICAgRmllbGQ0ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgIEZpZWxkNSAgICAgICAgICAgID0+IHVuZGVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgYWN0aXZlIGJ5IGRlZmF1bHQKICAgICAgICBGaWVsZDYgICAgICAgICAgICA9PiAnQ29tbWVudHMnLAogICAgICAgIEFwcHJvdmVkICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwCiAgICAgICAgS2V5d29yZHMgICAgICAgICAgPT4gJ0tleVdvcmQxIEtleVdvcmQyJywKICAgICAgICBWb3RlcyAgICAgICAgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIHZvdGVzCiAgICAgICAgVm90ZVJlc3VsdCAgICAgICAgPT4gJzAuMDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIGJldHdlZW4gMC4wMCBhbmQgMTAwLjAwCiAgICAgICAgU3RhdGVJRCAgICAgICAgICAgPT4gMSwKICAgICAgICBTdGF0ZSAgICAgICAgICAgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsIChjdXN0b21lciknIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwdWJsaWMgKGFsbCknCiAgICAgICAgU3RhdGVUeXBlSUQgICAgICAgPT4gMSwKICAgICAgICBTdGF0ZVR5cGVOYW1lICAgICA9PiAnaW50ZXJuYWwnLCAgICAgICAgICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsJyBvciAncHVibGljJwogICAgICAgIENyZWF0ZWRCeSAgICAgICAgID0+IDEsCiAgICAgICAgQ2hhbmdlZCcgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgIENoYW5nZWRCeSAgICAgICAgID0+ICcxJywKICAgICAgICBDcmVhdGVkICAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJzEyOTQyODYwMzAtMzEuMTY5NzI5NzEwNDczMicsICAjIEZBUSBBcnRpY2xlIG5hbWUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3lzdGVtdGltZSArICctJyArIHJhbmRvbSBudW1iZXIKICAgICk7Cgo9Y3V0CgpzdWIgRkFRR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBGYWlsdXJlcyByZW5hbWUgZnJvbSBJdGVtSUQgdG8gRkFRSUQKICAgIGlmICggJFBhcmFte0ZBUUlEfSApIHsKICAgICAgICAkUGFyYW17SXRlbUlEfSA9ICRQYXJhbXtGQVFJRH07CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFVzZXJJRCBJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHZvdGUgZGF0YSBmb3IgdGhpcyBGQVEgaXRlbQogICAgbXkgJFZvdGVEYXRhOwogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgJFZvdGVEYXRhID0gJFNlbGYtPkl0ZW1Wb3RlRGF0YUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgZnJvbSBjb25maWcKICAgIG15ICREZWNpbWFsUGxhY2VzID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHREZWNpbWFsUGxhY2VzJykgfHwgMDsKCiAgICAjIGZvcm1hdCB0aGUgdm90ZSByZXN1bHQKICAgIG15ICRWb3RlUmVzdWx0ID0gc3ByaW50ZiggIiUwLiIgLiAkRGVjaW1hbFBsYWNlcyAuICJmIiwgJFZvdGVEYXRhLT57UmVzdWx0fSB8fCAwICk7CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpLmZfbmFtZSwgaS5mX2xhbmd1YWdlX2lkLCBpLmZfc3ViamVjdCwgJwogICAgICAgICAgICAuICdpLmZfZmllbGQxLCBpLmZfZmllbGQyLCBpLmZfZmllbGQzLCAnCiAgICAgICAgICAgIC4gJ2kuZl9maWVsZDQsIGkuZl9maWVsZDUsIGkuZl9maWVsZDYsICcKICAgICAgICAgICAgLiAnaS5jcmVhdGVkLCBpLmNyZWF0ZWRfYnksIGkuY2hhbmdlZCwgaS5jaGFuZ2VkX2J5LCAnCiAgICAgICAgICAgIC4gJ2kuY2F0ZWdvcnlfaWQsIGkuc3RhdGVfaWQsIGMubmFtZSwgcy5uYW1lLCBsLm5hbWUsIGkuZl9rZXl3b3JkcywgaS5hcHByb3ZlZCwgJwogICAgICAgICAgICAuICdpLmZfbnVtYmVyLCBzdC5pZCwgc3QubmFtZSAnCiAgICAgICAgICAgIC4gJ0ZST00gZmFxX2l0ZW0gaSwgZmFxX2NhdGVnb3J5IGMsIGZhcV9zdGF0ZSBzLCBmYXFfc3RhdGVfdHlwZSBzdCwgZmFxX2xhbmd1YWdlIGwgJwogICAgICAgICAgICAuICdXSEVSRSBpLnN0YXRlX2lkID0gcy5pZCAnCiAgICAgICAgICAgIC4gJ0FORCBzLnR5cGVfaWQgPSBzdC5pZCAnCiAgICAgICAgICAgIC4gJ0FORCBpLmNhdGVnb3J5X2lkID0gYy5pZCAnCiAgICAgICAgICAgIC4gJ0FORCBpLmZfbGFuZ3VhZ2VfaWQgPSBsLmlkICcKICAgICAgICAgICAgLiAnQU5EIGkuaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgJURhdGEgPSAoCgogICAgICAgICAgICAjIHZhciBmb3Igb2xkIHZlcnNpb25zCiAgICAgICAgICAgIElEICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGQVFJRCA9PiAkUGFyYW17SXRlbUlEfSwKCiAgICAgICAgICAgICMgZ2V0IGRhdGEgYXR0cmlidXRlcwogICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIExhbmd1YWdlSUQgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgVGl0bGUgICAgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICBGaWVsZDEgICAgICAgID0+ICRSb3dbM10sCiAgICAgICAgICAgIEZpZWxkMiAgICAgICAgPT4gJFJvd1s0XSwKICAgICAgICAgICAgRmllbGQzICAgICAgICA9PiAkUm93WzVdLAogICAgICAgICAgICBGaWVsZDQgICAgICAgID0+ICRSb3dbNl0sCiAgICAgICAgICAgIEZpZWxkNSAgICAgICAgPT4gJFJvd1s3XSwKICAgICAgICAgICAgRmllbGQ2ICAgICAgICA9PiAkUm93WzhdLAogICAgICAgICAgICBDcmVhdGVkICAgICAgID0+ICRSb3dbOV0sCiAgICAgICAgICAgIENyZWF0ZWRCeSAgICAgPT4gJFJvd1sxMF0sCiAgICAgICAgICAgIENoYW5nZWQgICAgICAgPT4gJFJvd1sxMV0sCiAgICAgICAgICAgIENoYW5nZWRCeSAgICAgPT4gJFJvd1sxMl0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgICAgPT4gJFJvd1sxM10sCiAgICAgICAgICAgIFN0YXRlSUQgICAgICAgPT4gJFJvd1sxNF0sCiAgICAgICAgICAgIENhdGVnb3J5TmFtZSAgPT4gJFJvd1sxNV0sCiAgICAgICAgICAgIFN0YXRlICAgICAgICAgPT4gJFJvd1sxNl0sCiAgICAgICAgICAgIExhbmd1YWdlICAgICAgPT4gJFJvd1sxN10sCiAgICAgICAgICAgIEtleXdvcmRzICAgICAgPT4gJFJvd1sxOF0sCiAgICAgICAgICAgIEFwcHJvdmVkICAgICAgPT4gJFJvd1sxOV0sCiAgICAgICAgICAgIE51bWJlciAgICAgICAgPT4gJFJvd1syMF0sCiAgICAgICAgICAgIFN0YXRlVHlwZUlEICAgPT4gJFJvd1syMV0sCiAgICAgICAgICAgIFN0YXRlVHlwZU5hbWUgPT4gJFJvd1syMl0sCiAgICAgICAgICAgIFZvdGVSZXN1bHQgICAgPT4gJFZvdGVSZXN1bHQsCiAgICAgICAgICAgIFZvdGVzICAgICAgICAgPT4gJFZvdGVEYXRhLT57Vm90ZXN9IHx8IDAsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGVycm9yCiAgICBpZiAoICElRGF0YSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggSXRlbUlEICRQYXJhbXtJdGVtSUR9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyB1cGRhdGUgbnVtYmVyCiAgICBpZiAoICEkRGF0YXtOdW1iZXJ9ICkgewogICAgICAgIG15ICROdW1iZXIgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnU3lzdGVtSUQnKSAuICcwMCcgLiAkRGF0YXtJdGVtSUR9OwogICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgICAgICBTUUwgID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUIGZfbnVtYmVyID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCROdW1iZXIsIFwkRGF0YXtJdGVtSUR9IF0sCiAgICAgICAgKTsKICAgICAgICAkRGF0YXtOdW1iZXJ9ID0gJE51bWJlcjsKICAgIH0KCiAgICAjIGdldCBhbGwgY2F0ZWdvcnkgbG9uZyBuYW1lcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBzYXZlIHRoZSBjYXRlZ29yeSBzaG9ydCBuYW1lCiAgICAkRGF0YXtDYXRlZ29yeVNob3J0TmFtZX0gPSAkRGF0YXtDYXRlZ29yeU5hbWV9OwoKICAgICMgZ2V0IHRoZSBjYXRlZ29yeSBsb25nIG5hbWUKICAgICREYXRhe0NhdGVnb3J5TmFtZX0gPSAkQ2F0ZWdvcnlUcmVlLT57ICREYXRhe0NhdGVnb3J5SUR9IH07CgogICAgcmV0dXJuICVEYXRhOwp9Cgo9aXRlbSBJdGVtVm90ZURhdGFHZXQoKQoKUmV0dXJucyBhIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlIG51bWJlciBvZiB2b3RlcyBhbmQgdGhlIHZvdGUgcmVzdWx0LgoKICAgIG15ICRWb3RlRGF0YUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5JdGVtVm90ZURhdGFHZXQoCiAgICAgICAgSXRlbUlEID0+IDEyMywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRWb3RlRGF0YUhhc2hSZWYgPSB7CiAgICAgICAgUmVzdWx0ID0+IDc1LjAwMDAsCiAgICAgICAgVm90ZXMgID0+IDUKICAgIH07Cgo9Y3V0CgpzdWIgSXRlbVZvdGVEYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdJdGVtVm90ZURhdGFHZXQ6OicgLiAkUGFyYW17SXRlbUlEfTsKICAgIG15ICRDYWNoZSAgICA9ICRTZWxmLT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJENhY2hlIGlmICRDYWNoZTsKCiAgICAjIGdldCB2b3RlIGZyb20gZGIKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBjb3VudCgqKSwgYXZnKHJhdGUpIEZST00gZmFxX3ZvdGluZyBXSEVSRSBpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9IHx8IDUwMCwKICAgICk7CiAgICBteSAlRGF0YTsKICAgIGlmICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJERhdGF7Vm90ZXN9ICA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7UmVzdWx0fSA9ICRSb3dbMV07CiAgICB9CgogICAgIyBjYWNoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAyLAogICAgKTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aXRlbSBGQVFBZGQoKQoKYWRkIGFuIGFydGljbGUKCiAgICBteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgIFRpdGxlICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgTnVtYmVyICAgICA9PiAnMTM0MDInLCAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzJywgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkMSAgICAgPT4gJ1N5bXB0b20uLi4nLCAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQyICAgICA9PiAnUHJvYmxlbS4uLicsICAgICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDMgICAgID0+ICdTb2x1dGlvbi4uLicsICAgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkNCAgICAgPT4gJ0ZpZWxkNC4uLicsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQ1ICAgICA9PiAnRmllbGQ1Li4uJywgICAgICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDYgICAgID0+ICdDb21tZW50Li4uJywgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEFwcHJvdmVkICAgPT4gMSwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEl0ZW1JRCA9IDM0OwoKPWN1dAoKc3ViIEZBUUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeUlEIFN0YXRlSUQgTGFuZ3VhZ2VJRCBUaXRsZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmFtZQogICAgaWYgKCAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRQYXJhbXtOYW1lfSA9IHRpbWUoKSAuICctJyAuIHJhbmQoMTAwKTsKICAgIH0KCiAgICAjIGNoZWNrIG51bWJlcgogICAgaWYgKCAhJFBhcmFte051bWJlcn0gKSB7CiAgICAgICAgJFBhcmFte051bWJlcn0gPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnU3lzdGVtSUQnKSAuIHJhbmQoMTAwKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGFwcHJvdmFsIGZlYXR1cmUgaXMgdXNlZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgbXkgJEFwcHJvdmFsR3JvdXAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbEdyb3VwJyk7CgogICAgICAgICMgc2V0IGRlZmF1bHQgdG8gMCBpZiBhcHByb3ZlZCBwYXJhbSBpcyBub3QgZ2l2ZW4KICAgICAgICAjIG9yIGlmIHVzZXIgZG9lcyBub3QgaGF2ZSB0aGUgcmlnaHRzIHRvIGFwcHJvdmUKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtBcHByb3ZlZH0gfHwgISRHcm91cHN7JEFwcHJvdmFsR3JvdXB9ICkgewogICAgICAgICAgICAkUGFyYW17QXBwcm92ZWR9ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBhcHByb3ZhbCBmZWF0dXJlIGlzIG5vdCBhY3RpdmF0ZWQsIGEgbmV3IGZhcSBpdGVtIGlzIGFsd2F5cyBhcHByb3ZlZAogICAgZWxzZSB7CiAgICAgICAgJFBhcmFte0FwcHJvdmVkfSA9IDE7CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfaXRlbSAnCiAgICAgICAgICAgIC4gJyhmX251bWJlciwgZl9uYW1lLCBmX2xhbmd1YWdlX2lkLCBmX3N1YmplY3QsICcKICAgICAgICAgICAgLiAnY2F0ZWdvcnlfaWQsIHN0YXRlX2lkLCBmX2tleXdvcmRzLCBhcHByb3ZlZCwgJwogICAgICAgICAgICAuICdmX2ZpZWxkMSwgZl9maWVsZDIsIGZfZmllbGQzLCBmX2ZpZWxkNCwgZl9maWVsZDUsIGZfZmllbGQ2LCAnCiAgICAgICAgICAgIC4gJ2NyZWF0ZWQsIGNyZWF0ZWRfYnksIGNoYW5nZWQsIGNoYW5nZWRfYnkpJwogICAgICAgICAgICAuICdWQUxVRVMgKCcKICAgICAgICAgICAgLiAnPywgPywgPywgPywgJwogICAgICAgICAgICAuICc/LCA/LCA/LCA/LCAnCiAgICAgICAgICAgIC4gJz8sID8sID8sID8sID8sID8sICcKICAgICAgICAgICAgLiAnY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TnVtYmVyfSwgICAgIFwkUGFyYW17TmFtZX0sICAgIFwkUGFyYW17TGFuZ3VhZ2VJRH0sIFwkUGFyYW17VGl0bGV9LAogICAgICAgICAgICBcJFBhcmFte0NhdGVnb3J5SUR9LCBcJFBhcmFte1N0YXRlSUR9LCBcJFBhcmFte0tleXdvcmRzfSwgICBcJFBhcmFte0FwcHJvdmVkfSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDF9LCAgICAgXCRQYXJhbXtGaWVsZDJ9LCAgXCRQYXJhbXtGaWVsZDN9LAogICAgICAgICAgICBcJFBhcmFte0ZpZWxkNH0sICAgICBcJFBhcmFte0ZpZWxkNX0sICBcJFBhcmFte0ZpZWxkNn0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGJ1aWxkIFNRTCB0byBnZXQgdGhlIGlkIG9mIHRoZSBuZXdseSBpbnNlcnRlZCBGQVEgYXJ0aWNsZQogICAgbXkgJFNRTCA9ICdTRUxFQ1QgaWQgRlJPTSBmYXFfaXRlbSAnCiAgICAgICAgLiAnV0hFUkUgZl9udW1iZXIgPSA/ICcKICAgICAgICAuICdBTkQgZl9uYW1lID0gPyAnCiAgICAgICAgLiAnQU5EIGZfbGFuZ3VhZ2VfaWQgPSA/ICcKICAgICAgICAuICdBTkQgY2F0ZWdvcnlfaWQgPSA/ICcKICAgICAgICAuICdBTkQgc3RhdGVfaWQgPSA/ICcKICAgICAgICAuICdBTkQgYXBwcm92ZWQgPSA/ICcKICAgICAgICAuICdBTkQgY3JlYXRlZF9ieSA9ID8gJwogICAgICAgIC4gJ0FORCBjaGFuZ2VkX2J5ID0gPyAnOwoKICAgICMgaGFuZGxlIHRoZSB0aXRsZQogICAgaWYgKCAkUGFyYW17VGl0bGV9ICkgewogICAgICAgICRTUUwgLj0gJ0FORCBmX3N1YmplY3QgPSA/ICc7CiAgICB9CgogICAgIyBhZGRpdGlvbmFsIFNRTCBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgdGl0bGUgaXMgYW4gZW1wdHkgc3RyaW5nCiAgICAjIGFuZCB0aGUgZGF0YWJhc2UgaXMgb3JhY2xlLCB3aGljaCB0cmVhdHMgZW1wdHkgc3RyaW5ncyBhcyBOVUxMCiAgICBlbHNlIHsKICAgICAgICAkU1FMIC49ICdBTkQgKChmX3N1YmplY3QgPSA/KSBPUiAoZl9zdWJqZWN0IElTIE5VTEwpKSAnOwogICAgfQoKICAgICMgaGFuZGxlIHRoZSBrZXl3b3JkcwogICAgaWYgKCAkUGFyYW17S2V5d29yZHN9ICkgewogICAgICAgICRTUUwgLj0gJ0FORCBmX2tleXdvcmRzID0gPyAnOwogICAgfQoKICAgICMgYWRkaXRpb25hbCBTUUwgZm9yIHRoZSBjYXNlIHRoYXQga2V5d29yZHMgaXMgYW4gZW1wdHkgc3RyaW5nCiAgICAjIGFuZCB0aGUgZGF0YWJhc2UgaXMgb3JhY2xlLCB3aGljaCB0cmVhdHMgZW1wdHkgc3RyaW5ncyBhcyBOVUxMCiAgICBlbHNlIHsKICAgICAgICAkU1FMIC49ICdBTkQgKChmX2tleXdvcmRzID0gPykgT1IgKGZfa2V5d29yZHMgSVMgTlVMTCkpICc7CiAgICB9CgogICAgIyBnZXQgaWQKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAkU1FMLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte051bWJlcn0sCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIFwkUGFyYW17TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIFwkUGFyYW17U3RhdGVJRH0sCiAgICAgICAgICAgIFwkUGFyYW17QXBwcm92ZWR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtUaXRsZX0sCiAgICAgICAgICAgIFwkUGFyYW17S2V5d29yZHN9LAogICAgICAgIF0sCiAgICApOwogICAgbXkgJElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkSUQgPSAkUm93WzBdOwogICAgfQoKICAgICMgdXBkYXRlIG51bWJlcgogICAgbXkgJE51bWJlciA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdTeXN0ZW1JRCcpIC4gJzAwJyAuICRJRDsKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCAgPT4gJ1VQREFURSBmYXFfaXRlbSBTRVQgZl9udW1iZXIgPSA/IFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkTnVtYmVyLCBcJElEIF0sCiAgICApOwoKICAgICMgYWRkIGhpc3RvcnkKICAgICRTZWxmLT5GQVFIaXN0b3J5QWRkKAogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlZCcsCiAgICAgICAgSXRlbUlEID0+ICRJRCwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgYXBwcm92YWwgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSAmJiAhJFBhcmFte0FwcHJvdmVkfSApIHsKCiAgICAgICAgIyBjcmVhdGUgbmV3IGFwcHJvdmFsIHRpY2tldAogICAgICAgIG15ICRPayA9ICRTZWxmLT5fRkFRQXBwcm92YWxUaWNrZXRDcmVhdGUoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJElELAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkUGFyYW17TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgIEZBUU51bWJlciAgPT4gJE51bWJlciwKICAgICAgICAgICAgVGl0bGUgICAgICA9PiAkUGFyYW17VGl0bGV9LAogICAgICAgICAgICBTdGF0ZUlEICAgID0+ICRQYXJhbXtTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJE9rICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IGNyZWF0ZSBhcHByb3ZhbCB0aWNrZXQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRJRDsKfQoKPWl0ZW0gRkFRVXBkYXRlKCkKCnVwZGF0ZSBhbiBhcnRpY2xlCgogICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICAgICBJdGVtSUQgICAgICA9PiAxMjMsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0JywKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIEFwcHJvdmFsT2ZmID0+IDEsIChvcHRpb25hbCwgaWYgc2V0IHRvIDEgYXBwcm92YWwgaXMgaWdub3JlZC4gVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiBjYWxsZWQgZnJvbSBGQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKQogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxIDsgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYW4ndCB1cGRhdGUgdGhlIEZBUSBhcnRpY2xlCgo9Y3V0CgpzdWIgRkFRVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBDYXRlZ29yeUlEIFN0YXRlSUQgTGFuZ3VhZ2VJRCBUaXRsZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmFtZQogICAgaWYgKCAhJFBhcmFte05hbWV9ICkgewoKICAgICAgICAjIGdldCBmYXEgZGF0YQogICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIGZhcSBuYW1lCiAgICAgICAgJFBhcmFte05hbWV9ID0gJEZBUURhdGF7TmFtZX07CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUICcKICAgICAgICAgICAgLiAnZl9uYW1lID0gPywgZl9sYW5ndWFnZV9pZCA9ID8sICcKICAgICAgICAgICAgLiAnZl9zdWJqZWN0ID0gPywgY2F0ZWdvcnlfaWQgPSA/LCAnCiAgICAgICAgICAgIC4gJ3N0YXRlX2lkID0gPywgZl9rZXl3b3JkcyA9ID8sICcKICAgICAgICAgICAgLiAnZl9maWVsZDEgPSA/LCBmX2ZpZWxkMiA9ID8sICcKICAgICAgICAgICAgLiAnZl9maWVsZDMgPSA/LCBmX2ZpZWxkNCA9ID8sICcKICAgICAgICAgICAgLiAnZl9maWVsZDUgPSA/LCBmX2ZpZWxkNiA9ID8sICcKICAgICAgICAgICAgLiAnY2hhbmdlZCA9IGN1cnJlbnRfdGltZXN0YW1wLCAnCiAgICAgICAgICAgIC4gJ2NoYW5nZWRfYnkgPSA/ICcKICAgICAgICAgICAgLiAnV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgICAgXCRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtUaXRsZX0sICAgXCRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtTdGF0ZUlEfSwgXCRQYXJhbXtLZXl3b3Jkc30sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQxfSwgIFwkUGFyYW17RmllbGQyfSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDN9LCAgXCRQYXJhbXtGaWVsZDR9LAogICAgICAgICAgICBcJFBhcmFte0ZpZWxkNX0sICBcJFBhcmFte0ZpZWxkNn0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgdXBkYXRlIGFwcHJvdmFsCiAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSAmJiAhJFBhcmFte0FwcHJvdmFsT2ZmfSApIHsKCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9uCiAgICAgICAgbXkgJUdyb3VwcyA9IHJldmVyc2UgJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aGUgYXBwcm92YWwgZ3JvdXAKICAgICAgICBteSAkQXBwcm92YWxHcm91cCA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsR3JvdXAnKTsKCiAgICAgICAgIyBzZXQgYXBwcm92YWwgdG8gMCBpZiB1c2VyIGRvZXMgbm90IGhhdmUgdGhlIHJpZ2h0cyB0byBhcHByb3ZlCiAgICAgICAgaWYgKCAhJEdyb3Vwc3skQXBwcm92YWxHcm91cH0gKSB7CiAgICAgICAgICAgICRQYXJhbXtBcHByb3ZlZH0gPSAwOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdGhlIGFwcHJvdmFsCiAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkU2VsZi0+X0ZBUUFwcHJvdmFsVXBkYXRlKAogICAgICAgICAgICBJdGVtSUQgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgQXBwcm92ZWQgPT4gJFBhcmFte0FwcHJvdmVkfSB8fCAwLAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIGFwcHJvdmFsIGZvciBJdGVtSUQgJFBhcmFte0l0ZW1JRH0hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGhpc3RvcnkgZW50cnkgc2hvdWxkIGJlIGFkZGVkCiAgICByZXR1cm4gMSBpZiAkUGFyYW17SGlzdG9yeU9mZn07CgogICAgIyB3cml0ZSBoaXN0b3J5IGVudHJ5CiAgICAkU2VsZi0+RkFRSGlzdG9yeUFkZCgKICAgICAgICBOYW1lICAgPT4gJ1VwZGF0ZWQnLAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBBdHRhY2htZW50QWRkKCkKCmFkZCBhcnRpY2xlIGF0dGFjaG1lbnRzLCByZXR1cm5zIHRoZSBhdHRhY2htZW50IGlkCgogICAgbXkgJEF0dGFjaG1lbnRJRCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgSXRlbUlEICAgICAgPT4gMTIzLAogICAgICAgIENvbnRlbnQgICAgID0+ICRDb250ZW50LAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ3NvbWVuYW1lLnhtbCcsCiAgICAgICAgSW5saW5lICAgICAgPT4gMSwgICAoMHwxLCBkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRBdHRhY2htZW50SUQgPSAxMjMgOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgY2FuJ3QgYWRkIHRoZSBhdHRhY2htZW50Cgo9Y3V0CgpzdWIgQXR0YWNobWVudEFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgQ29udGVudCBDb250ZW50VHlwZSBGaWxlbmFtZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQKICAgIGlmICggISRQYXJhbXtJbmxpbmV9ICkgewogICAgICAgICRQYXJhbXtJbmxpbmV9ID0gMDsKICAgIH0KCiAgICAjIGdldCBhdHRhY2htZW50IHNpemUKICAgIHsKICAgICAgICB1c2UgYnl0ZXM7CiAgICAgICAgJFBhcmFte0ZpbGVzaXplfSA9IGxlbmd0aCAkUGFyYW17Q29udGVudH07CiAgICAgICAgbm8gYnl0ZXM7CiAgICB9CgogICAgIyBnZXQgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICBteSBASW5kZXggPSAkU2VsZi0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBmaWxlbmFtZQogICAgbXkgJE5ld0ZpbGVOYW1lID0gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGJ1aWxkIGEgbG9va3VwIGhhc2ggb2YgYWxsIGV4aXN0aW5nIGZpbGUgbmFtZXMKICAgIG15ICVVc2VkRmlsZTsKICAgIGZvciBteSAkRmlsZSAoQEluZGV4KSB7CiAgICAgICAgJFVzZWRGaWxleyAkRmlsZS0+e0ZpbGVuYW1lfSB9ID0gMTsKICAgIH0KCiAgICAjIHRyeSB0byBtb2RpZnkgdGhlIHRoZSBmaWxlIG5hbWUgYnkgYWRkaW5nIGEgbnVtYmVyIGlmIGl0IGV4aXN0cyBhbHJlYWR5CiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCAkQ291bnQgPCA1MCApIHsKCiAgICAgICAgIyBpbmNyZWFzZSBjb3VudGVyCiAgICAgICAgJENvdW50Kys7CgogICAgICAgICMgaWYgdGhlIGZpbGUgbmFtZSBleGlzdHMKICAgICAgICBpZiAoIGV4aXN0cyAkVXNlZEZpbGV7JE5ld0ZpbGVOYW1lfSApIHsKCiAgICAgICAgICAgICMgZmlsZW5hbWUgaGFzIGEgZmlsZSBuYW1lIGV4dGVuc2lvbiAoZS5nLiB0ZXN0LmpwZykKICAgICAgICAgICAgaWYgKCAkUGFyYW17RmlsZW5hbWV9ID1+IG17IFxBICguKikgXC4gKC4rPykgXHogfXhtcyApIHsKICAgICAgICAgICAgICAgICROZXdGaWxlTmFtZSA9ICIkMS0kQ291bnQuJDIiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJE5ld0ZpbGVOYW1lID0gIiRQYXJhbXtGaWxlbmFtZX0tJENvdW50IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHN0b3JlIHRoZSBuZXcgZmlsZW5hbWUKICAgICRQYXJhbXtGaWxlbmFtZX0gPSAkTmV3RmlsZU5hbWU7CgogICAgIyBlbmNvZGUgYXR0YWNobWVudCBpZiBpdCdzIGEgcG9zdGdyZXNxbCBiYWNrZW5kISEhCiAgICBpZiAoICEkU2VsZi0+e0RCT2JqZWN0fS0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewogICAgICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fS0+RW5jb2RlT3V0cHV0KCBcJFBhcmFte0NvbnRlbnR9ICk7CiAgICAgICAgJFBhcmFte0NvbnRlbnR9ID0gTUlNRTo6QmFzZTY0OjplbmNvZGVfYmFzZTY0KCAkUGFyYW17Q29udGVudH0gKTsKICAgIH0KCiAgICAjIHdyaXRlIGF0dGFjaG1lbnQgdG8gZGIKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gZmFxX2F0dGFjaG1lbnQgJyAuCiAgICAgICAgICAgICcgKGZhcV9pZCwgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBjb250ZW50LCBpbmxpbmVhdHRhY2htZW50LCAnIC4KICAgICAgICAgICAgJyBjcmVhdGVkLCBjcmVhdGVkX2J5LCBjaGFuZ2VkLCBjaGFuZ2VkX2J5KSBWQUxVRVMgJyAuCiAgICAgICAgICAgICcgKD8sID8sID8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sICBcJFBhcmFte0ZpbGVuYW1lfSwgXCRQYXJhbXtDb250ZW50VHlwZX0sIFwkUGFyYW17RmlsZXNpemV9LAogICAgICAgICAgICBcJFBhcmFte0NvbnRlbnR9LCBcJFBhcmFte0lubGluZX0sICAgXCRQYXJhbXtVc2VySUR9LCAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCB0aGUgYXR0YWNobWVudCBpZAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCAnCiAgICAgICAgICAgIC4gJ0ZST00gZmFxX2F0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdXSEVSRSBmYXFfaWQgPSA/IEFORCBmaWxlbmFtZSA9ID8gJwogICAgICAgICAgICAuICdBTkQgY29udGVudF90eXBlID0gPyBBTkQgY29udGVudF9zaXplID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBpbmxpbmVhdHRhY2htZW50ID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBjcmVhdGVkX2J5ID0gPyBBTkQgY2hhbmdlZF9ieSA9ID8nLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17RmlsZW5hbWV9LCBcJFBhcmFte0NvbnRlbnRUeXBlfSwgXCRQYXJhbXtGaWxlc2l6ZX0sCiAgICAgICAgICAgIFwkUGFyYW17SW5saW5lfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQXR0YWNobWVudElEID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJEF0dGFjaG1lbnRJRDsKfQoKPWl0ZW0gQXR0YWNobWVudEdldCgpCgpnZXQgYXR0YWNobWVudCBvZiBhcnRpY2xlCgogICAgbXkgJUZpbGUgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50R2V0KAogICAgICAgIEl0ZW1JRCA9PiAxMjMsCiAgICAgICAgRmlsZUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlRmlsZSA9ICgKICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTQwMjg2JywgICAgICAgICAgICAgICAgIyBmaWxlIHNpemUgaW4gYnl0ZXMKICAgICAgICBDb250ZW50VHlwZSA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ0Vycm9yLmpwZycsCiAgICAgICAgQ29udGVudCAgICAgPT4gJy4uLicgICAgICAgICAgICAgICAgICAgICMgZmlsZSBiaW5hcnkgY29udGVudAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBjb250ZW50ICcKICAgICAgICAgICAgLiAnRlJPTSBmYXFfYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPyBBTkQgZmFxX2lkID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIGNyZWF0ZWQnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0ZpbGVJRH0sIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIEVuY29kZSA9PiBbIDEsIDEsIDEsIDAgXSwKICAgICAgICBMaW1pdCAgPT4gMSwKICAgICk7CgogICAgbXkgJUZpbGU7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAjIGRlY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQgYW5kIG5vdCBCTE9CCiAgICAgICAgaWYgKCAhJFNlbGYtPntEQk9iamVjdH0tPkdldERhdGFiYXNlRnVuY3Rpb24oJ0RpcmVjdEJsb2InKSApIHsKICAgICAgICAgICAgJFJvd1szXSA9IE1JTUU6OkJhc2U2NDo6ZGVjb2RlX2Jhc2U2NCggJFJvd1szXSApOwogICAgICAgIH0KCiAgICAgICAgJEZpbGV7RmlsZW5hbWV9ICAgID0gJFJvd1swXTsKICAgICAgICAkRmlsZXtDb250ZW50VHlwZX0gPSAkUm93WzFdOwogICAgICAgICRGaWxle0ZpbGVzaXplfSAgICA9ICRSb3dbMl07CiAgICAgICAgJEZpbGV7Q29udGVudH0gICAgID0gJFJvd1szXTsKICAgIH0KCiAgICByZXR1cm4gJUZpbGU7Cn0KCj1pdGVtIEF0dGFjaG1lbnREZWxldGUoKQoKZGVsZXRlIGF0dGFjaG1lbnQgb2YgYXJ0aWNsZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+QXR0YWNobWVudERlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gMTIzLAogICAgICAgIEZpbGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxIDsgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgYXR0YWNobWVudCBjb3VsZCBub3QgYmUgZGVsZXRlZAoKPWN1dAoKc3ViIEF0dGFjaG1lbnREZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIEZpbGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZmFxX2F0dGFjaG1lbnQgV0hFUkUgaWQgPSA/IEFORCBmYXFfaWQgPSA/ICcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17RmlsZUlEfSwgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBBdHRhY2htZW50SW5kZXgoKQoKcmV0dXJuIGFuIGF0dGFjaG1lbnQgaW5kZXggb2YgYW4gYXJ0aWNsZQoKICAgIG15IEBJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBTaG93SW5saW5lID0+IDAsICAgKCAwfDEsIGRlZmF1bHQgMSkKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBASW5kZXggPSAoCiAgICAgICAgewogICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTI3LjYgS0J5dGVzJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnRXJyb3IuanBnJywKICAgICAgICAgICAgRmlsZXNpemVSYXcgPT4gNTQwMjg2LAogICAgICAgICAgICBGaWxlSUQgICAgICA9PiA2LAogICAgICAgICAgICBJbmxpbmUgICAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgeywKICAgICAgICAgICAgRmlsZXNpemUgPT4gJzQzMC4wIEtCeXRlcycsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ1NvbHV0aW9uLmpwZycsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+IDQ0MDI4NiwKICAgICAgICAgICAgRmlsZUlEID0+IDUsCiAgICAgICAgICAgIElubGluZSA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBGaWxlc2l6ZSA9PiAnMjk2IEJ5dGVzJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnQWRkaXRpb25hbENvbW1lbnRzLnR4dCcsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+IDI5NiwKICAgICAgICAgICAgRmlsZUlEID0+IDcsCiAgICAgICAgICAgIElubGluZSA9PiAwLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRJbmRleCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBmaWxlbmFtZSwgY29udGVudF90eXBlLCBjb250ZW50X3NpemUsIGlubGluZWF0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdGUk9NIGZhcV9hdHRhY2htZW50ICcKICAgICAgICAgICAgLiAnV0hFUkUgZmFxX2lkID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIGZpbGVuYW1lJywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEwMCwKICAgICk7CiAgICBteSBASW5kZXggPSAoKTsKICAgIEFUVEFDSE1FTlQ6CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICBteSAkSUQgICAgICAgICAgPSAkUm93WzBdOwogICAgICAgIG15ICRGaWxlbmFtZSAgICA9ICRSb3dbMV07CiAgICAgICAgbXkgJENvbnRlbnRUeXBlID0gJFJvd1syXTsKICAgICAgICBteSAkRmlsZXNpemUgICAgPSAkUm93WzNdOwogICAgICAgIG15ICRJbmxpbmUgICAgICA9ICRSb3dbNF07CgogICAgICAgICMgZG8gbm90IHNob3cgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTaG93SW5saW5lfSAmJiAhJFBhcmFte1Nob3dJbmxpbmV9ICYmICRJbmxpbmUgKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICMgY29udmVydCB0byBodW1hbiByZWFkYWJsZSBmaWxlIHNpemUKICAgICAgICBteSAkRmlsZVNpemVSYXcgPSAkRmlsZXNpemU7CiAgICAgICAgaWYgKCRGaWxlc2l6ZSkgewogICAgICAgICAgICBpZiAoICRGaWxlc2l6ZSA+ICggMTAyNCAqIDEwMjQgKSApIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZXNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRGaWxlc2l6ZSA+IDEwMjQgKSB7CiAgICAgICAgICAgICAgICAkRmlsZXNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggKCAkRmlsZXNpemUgLyAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9ICRGaWxlc2l6ZSAuICcgQnl0ZXMnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBJbmRleCwgewogICAgICAgICAgICBGaWxlSUQgICAgICA9PiAkSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAkRmlsZXNpemUsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+ICRGaWxlU2l6ZVJhdywKICAgICAgICAgICAgSW5saW5lICAgICAgPT4gJElubGluZSwKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIEBJbmRleDsKfQoKPWl0ZW0gRkFRQ291bnQoKQoKY291bnQgdGhlIG51bWJlciBvZiBhcnRpY2xlcyBmb3IgYSBkZWZpbmVkIGNhdGVnb3J5CgogICAgbXkgJEFydGljbGVDb3VudCA9ICRGQVFPYmplY3QtPkZBUUNvdW50KAogICAgICAgIENhdGVnb3J5SURzICA9PiBbMSwyLDMsNF0sCiAgICAgICAgT25seUFwcHJvdmVkID0+IDEsICAgIyBvcHRpb25hbCAoZGVmYXVsdCAwKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEFydGljbGVDb3VudCA9IDM7Cgo9Y3V0CgpzdWIgRkFRQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRHMgSXRlbVN0YXRlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCBjYXRlZ29yeSBpZCBzdHJpbmcKICAgIG15ICRDYXRlZ29yeUlEU3RyaW5nID0gam9pbiAnLCAnLCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH07CgogICAgbXkgJFNRTCA9ICdTRUxFQ1QgQ09VTlQoKikgJwogICAgICAgIC4gJ0ZST00gZmFxX2l0ZW0gaSwgZmFxX3N0YXRlIHMgJwogICAgICAgIC4gIldIRVJFIGkuY2F0ZWdvcnlfaWQgSU4gKCRDYXRlZ29yeUlEU3RyaW5nKSAiCiAgICAgICAgLiAnQU5EIGkuc3RhdGVfaWQgPSBzLmlkJzsKCiAgICAjIGNvdW50IG9ubHkgYXBwcm92ZWQgYXJ0aWNsZXMKICAgIGlmICggJFBhcmFte09ubHlBcHByb3ZlZH0gKSB7CiAgICAgICAgJFNRTCAuPSAnIEFORCBpLmFwcHJvdmVkID0gMSc7CiAgICB9CgogICAgbXkgJEV4dCA9ICcnOwogICAgaWYgKCAkUGFyYW17SXRlbVN0YXRlc30gJiYgcmVmICRQYXJhbXtJdGVtU3RhdGVzfSBlcSAnSEFTSCcgJiYgJXsgJFBhcmFte0l0ZW1TdGF0ZXN9IH0gKSB7CiAgICAgICAgbXkgJFN0YXRlc1N0cmluZyA9IGpvaW4gJywgJywga2V5cyAleyAkUGFyYW17SXRlbVN0YXRlc30gfTsKICAgICAgICAkRXh0IC49ICIgQU5EIHMudHlwZV9pZCBJTiAoJFN0YXRlc1N0cmluZyApIjsKICAgIH0KICAgICRFeHQgLj0gJyBHUk9VUCBCWSBjYXRlZ29yeV9pZCc7CiAgICAkU1FMIC49ICRFeHQ7CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDIwMCwKICAgICk7CgogICAgbXkgJENvdW50ID0gMDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ID0gJFJvd1swXTsKICAgIH0KICAgIHJldHVybiAkQ291bnQ7Cn0KCj1pdGVtIFZvdGVBZGQoKQoKYWRkIGEgdm90ZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Vm90ZUFkZCgKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICcxMjM0NTYnLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICdTb21lIFRleHQnLAogICAgICAgIFJhdGUgICAgICA9PiAxMDAsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIHZvdGUgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgVm90ZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDcmVhdGVkQnkgSXRlbUlEIElQIEludGVyZmFjZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gZmFxX3ZvdGluZyAoY3JlYXRlZF9ieSwgaXRlbV9pZCwgaXAsIGludGVyZmFjZSwgcmF0ZSwgY3JlYXRlZCApJwogICAgICAgICAgICAuICcgVkFMVUVTICggPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAgKScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17Q3JlYXRlZEJ5fSwgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte0lQfSwgXCRQYXJhbXtJbnRlcmZhY2V9LAogICAgICAgICAgICBcJFBhcmFte1JhdGV9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnSXRlbVZvdGVEYXRhR2V0OjonIC4gJFBhcmFte0l0ZW1JRH07CiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBWb3RlR2V0KCkKCmdldCBhIHZvdGUgaW5mb3JtYXRpb24KCiAgICBteSAlVm90ZURhdGEgPSAkRkFRT2JqZWN0LT5Wb3RlR2V0KAogICAgICAgIENyZWF0ZUJ5ICA9PiAnU29tZSBUZXh0JywKICAgICAgICBJdGVtSUQgICAgPT4gJzEyMzQ1NicsCiAgICAgICAgSVAgICAgICAgID0+ICcxMjcuMC4wLjEnLAogICAgICAgIEludGVyZmFjZSA9PiAnU29tZSBUZXh0JywKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVWb3RlRGF0YSA9ICgKICAgICAgICBJdGVtSUQgICAgPT4gMjMsCiAgICAgICAgUmF0ZSAgICAgID0+IDUwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAgb3IgMjUgb3IgNzUgb3IgMTAwCiAgICAgICAgSVAgICAgICAgID0+ICcxOTIuMTY4LjAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVyZmFjZSBJRAogICAgICAgIENyZWF0ZWRCeSA9PiAxLAogICAgICAgIENyZWF0ZWQgICA9PiAnMjAxMS0wNi0xNCAxMjozMjowMycsCiAgICApOwoKPWN1dAoKc3ViIFZvdGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ3JlYXRlQnkgSXRlbUlEIEludGVyZmFjZSBJUCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGIgcXVvdGUKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENyZWF0ZWRCeSBJbnRlcmZhY2UgSVApKSB7CiAgICAgICAgJFBhcmFteyRBcmd1bWVudH0gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXskQXJndW1lbnR9ICk7CiAgICB9CiAgICAkUGFyYW17SXRlbUlEfSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFte0l0ZW1JRH0sICdJbnRlZ2VyJyApOwoKICAgIG15ICRFeHQgPSAiIjsKICAgIG15ICRTUUwgPSAiIFNFTEVDVCBjcmVhdGVkX2J5LCBpdGVtX2lkLCBpbnRlcmZhY2UsIGlwLCBjcmVhdGVkLCByYXRlIEZST00gZmFxX3ZvdGluZyBXSEVSRSI7CgogICAgIyBwdWJsaWMKICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzMnICkgewogICAgICAgICRFeHQgLj0gIiBpcCA9ICckUGFyYW17SVB9JyBBTkQgaXRlbV9pZCA9ICRQYXJhbXtJdGVtSUR9IjsKICAgIH0KCiAgICAjIGN1c3RvbWVyCiAgICBlbHNpZiAoICRQYXJhbXtJbnRlcmZhY2V9IGVxICcyJyApIHsKICAgICAgICAkRXh0IC49ICIgY3JlYXRlZF9ieSA9ICckUGFyYW17Q3JlYXRlQnl9JyBBTkQgaXRlbV9pZCA9ICRQYXJhbXtJdGVtSUR9IjsKICAgIH0KCiAgICAjIGludGVybmFsCiAgICBlbHNpZiAoICRQYXJhbXtJbnRlcmZhY2V9IGVxICcxJyApIHsKICAgICAgICAkRXh0IC49ICIgY3JlYXRlZF9ieSA9ICckUGFyYW17Q3JlYXRlQnl9JyBBTkQgaXRlbV9pZCA9ICRQYXJhbXtJdGVtSUR9IjsKICAgIH0KICAgICRTUUwgLj0gJEV4dDsKCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKCBTUUwgPT4gJFNRTCApOwogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICVEYXRhID0gKAogICAgICAgICAgICBDcmVhdGVkQnkgPT4gJFJvd1swXSwKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIEludGVyZmFjZSA9PiAkUm93WzJdLAogICAgICAgICAgICBJUCAgICAgICAgPT4gJFJvd1szXSwKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICRSb3dbNF0sCiAgICAgICAgICAgIFJhdGUgICAgICA9PiAkUm93WzVdLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIGlmICElRGF0YTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aXRlbSBWb3RlU2VhcmNoKCkKCnJldHVybnMgYW4gYXJyYXkgd2l0aCBWb3RlSURzCgogICAgbXkgJFZvdGVJREFycmF5cmVmID0gJEZBUU9iamVjdC0+Vm90ZVNlYXJjaCgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRWb3RlSURBcnJheXJlZiA9IFsKICAgICAgICAyMywKICAgICAgICA0NSwKICAgIF07Cgo9Y3V0CgpzdWIgVm90ZVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfdm90aW5nIFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0gfHwgNTAwLAogICAgKTsKICAgIG15IEBWb3RlSURzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBWb3RlSURzLCAkUm93WzBdOwogICAgfQogICAgcmV0dXJuIFxAVm90ZUlEczsKfQoKPWl0ZW0gVm90ZURlbGV0ZSgpCgpkZWxldGUgYSB2b3RlCgogICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5Wb3RlRGVsZXRlKAogICAgICAgIFZvdGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJERlbGV0ZVN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiB2b3RlIGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgVm90ZURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhWb3RlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfdm90aW5nIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Vm90ZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gRkFRRGVsZXRlKCkKCkRlbGV0ZSBhbiBhcnRpY2xlLgoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRGVsZXRlU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGFydGljbGUgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBGQVFEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgYXR0YWNobWVudHMKICAgIG15IEBJbmRleCA9ICRTZWxmLT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICBmb3IgbXkgJEZpbGVJRCAoQEluZGV4KSB7CiAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkU2VsZi0+QXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBGaWxlSUQgPT4gJEZpbGVJRC0+e0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIHJldHVybiBpZiAhJERlbGV0ZVN1Y2Nlc3M7CiAgICB9CgogICAgIyBkZWxldGUgdm90ZXMKICAgIG15ICRWb3RlSURzUmVmID0gJFNlbGYtPlZvdGVTZWFyY2goCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICBmb3IgbXkgJFZvdGVJRCAoIEB7JFZvdGVJRHNSZWZ9ICkgewogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJFNlbGYtPlZvdGVEZWxldGUoCiAgICAgICAgICAgIFZvdGVJRCA9PiAkVm90ZUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgISREZWxldGVTdWNjZXNzOwogICAgfQoKICAgICMgZGVsZXRlIGFsbCBmYXEgbGlua3Mgb2YgdGhpcyBmYXEgYXJ0aWNsZQogICAgJFNlbGYtPntMaW5rT2JqZWN0fS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICBPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgaGlzdG9yeQogICAgcmV0dXJuIGlmICEkU2VsZi0+RkFRSGlzdG9yeURlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGRlbGV0ZSBhcnRpY2xlCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfaXRlbSBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEZBUUhpc3RvcnlBZGQoKQoKYWRkIGFuIGhpc3RvcnkgdG8gYW4gYXJ0aWNsZQoKICAgIG15ICRBZGRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeUFkZCgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBOYW1lICAgPT4gJ1VwZGF0ZWQgQXJ0aWNsZS4nLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEFkZFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgYXJ0aWNsZSBoaXN0b3J5IGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIEZBUUhpc3RvcnlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGZhcV9oaXN0b3J5IChuYW1lLCBpdGVtX2lkLCAnIC4KICAgICAgICAgICAgJyBjcmVhdGVkLCBjcmVhdGVkX2J5LCBjaGFuZ2VkLCBjaGFuZ2VkX2J5KScgLgogICAgICAgICAgICAnIFZBTFVFUyAoID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte05hbWV9LCBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBGQVFIaXN0b3J5R2V0KCkKCmdldCBhbiBhcnJheSB3aXRoIGhhc2hyZWYgd2l0aCB0aGUgaGlzdG9yeSBvZiBhbiBhcnRpY2xlCgogICAgbXkgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5GQVFIaXN0b3J5R2V0KAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICBDcmVhdGVkQnkgPT4gMSwKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDEwLTExLTAyIDA3OjQ1OjE1JywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICdDcmVhdGVkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+IDEsCiAgICAgICAgICAgIENyZWF0ZWQgICA9PiAnMjAxMS0wNi0xNCAxMjo1Mzo1NScsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVXBkYXRlZCcsCiAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgRkFRSGlzdG9yeUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJ1NFTEVDVCBuYW1lLCBjcmVhdGVkLCBjcmVhdGVkX2J5IEZST00gZmFxX2hpc3RvcnkgV0hFUkUgaXRlbV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICk7CiAgICBteSBARGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJVJlY29yZCA9ICgKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIENyZWF0ZWQgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDcmVhdGVkQnkgPT4gJFJvd1syXSwKICAgICAgICApOwogICAgICAgIHB1c2ggQERhdGEsIFwlUmVjb3JkOwogICAgfQogICAgcmV0dXJuIFxARGF0YTsKfQoKPWl0ZW0gRkFRSGlzdG9yeURlbGV0ZSgpCgpkZWxldGUgdGhlIGhpc3Rvcnkgb2YgYW4gYXJ0aWNsZQoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeURlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWxldGVEdWNjZXNzID0gMTsgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBoaXN0b3J5IGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgRkFRSGlzdG9yeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfaGlzdG9yeSBXSEVSRSBpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gSGlzdG9yeUdldCgpCgpnZXQgdGhlIHN5c3RlbSBoaXN0b3J5CgogICAgbXkgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICBJdGVtSUQgICAgPT4gJzMyJywKICAgICAgICAgICAgTnVtYmVyICAgID0+ICcxMDAwNCcsCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJ05ldyBBcnRpY2xlJywKICAgICAgICAgICAgQWN0aW9uICAgID0+ICdDcmVhdGVkJywKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICcxJywKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgID0+ICc0JywKICAgICAgICAgICAgTnVtYmVyICAgID0+ICcxMDAwNCcsCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gIk5ldyBBcnRpY2xlIiwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICdVcGRhdGVkJywKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICcxJywKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTAxLTA1IDIxOjU1OjMyJywKICAgICAgICB9CiAgICBdOwoKPWN1dAoKc3ViIEhpc3RvcnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYnVpbGQgU1FMIHF1ZXJ5CiAgICBteSAkU1FMID0gJ1NFTEVDVCBpLmlkLCBoLm5hbWUsIGguY3JlYXRlZCwgaC5jcmVhdGVkX2J5LCBjLm5hbWUsIGkuZl9zdWJqZWN0LCBpLmZfbnVtYmVyICcKICAgICAgICAuICdGUk9NIGZhcV9pdGVtIGksIGZhcV9zdGF0ZSBzLCBmYXFfaGlzdG9yeSBoLCBmYXFfY2F0ZWdvcnkgYyAnCiAgICAgICAgLiAnV0hFUkUgcy5pZCA9IGkuc3RhdGVfaWQgJwogICAgICAgIC4gJ0FORCBoLml0ZW1faWQgPSBpLmlkICcKICAgICAgICAuICdBTkQgaS5jYXRlZ29yeV9pZCA9IGMuaWQgJzsKCiAgICAjIGFkZCBzdGF0ZXMgY29uZGl0aW9uCiAgICBpZiAoICRQYXJhbXtTdGF0ZXN9ICYmIHJlZiAkUGFyYW17U3RhdGVzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtTdGF0ZXN9IH0gKSB7CiAgICAgICAgbXkgJFN0YXRlc1N0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte1N0YXRlc30gfTsKICAgICAgICAkU1FMIC49ICJBTkQgcy5uYW1lIElOICgkU3RhdGVzU3RyaW5nKSAiOwogICAgfQoKICAgICMgYWRkIG9yZGVyIGJ5IGNsYXVzZQogICAgJFNRTCAuPSAnT1JERVIgQlkgaC5jcmVhdGVkIERFU0MnOwoKICAgICMgZ2V0IHRoZSBkYXRhIGZyb20gZGIKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAyMDAsCiAgICApOwogICAgbXkgQERhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVSZWNvcmQgPSAoCiAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkUm93WzBdLAogICAgICAgICAgICBBY3Rpb24gICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICRSb3dbMl0sCiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkUm93WzNdLAogICAgICAgICAgICBDYXRlZ29yeSAgPT4gJFJvd1s0XSwKICAgICAgICAgICAgU3ViamVjdCAgID0+ICRSb3dbNV0sCiAgICAgICAgICAgIE51bWJlciAgICA9PiAkUm93WzZdLAogICAgICAgICk7CiAgICAgICAgcHVzaCBARGF0YSwgXCVSZWNvcmQ7CiAgICB9CiAgICByZXR1cm4gXEBEYXRhOwp9Cgo9aXRlbSBDYXRlZ29yeUxpc3QoKQoKZ2V0IHRoZSBjYXRlZ29yeSBsaXN0IGFzIGhhc2gKCiAgICBteSAkQ2F0ZWdvcnlIYXNoUmVmID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLCAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SGFzaFJlZiA9IHsKICAgICAgICAwID0+IHsKICAgICAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICB9LAogICAgICAgIDIgPT4gewogICAgICAgICAgICAzID0+ICdTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgICAgIDQgPT4gJ1N1YiBDYXRlZ29yeSBCJywKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBDYXRlZ29yeUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQKICAgIG15ICRWYWxpZCA9IDA7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkVmFsaWQgPSAkUGFyYW17VmFsaWR9OwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIGlmICggJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUxpc3R9LT57JFZhbGlkfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUxpc3R9LT57JFZhbGlkfTsKICAgIH0KCiAgICAjIGJ1aWxkIHNxbAogICAgbXkgJFNRTCA9ICdTRUxFQ1QgaWQsIHBhcmVudF9pZCwgbmFtZSBGUk9NIGZhcV9jYXRlZ29yeSAnOwogICAgaWYgKCRWYWxpZCkgewogICAgICAgICRTUUwgLj0gJ1dIRVJFIHZhbGlkX2lkID0gMSc7CiAgICB9CgogICAgIyBwcmVwYXJlIHNxbCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJERhdGF7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSAkUm93WzJdOwogICAgfQoKICAgICMgY2FjaGUKICAgICRTZWxmLT57Q2FjaGV9LT57Q2F0ZWdvcnlMaXN0fS0+eyRWYWxpZH0gPSBcJURhdGE7CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gQ2F0ZWdvcnlTZWFyY2goKQoKZ2V0IHRoZSBjYXRlZ29yeSBzZWFyY2ggYXMgYW4gYXJyYXkgcmVmCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U2VhcmNoKAogICAgICAgIE5hbWUgICAgICAgID0+ICdUZXN0JywKICAgICAgICBQYXJlbnRJRCAgICA9PiAzLAogICAgICAgIFBhcmVudElEcyAgID0+IFsgMSwgMywgOCBdLAogICAgICAgIENhdGVnb3J5SURzID0+IFsgMiwgNSwgNyBdLAogICAgICAgIE9yZGVyQnkgICAgID0+ICdOYW1lJywKICAgICAgICBTb3J0QnkgICAgICA9PiAnZG93bicsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgMiwKICAgIF07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc3FsCiAgICBteSAkU1FMID0gIlNFTEVDVCBpZCBGUk9NIGZhcV9jYXRlZ29yeSBXSEVSRSB2YWxpZF9pZCA9IDEgIjsKICAgIG15ICRFeHQgPSAnJzsKCiAgICAjIHNlYXJjaCBmb3IgbmFtZQogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtOYW1lfSApIHsKCiAgICAgICAgIyBkYiBsaWtlIHF1b3RlCiAgICAgICAgJFBhcmFte05hbWV9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17TmFtZX0sICdMaWtlJyApOwoKICAgICAgICAkRXh0IC49ICIgQU5EIG5hbWUgTElLRSAnJSIgLiAkUGFyYW17TmFtZX0gLiAiJScgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHBhcmVudCBpZAogICAgZWxzaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CgogICAgICAgICMgZGIgaW50ZWdlciBxdW90ZQogICAgICAgICRQYXJhbXtQYXJlbnRJRH0gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXtQYXJlbnRJRH0sICdJbnRlZ2VyJyApOwoKICAgICAgICAkRXh0IC49ICcgQU5EIHBhcmVudF9pZCA9ICcgLiAkUGFyYW17UGFyZW50SUR9OwogICAgfQoKICAgICMgc2VhcmNoIGZvciBwYXJlbnQgaWRzCiAgICBlbHNpZiAoCiAgICAgICAgZGVmaW5lZCAkUGFyYW17UGFyZW50SURzfQogICAgICAgICYmIHJlZiAkUGFyYW17UGFyZW50SURzfSBlcSAnQVJSQVknCiAgICAgICAgJiYgQHsgJFBhcmFte1BhcmVudElEc30gfQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBpbnRlZ2VyIHF1b3RlIHRoZSBwYXJlbnQgaWRzCiAgICAgICAgZm9yIG15ICRQYXJlbnRJRCAoIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH0gKSB7CiAgICAgICAgICAgICRQYXJlbnRJRCA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmVudElELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIG15ICRJblN0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte1BhcmVudElEc30gfTsKCiAgICAgICAgJEV4dCA9ICcgQU5EIHBhcmVudF9pZCBJTiAoJyAuICRJblN0cmluZyAuICcpJzsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgY2F0ZWdvcnkgaWRzCiAgICBlbHNpZiAoCiAgICAgICAgZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRHN9CiAgICAgICAgJiYgcmVmICRQYXJhbXtDYXRlZ29yeUlEc30gZXEgJ0FSUkFZJwogICAgICAgICYmIEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBpbnRlZ2VyIHF1b3RlIHRoZSBjYXRlZ29yeSBpZHMKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkQ2F0ZWdvcnlJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBzdHJpbmcKICAgICAgICBteSAkSW5TdHJpbmcgPSBqb2luICcsICcsIEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfTsKCiAgICAgICAgJEV4dCA9ICcgQU5EIGlkIElOICgnIC4gJEluU3RyaW5nIC4gJyknOwogICAgfQoKICAgICMgT1JERVIgQlkKICAgIGlmICggJFBhcmFte09yZGVyQnl9ICkgewogICAgICAgICRFeHQgLj0gIiBPUkRFUiBCWSBuYW1lIjsKCiAgICAgICAgIyBzZXQgdGhlIGRlZmF1bHQgc29ydCBvcmRlcgogICAgICAgICRQYXJhbXtTb3J0Qnl9IHx8PSAndXAnOwoKICAgICAgICAjIFNPUlQKICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICkgewogICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9IGVxICd1cCcgKSB7CiAgICAgICAgICAgICAgICAkRXh0IC49ICIgQVNDIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRQYXJhbXtTb3J0Qnl9IGVxICdkb3duJyApIHsKICAgICAgICAgICAgICAgICRFeHQgLj0gIiBERVNDIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIFNRTCBTVEFURU1FTlQKICAgICRTUUwgLj0gJEV4dDsKCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gNTAwLAogICAgKTsKCiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBATGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gXEBMaXN0Owp9Cgo9aXRlbSBDYXRlZ29yeUdldCgpCgpnZXQgYSBjYXRlZ29yeSBhcyBoYXNoCgogICAgbXkgJUNhdGVnb3J5ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVDYXRlZ29yeSA9ICgsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAyLAogICAgICAgIFBhcmVudElEICAgPT4gMCwKICAgICAgICBOYW1lICAgICAgID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgQ29tbWVudCAgICA9PiAnVGhpcyBpcyBteSBmaXJzdCBjYXRlZ29yeS4nLAogICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2F0ZWdvcnlJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdDYXRlZ29yeUdldDo6JyAuICRQYXJhbXtDYXRlZ29yeUlEfTsKICAgIG15ICRDYWNoZSAgICA9ICRTZWxmLT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJXskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAjIHNxbAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICdTRUxFQ1QgaWQsIHBhcmVudF9pZCwgbmFtZSwgY29tbWVudHMsIHZhbGlkX2lkIEZST00gZmFxX2NhdGVnb3J5IFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2F0ZWdvcnlJRH0gXSwKICAgICk7CiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFJvd1swXSwKICAgICAgICAgICAgUGFyZW50SUQgICA9PiAkUm93WzFdLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRSb3dbMl0sCiAgICAgICAgICAgIENvbW1lbnQgICAgPT4gJFJvd1szXSwKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAkUm93WzRdLAogICAgICAgICk7CiAgICB9CgogICAgIyBjYWNoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAyLAogICAgKTsKCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIENhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoKQoKZ2V0IGFsbCBzdWJjYXRlZ29yeSBpZHMgb2Ygb2YgYSBjYXRlZ29yeQoKICAgIG15ICRTdWJDYXRlZ29yeUlEQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgIFBhcmVudElEICAgICA9PiAxLAogICAgICAgIE1vZGUgICAgICAgICA9PiAnUHVibGljJywgIyAoQWdlbnQsIEN1c3RvbWVyLCBQdWJsaWMpCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd0dCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3ViQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgIDMsCiAgICAgICAgNCwKICAgICAgICA1LAogICAgICAgIDYsCiAgICBdOwoKPWN1dAoKc3ViIENhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFBhcmVudElEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENhdGVnb3JpZXMgPSB7fTsKCiAgICBpZiAoICRQYXJhbXtNb2RlfSAmJiAkUGFyYW17TW9kZX0gZXEgJ0FnZW50JyApIHsKCiAgICAgICAgIyBnZXQgYWdlbnRzIGNhdGVnb3JpZXMKICAgICAgICAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17TW9kZX0gJiYgJFBhcmFte01vZGV9IGVxICdDdXN0b21lcicgKSB7CgogICAgICAgICMgZ2V0IGN1c3RvbWVyIGNhdGVnb3JpZXMKICAgICAgICAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAncm8nLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzCiAgICAgICAgJENhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KAogICAgICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgQFN1YkNhdGVnb3J5SURzICAgICA9ICgpOwogICAgbXkgQFRlbXBTdWJDYXRlZ29yeUlEcyA9IGtleXMgJXsgJENhdGVnb3JpZXMtPnsgJFBhcmFte1BhcmVudElEfSB9IH07CiAgICBTVUJDQVRFR09SWUlEOgogICAgd2hpbGUgKEBUZW1wU3ViQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgIyBnZXQgbmV4dCBzdWJjYXRlZ29yeSBpZAogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEID0gc2hpZnQgQFRlbXBTdWJDYXRlZ29yeUlEczsKCiAgICAgICAgIyBhZGQgdG8gcmVzdWx0CiAgICAgICAgcHVzaCBAU3ViQ2F0ZWdvcnlJRHMsICRTdWJDYXRlZ29yeUlEOwoKICAgICAgICAjIGNoZWNrIGlmIHN1YmNhdGVnb3J5IGhhcyBvd24gc3ViY2F0ZWdvcmllcwogICAgICAgIG5leHQgU1VCQ0FURUdPUllJRCBpZiAhJENhdGVnb3JpZXMtPnskU3ViQ2F0ZWdvcnlJRH07CgogICAgICAgICMgYWRkIG5ldyBzdWJjYXRlZ29yaWVzCiAgICAgICAgcHVzaCBAVGVtcFN1YkNhdGVnb3J5SURzLCBrZXlzICV7ICRDYXRlZ29yaWVzLT57JFN1YkNhdGVnb3J5SUR9IH07CiAgICB9CgogICAgIyBzb3J0IHN1YmNhdGVnb3JpZXMgbnVtZXJpY2FsbHkKICAgIEBTdWJDYXRlZ29yeUlEcyA9IHNvcnQgeyAkYSA8PT4gJGIgfSBAU3ViQ2F0ZWdvcnlJRHM7CgogICAgcmV0dXJuIFxAU3ViQ2F0ZWdvcnlJRHM7Cn0KCj1pdGVtIENhdGVnb3J5QWRkKCkKCmFkZCBhIGNhdGVnb3J5CgogICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICBOYW1lICAgICA9PiAnQ2F0ZWdvcnlBJywKICAgICAgICBDb21tZW50ICA9PiAnU29tZSBjb21tZW50JywKICAgICAgICBQYXJlbnRJRCA9PiAyLAogICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEID0gMzQ7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYXRlZ29yeSBjb3VsZCBub3QgYmUgYWRkZWQKCj1jdXQKCnN1YiBDYXRlZ29yeUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgUGFyZW50SUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIHRoYXQgUGFyZW50SUQgaXMgbm90IGFuIGVtcHR5IHN0cmluZyBidXQgbnVtYmVyIDAgaXMgYWxsb3dlZAogICAgaWYgKCAkUGFyYW17UGFyZW50SUR9IGVxICcnICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyZW50SUQgY2Fubm90IGJlIGVtcHR5ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBpbnNlcnQgcmVjb3JkCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGZhcV9jYXRlZ29yeSAnCiAgICAgICAgICAgIC4gJyhuYW1lLCBwYXJlbnRfaWQsIGNvbW1lbnRzLCB2YWxpZF9pZCwgY3JlYXRlZCwgY3JlYXRlZF9ieSwgY2hhbmdlZCwgY2hhbmdlZF9ieSkgJwogICAgICAgICAgICAuICdWQUxVRVMgKCA/LCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtQYXJlbnRJRH0sIFwkUGFyYW17Q29tbWVudH0sIFwkUGFyYW17VmFsaWRJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZ2V0IG5ldyBjYXRlZ29yeSBpZAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfY2F0ZWdvcnkgV0hFUkUgbmFtZSA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICApOwogICAgbXkgJENhdGVnb3J5SUQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDYXRlZ29yeUlEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIGxvZyBub3RpY2UKICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgIE1lc3NhZ2UgID0+ICJGQVFDYXRlZ29yeTogJyRQYXJhbXtOYW1lfScgQ2F0ZWdvcnlJRDogJyRDYXRlZ29yeUlEJyAiCiAgICAgICAgICAgIC4gImNyZWF0ZWQgc3VjY2Vzc2Z1bGx5ICgkUGFyYW17VXNlcklEfSkhIiwKICAgICk7CgogICAgcmV0dXJuICRDYXRlZ29yeUlEOwp9Cgo9aXRlbSBDYXRlZ29yeVVwZGF0ZSgpCgp1cGRhdGUgYSBjYXRlZ29yeQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlVcGRhdGUoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAyLAogICAgICAgIFBhcmVudElEICAgPT4gMSwKICAgICAgICBOYW1lICAgICAgID0+ICdTb21lIENhdGVnb3J5JywKICAgICAgICBDb21tZW50ICAgID0+ICdzb21lIGNvbW1lbnQnLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYXRlZ29yeSBjb3VsZCBub3QgYmUgdXBkYXRlZAoKPWN1dAoKc3ViIENhdGVnb3J5VXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBQYXJlbnRJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoYXQgUGFyZW50SUQgaXMgbm90IGFuIGVtcHR5IHN0cmluZyBidXQgbnVtYmVyIDAgaXMgYWxsb3dlZAogICAgaWYgKCAkUGFyYW17UGFyZW50SUR9IGVxICcnICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyZW50SUQgY2Fubm90IGJlIGVtcHR5ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAnVVBEQVRFIGZhcV9jYXRlZ29yeSBTRVQgJwogICAgICAgICAgICAuICdwYXJlbnRfaWQgPSA/LCBuYW1lID0gPywgJwogICAgICAgICAgICAuICdjb21tZW50cyA9ID8sIHZhbGlkX2lkID0gPywgY2hhbmdlZCA9IGN1cnJlbnRfdGltZXN0YW1wLCAnCiAgICAgICAgICAgIC4gJ2NoYW5nZWRfYnkgPSA/IFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17UGFyZW50SUR9LCBcJFBhcmFte05hbWV9LAogICAgICAgICAgICBcJFBhcmFte0NvbW1lbnR9LCAgXCRQYXJhbXtWYWxpZElEfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBsb2cgbm90aWNlCiAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICBNZXNzYWdlICA9PiAiRkFRQ2F0ZWdvcnk6ICckUGFyYW17TmFtZX0nICIKICAgICAgICAgICAgLiAiSUQ6ICckUGFyYW17Q2F0ZWdvcnlJRH0nIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5ICgkUGFyYW17VXNlcklEfSkhIiwKICAgICk7CgogICAgIyBkZWxldGUgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdDYXRlZ29yeUdldDo6JyAuICRQYXJhbXtDYXRlZ29yeUlEfTsKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENhdGVnb3J5RHVwbGljYXRlQ2hlY2soKQoKY2hlY2sgYSBjYXRlZ29yeSBmb3IgZHVwbGljYXRlIG5hbWUgdW5kZXIgdGhlIHNhbWUgcGFyZW50CgogICAgbXkgJEV4aXN0cyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RHVwbGljYXRlQ2hlY2soCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1NvbWUgTmFtZScsCiAgICAgICAgUGFyZW50SUQgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRFeGlzdHMgPSAxOyAgICAgICAgICAgICAgICAjIGlmIGNhdGVnb3J5IG5hbWUgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGUgc2FtZSBwYXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAgaWYgdGhlIG5hbWUgZG9lcyBub3QgZXhpc3RzIHdpdGggdGhlIHNhbWUgcGFyZW50Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlEdXBsaWNhdGVDaGVjayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdHMKICAgICRQYXJhbXtDYXRlZ29yeUlEfSB8fD0gMDsKICAgICRQYXJhbXtQYXJlbnRJRH0gICB8fD0gMDsKCiAgICAjIGRiIHF1b3RlCiAgICAkUGFyYW17TmFtZX0gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXtOYW1lfSApIHx8ICcnOwogICAgJFBhcmFte0NhdGVnb3J5SUR9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17Q2F0ZWdvcnlJRH0sICdJbnRlZ2VyJyApOwogICAgJFBhcmFte1BhcmVudElEfSAgID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17UGFyZW50SUR9LCAgICdJbnRlZ2VyJyApOwoKICAgICMgYnVpbGQgc3FsCiAgICBteSAkU1FMID0gJ1NFTEVDVCBpZCBGUk9NIGZhcV9jYXRlZ29yeSBXSEVSRSAnOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkU1FMIC49ICJuYW1lID0gJyRQYXJhbXtOYW1lfScgQU5EIHBhcmVudF9pZCA9ICRQYXJhbXtQYXJlbnRJRH0gIjsKICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICAgICAkU1FMIC49ICJBTkQgaWQgIT0gJFBhcmFte0NhdGVnb3J5SUR9IjsKICAgICAgICB9CiAgICB9CgogICAgIyBwcmVwYXJlIHNxbCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRXhpc3RzID0gMTsKICAgIH0KCiAgICByZXR1cm4gJEV4aXN0czsKfQoKPWl0ZW0gQ2F0ZWdvcnlDb3VudCgpCgpDb3VudCB0aGUgbnVtYmVyIG9mIGNhdGVnb3JpZXMuCgogICAgbXkgJENhdGVnb3J5Q291bnQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUNvdW50KAogICAgICAgIFBhcmVudElEcyA9PiBbIDEsIDIsIDMsIDQgXSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUNvdW50ID0gNjsKCj1jdXQKCnN1YiBDYXRlZ29yeUNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17UGFyZW50SURzfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUGFyZW50SURzIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBidWlsZCBTUUwKICAgIG15ICRTUUwgPSAnU0VMRUNUIENPVU5UKCopIEZST00gZmFxX2NhdGVnb3J5IFdIRVJFIHZhbGlkX2lkID0gMSc7CgogICAgIyBwYXJlbnQgaWRzIGFyZSBnaXZlbgogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJlbnRJRHN9ICkgewoKICAgICAgICAjIGludGVnZXIgcXVvdGUgdGhlIHBhcmVudCBpZHMKICAgICAgICBmb3IgbXkgJFBhcmVudElEICggQHsgJFBhcmFte1BhcmVudElEc30gfSApIHsKICAgICAgICAgICAgJFBhcmVudElEID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyZW50SUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiAnLCAnLCBAeyAkUGFyYW17UGFyZW50SURzfSB9OwoKICAgICAgICAkU1FMIC49ICcgQU5EIHBhcmVudF9pZCBJTiAoJyAuICRJblN0cmluZyAuICcpJzsKICAgIH0KCiAgICAjIGFkZCBncm91cCBieQogICAgJFNRTCAuPSAnIEdST1VQIEJZIHBhcmVudF9pZCc7CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDIwMCwKICAgICk7CgogICAgbXkgJENvdW50ID0gMDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ID0gJFJvd1swXTsKICAgIH0KICAgIHJldHVybiAkQ291bnQ7Cn0KCj1pdGVtIENhdGVnb3J5VHJlZUxpc3QoKQoKZ2V0IGFsbCBjYXRlZ29yaWVzIGFzIHRyZWUgKHdpdGggdGhlaXIgbG9uZyBuYW1lcykKCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwgICMgKDB8MSwgb3B0aW9uYWwpCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlUcmVlID0gewogICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICAzID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgICAgIDQgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQicsCiAgICB9OwoKPWN1dAoKc3ViIENhdGVnb3J5VHJlZUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQKICAgIG15ICRWYWxpZCA9IDA7CiAgICBpZiAoICRQYXJhbXtWYWxpZH0gKSB7CiAgICAgICAgJFZhbGlkID0gJFBhcmFte1ZhbGlkfTsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBpZiAoICRTZWxmLT57Q2FjaGV9LT57R2V0Q2F0ZWdvcnlUcmVlfS0+eyRWYWxpZH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57R2V0Q2F0ZWdvcnlUcmVlfS0+eyRWYWxpZH07CiAgICB9CgogICAgIyBidWlsZCBzcWwKICAgIG15ICRTUUwgPSAnU0VMRUNUIGlkLCBwYXJlbnRfaWQsIG5hbWUgRlJPTSBmYXFfY2F0ZWdvcnknOwoKICAgICMgYWRkIHdoZXJlIGNsYXVzZSBmb3IgdmFsaWQgY2F0ZWdvcmllcwogICAgaWYgKCRWYWxpZCkgewogICAgICAgICRTUUwgLj0gJyBXSEVSRSB2YWxpZF9pZCA9IDEnOwogICAgfQoKICAgICMgcHJlcGFyZSBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICRTUUwsCiAgICApOwoKICAgICMgZmV0Y2ggcmVzdWx0CiAgICBteSAlQ2F0ZWdvcnlNYXA7CiAgICBteSAlQ2F0ZWdvcnlOYW1lTG9va3VwOwogICAgbXkgJVBhcmVudElETG9va3VwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ2F0ZWdvcnlNYXB7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSAkUm93WzJdOwogICAgICAgICRDYXRlZ29yeU5hbWVMb29rdXB7ICRSb3dbMF0gfSAgICAgICA9ICRSb3dbMl07CiAgICAgICAgJFBhcmVudElETG9va3VweyAkUm93WzBdIH0gICAgICAgICAgID0gJFJvd1sxXTsKICAgIH0KCiAgICAjIHRvIHN0b3JlIHRoZSBjYXRlZ29yeSB0cmVlCiAgICBteSAlQ2F0ZWdvcnlUcmVlOwoKICAgICMgY2hlY2sgYWxsIHBhcmVudCBpZHMKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlQ2F0ZWdvcnlNYXAgKSB7CgogICAgICAgICMgZ2V0IHN1YmNhdGVnb3JpZXMgYW5kIG5hbWVzIGZvciB0aGlzIHBhcmVudCBpZAogICAgICAgIHdoaWxlICggbXkgKCAkQ2F0ZWdvcnlJRCwgJENhdGVnb3J5TmFtZSApID0gZWFjaCAleyAkQ2F0ZWdvcnlNYXB7JFBhcmVudElEfSB9ICkgewoKICAgICAgICAgICAgIyBsb29rdXAgdGhlIHBhcmVudHMgbmFtZQogICAgICAgICAgICBteSAkTmV3UGFyZW50SUQgPSAkUGFyZW50SUQ7CiAgICAgICAgICAgIHdoaWxlICgkTmV3UGFyZW50SUQpIHsKCiAgICAgICAgICAgICAgICAjIHByZWFwZW5kIHBhcmVudHMgY2F0ZWdvcnkgbmFtZQogICAgICAgICAgICAgICAgaWYgKCAkQ2F0ZWdvcnlOYW1lTG9va3VweyROZXdQYXJlbnRJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENhdGVnb3J5TmFtZSA9ICRDYXRlZ29yeU5hbWVMb29rdXB7JE5ld1BhcmVudElEfSAuICc6OicgLiAkQ2F0ZWdvcnlOYW1lOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZ2V0IHVwIG9uZSBwYXJlbnQgbGV2ZWwKICAgICAgICAgICAgICAgICROZXdQYXJlbnRJRCA9ICRQYXJlbnRJRExvb2t1cHskTmV3UGFyZW50SUR9IHx8IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGNhdGVnb3J5IHRvIHRyZWUKICAgICAgICAgICAgJENhdGVnb3J5VHJlZXskQ2F0ZWdvcnlJRH0gPSAkQ2F0ZWdvcnlOYW1lOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+e0dldENhdGVnb3J5VHJlZX0tPnskVmFsaWR9ID0gXCVDYXRlZ29yeVRyZWU7CgogICAgcmV0dXJuIFwlQ2F0ZWdvcnlUcmVlOwp9Cgo9aXRlbSBDYXRlZ29yeUdyb3VwR2V0KCkKCmdldCBncm91cHMgb2YgYSBjYXRlZ29yeQoKICAgIG15ICRHcm91cEFycmF5UmVmID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHcm91cEdldCgKICAgICAgICBDYXRlZ29yeUlEID0+IDMsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEdyb3VwQXJyYXlSZWYgPSBbCiAgICAgICAgMiwKICAgICAgICA5LAogICAgICAgIDEwLAogICAgXTsKCj1jdXQKCnN1YiBDYXRlZ29yeUdyb3VwR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBncm91cHMKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAnU0VMRUNUIGdyb3VwX2lkIEZST00gZmFxX2NhdGVnb3J5X2dyb3VwIFdIRVJFIGNhdGVnb3J5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2F0ZWdvcnlJRH0gXSwKICAgICk7CiAgICBteSBAR3JvdXBzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBHcm91cHMsICRSb3dbMF07CiAgICB9CiAgICByZXR1cm4gXEBHcm91cHM7Cn0KCj1pdGVtIENhdGVnb3J5R3JvdXBHZXRBbGwoKQoKZ2V0IGFsbCBjYXRlZ29yeS1ncm91cHMKCiAgICBteSAkQWxsQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdyb3VwR2V0QWxsKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEFsbENhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4gewogICAgICAgICAgICAyICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDIgID0+IDEsCiAgICAgICAgICAgIDkgID0+IDEsCiAgICAgICAgICAgIDEwID0+IDEsCiAgICAgICAgfSwKICAgICAgICAzID0+IHsKICAgICAgICAgICAgMiAgPT4gMSwKICAgICAgICAgICAgOSAgPT4gMSwKICAgICAgICAgICAgMTAgPT4gMSwKICAgICAgICB9LAogICAgICAgIDQgPT4gewogICAgICAgICAgICAxICA9PiAxLAogICAgICAgICAgICAyICA9PiAxLAogICAgICAgICAgICAzICA9PiAxLAogICAgICAgICAgICA0ICA9PiAxLAogICAgICAgICAgICA1ICA9PiAxLAogICAgICAgICAgICA5ICA9PiAxLAogICAgICAgICAgICAxMCA9PiAxLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIENhdGVnb3J5R3JvdXBHZXRBbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIGlmICggJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfTsKICAgIH0KCiAgICAjIGdldCBncm91cHMKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgZ3JvdXBfaWQsIGNhdGVnb3J5X2lkIEZST00gZmFxX2NhdGVnb3J5X2dyb3VwJywKICAgICk7CiAgICBteSAlR3JvdXBzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkR3JvdXBzeyAkUm93WzFdIH0tPnsgJFJvd1swXSB9ID0gMTsKICAgIH0KCiAgICAjIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5R3JvdXBHZXRBbGx9ID0gXCVHcm91cHM7CgogICAgcmV0dXJuIFwlR3JvdXBzOwp9Cgo9aXRlbSBDYXRlZ29yeURlbGV0ZSgpCgpEZWxldGUgYSBjYXRlZ29yeS4KCiAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgIENhdGVnb3J5SUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBEZWxldGVTdWNjZXNzID0gMTsgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgY2F0ZWdvcnkgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBDYXRlZ29yeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXR0cmlidXRlISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgdGhlIGNhdGVnb3J5CiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfY2F0ZWdvcnkgV0hFUkUgaWQgPSA/ICcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2F0ZWdvcnlJRH0gXSwKICAgICk7CgogICAgIyBkZWxldGUgdGhlIGNhdGVnb3J5IGdyb3VwcwogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZmFxX2NhdGVnb3J5X2dyb3VwIFdIRVJFIGNhdGVnb3J5X2lkID0gPyAnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBLZXl3b3JkTGlzdCgpCgpnZXQgYSBsaXN0IG9mIGtleXdvcmRzIGFzIGEgaGFzaCwgd2l0aCB0aGVpciBjb3VudCBhcyB0aGUgdmFsdWU6CgogICAgbXkgJUtleXdvcmRzID0gJEZBUU9iamVjdC0+S2V5d29yZExpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlS2V5d29yZHMgPSAoCiAgICAgICAgICAnbWFjb3N4JyAgID0+IDgsCiAgICAgICAgICAndWJ1bnR1JyAgID0+IDEsCiAgICAgICAgICAnb3V0bG9vaycgID0+IDIsCiAgICAgICAgICAnd2luZG93cycgID0+IDMsCiAgICAgICAgICAnZXhjaGFuZ2UnID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIEtleXdvcmRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0CiAgICBteSAkVmFsaWQgPSAwOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtWYWxpZH0gKSB7CiAgICAgICAgJFZhbGlkID0gJFBhcmFte1ZhbGlkfTsKICAgIH0KCiAgICAjIGdldCBrZXl3b3JkcyBmcm9tIGRiCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGZfa2V5d29yZHMgRlJPTSBmYXFfaXRlbScsCiAgICApOwogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICBteSAkS2V5d29yZExpc3QgPSBsYyAkUm93WzBdOwoKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKCBzcGxpdCAvLC8sICRLZXl3b3JkTGlzdCApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIGxlYWRpbmcvdGFpbGluZyBzcGFjZXMKICAgICAgICAgICAgJEtleXdvcmQgPX4gc3sgXEEgXHMrIH17fXhtc2c7CiAgICAgICAgICAgICRLZXl3b3JkID1+IHN7IFxzKyBceiB9e314bXNnOwoKICAgICAgICAgICAgIyBpbmNyZWFzZSBrZXl3b3JkIGNvdW50ZXIKICAgICAgICAgICAgJERhdGF7JEtleXdvcmR9Kys7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWl0ZW0gU3RhdGVUeXBlTGlzdCgpCgpnZXQgdGhlIHN0YXRlIHR5cGUgbGlzdCBhcyBoYXNocmVmCgogICAgbXkgJFN0YXRlVHlwZUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN0YXRlVHlwZUhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiAnaW50ZXJuYWwnLAogICAgICAgIDMgPT4gJ3B1YmxpYycsCiAgICAgICAgMiA9PiAnZXh0ZXJuYWwnLAogICAgfTsKCj1jdXQKCnN1YiBTdGF0ZVR5cGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICdTRUxFQ1QgaWQsIG5hbWUgRlJPTSBmYXFfc3RhdGVfdHlwZSc7CgogICAgIyB0eXBlcyBhcmUgZ2l2ZW4KICAgIGlmICggJFBhcmFte1R5cGVzfSApIHsKCiAgICAgICAgIyBjb3B5ICRQYXJhbXtUeXBlc30gdG8gYSBsb2NhbCB2YWx1ZSBzaW5jZSBpdCB3aWxsIGJlIGNoYW5nZWQsIGlmIHRoZSByZWZlcmVuY2UgdmFsdWUgaXMKICAgICAgICAjIGNoYW5nZWQgaXQgd2lsbCBicmluZyBzaWRlIGVmZmVjdHMKICAgICAgICBteSBAVHlwZXMgPSBAeyAkUGFyYW17VHlwZXN9IH07CgogICAgICAgICMgcXVvdGUgdGhlIHR5cGVzIGFuZCBhZGQgc2luZ2xlIHF1b3RlcyBhcm91bmQgdGhlbQogICAgICAgIGZvciBteSAkVHlwZSAoQFR5cGVzKSB7CiAgICAgICAgICAgICRUeXBlID0gIiciIC4gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCRUeXBlKSAuICInIjsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIG15ICRJblN0cmluZyA9IGpvaW4gJywgJywgQFR5cGVzOwogICAgICAgICRTUUwgLj0gJyBXSEVSRSBuYW1lIElOICgnIC4gJEluU3RyaW5nIC4gJyknOwogICAgfQoKICAgICMgcHJlcGFyZSBTUUwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuIFwlTGlzdDsKfQoKPWl0ZW0gU3RhdGVMaXN0KCkKCmdldCB0aGUgc3RhdGUgbGlzdCBhcyBoYXNoCgogICAgbXkgJVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVTdGF0ZXMgPSAoCiAgICAgICAgMSA9PiAnaW50ZXJuYWwgKGFnZW50KScsCiAgICAgICAgMiA9PiAnZXh0ZXJuYWwgKGN1c3RvbWVyKScsCiAgICAgICAgMyA9PiAncHVibGljIChhbGwpJywKICAgICk7Cgo9Y3V0CgpzdWIgU3RhdGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNxbAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSggU1FMID0+ICdTRUxFQ1QgaWQsIG5hbWUgRlJPTSBmYXFfc3RhdGUnICk7CiAgICBteSAlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CiAgICByZXR1cm4gJUxpc3Q7Cn0KCj1pdGVtIFN0YXRlVXBkYXRlKCkKCnVwZGF0ZSBhIHN0YXRlCgogICAgbXkgU3VjY2VzcyA9ICRGQVFPYmplY3QtPlN0YXRlVXBkYXRlKAogICAgICAgIFN0YXRlSUQgPT4gMSwKICAgICAgICBOYW1lICAgID0+ICdwdWJsaWMnLAogICAgICAgIFR5cGVJRCAgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBTdWNjZXNzID0gMTsgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBzdGF0ZSBjb3VsZCBub3QgYmUgdXBkYXRlZAoKPWN1dAoKc3ViIFN0YXRlVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFN0YXRlSUQgTmFtZSBUeXBlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNxbAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMICA9PiAnVVBEQVRFIGZhcV9zdGF0ZSBTRVQgbmFtZSA9ID8sIHR5cGVfaWQgPSA/LCBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9LCBcJFBhcmFte1R5cGVJRH0sIFwkUGFyYW17U3RhdGVJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIFN0YXRlQWRkKCkKCmFkZCBhIHN0YXRlCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5TdGF0ZUFkZCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVHlwZUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBzdGF0ZSBjb3VsZCBub3QgYmUgYWRkZWQKCj1jdXQKCnN1YiBTdGF0ZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFR5cGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCAgPT4gJ0lOU0VSVCBJTlRPIGZhcV9zdGF0ZSAobmFtZSwgdHlwZV9pZCkgVkFMVUVTICggPywgPyApJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtUeXBlSUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBTdGF0ZUdldCgpCgpnZXQgYSBzdGF0ZSBhcyBoYXNoCgogICAgbXkgJVN0YXRlID0gJEZBUU9iamVjdC0+U3RhdGVHZXQoCiAgICAgICAgU3RhdGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVTdGF0ZSA9ICgKICAgICAgICBTdGF0ZUlEID0+IDEsCiAgICAgICAgTmFtZSAgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsCiAgICAgICAgQ29tbWVudCA9PiB1bmRlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU3RhdGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3RhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc3FsCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJ1NFTEVDVCBpZCwgbmFtZSBGUk9NIGZhcV9zdGF0ZSBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N0YXRlSUR9IF0sCiAgICApOwogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICVEYXRhID0gKAogICAgICAgICAgICBTdGF0ZUlEID0+ICRSb3dbMF0sCiAgICAgICAgICAgIE5hbWUgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgQ29tbWVudCA9PiAkUm93WzJdLAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIFN0YXRlVHlwZUdldCgpCgpnZXQgYSBzdGF0ZSBhcyBoYXNocmVmCgogICAgbXkgJFN0YXRlVHlwZUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgU3RhdGVJRCA9PiAxLCAjIG9yCiAgICAgICAgTmFtZSAgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdGF0ZVR5cGVIYXNoUmVmID0gewogICAgICAgICdTdGF0ZUlEJyA9PiAxLAogICAgICAgICdOYW1lJyAgICA9PiAnaW50ZXJuYWwnLAogICAgfTsKCj1jdXQKCnN1YiBTdGF0ZVR5cGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRTUUwgPSAnU0VMRUNUIGlkLCBuYW1lIEZST00gZmFxX3N0YXRlX3R5cGUgV0hFUkUgJzsKICAgIG15IEBCaW5kOwogICAgbXkgJENhY2hlS2V5ID0gJ1N0YXRlVHlwZUdldDo6JzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17U3RhdGVJRH0gKSB7CiAgICAgICAgJFNRTCAuPSAnaWQgPSA/JzsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte1N0YXRlSUR9OwogICAgICAgICRDYWNoZUtleSAuPSAnSUQ6OicgLiAkUGFyYW17U3RhdGVJRH07CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICkgewogICAgICAgICRTUUwgLj0gJ25hbWUgPSA/JzsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte05hbWV9OwogICAgICAgICRDYWNoZUtleSAuPSAnTmFtZTo6JyAuICRQYXJhbXtOYW1lfTsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGUgPSAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICRDYWNoZSBpZiAkQ2FjaGU7CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAkU1FMLAogICAgICAgIEJpbmQgPT4gXEBCaW5kLAogICAgKTsKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgU3RhdGVJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBOYW1lICAgID0+ICRSb3dbMV0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNhY2hlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPlNldCgKICAgICAgICBUeXBlICA9PiAnRkFRJywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDIsCiAgICApOwoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtIExhbmd1YWdlTGlzdCgpCgpnZXQgdGhlIGxhbmd1YWdlIGxpc3QgYXMgaGFzaAoKICAgIG15ICVMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlTGFuZ3VhZ2VzID0gKAogICAgICAgIDEgPT4gJ2VuJywKICAgICAgICAyID0+ICdkZScsCiAgICAgICAgMyA9PiAnZXMnLAogICAgKTsKCj1jdXQKCnN1YiBMYW5ndWFnZUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYnVpbGQgc3FsCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBuYW1lIEZST00gZmFxX2xhbmd1YWdlJywKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuICVMaXN0Owp9Cgo9aXRlbSBMYW5ndWFnZVVwZGF0ZSgpCgp1cGRhdGUgYSBsYW5ndWFnZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VVcGRhdGUoCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgICAgIE5hbWUgICAgICAgPT4gJ2RlJywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBsYW5ndWFnZSBjb3VsZCBub3QgYmUgdXBkYXRlZAoKPWN1dAoKc3ViIExhbmd1YWdlVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExhbmd1YWdlSUQgTmFtZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgc3FsCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgID0+ICdVUERBVEUgZmFxX2xhbmd1YWdlIFNFVCBuYW1lID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9LCBcJFBhcmFte0xhbmd1YWdlSUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBMYW5ndWFnZUR1cGxpY2F0ZUNoZWNrKCkKCmNoZWNrIGEgbGFuZ3VhZ2UKCiAgICBteSAkRXhpc3RzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VEdXBsaWNhdGVDaGVjaygKICAgICAgICBOYW1lICAgICAgID0+ICdTb21lIE5hbWUnLAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwgIyBmb3IgdXBkYXRlCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEV4aXN0cyA9IDE7ICAgICAgICAgICAgICAgICMgaWYgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMsIG9yIDAgaWYgZG9lcyBub3QgZXhpc3QKCj1jdXQKCnN1YiBMYW5ndWFnZUR1cGxpY2F0ZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGRiIHF1b3RlCiAgICAkUGFyYW17TmFtZX0gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXtOYW1lfSApIHx8ICcnOwogICAgJFBhcmFte0xhbmd1YWdlSUR9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17TGFuZ3VhZ2VJRH0sICdJbnRlZ2VyJyApOwoKICAgICMgYnVpbGQgc3FsCiAgICBteSAkU1FMID0gJ1NFTEVDVCBpZCBGUk9NIGZhcV9sYW5ndWFnZSBXSEVSRSAnOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkU1FMIC49ICJuYW1lID0gJyRQYXJhbXtOYW1lfScgIjsKICAgIH0KICAgIGlmICggZGVmaW5lZCAkUGFyYW17TGFuZ3VhZ2VJRH0gKSB7CiAgICAgICAgJFNRTCAuPSAiQU5EIGlkICE9ICckUGFyYW17TGFuZ3VhZ2VJRH0nICI7CiAgICB9CgogICAgIyBwcmVwYXJlIHNxbCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRXhpc3RzID0gMTsKICAgIH0KCiAgICByZXR1cm4gJEV4aXN0czsKfQoKPWl0ZW0gTGFuZ3VhZ2VBZGQoKQoKYWRkIGEgbGFuZ3VhZ2UKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlQWRkKAogICAgICAgIE5hbWUgICA9PiAnU29tZSBDYXRlZ29yeScsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBsYW5ndWFnZSBjb3VsZCBub3QgYmUgYWRkZWQKCj1jdXQKCnN1YiBMYW5ndWFnZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMICA9PiAnSU5TRVJUIElOVE8gZmFxX2xhbmd1YWdlIChuYW1lKSBWQUxVRVMgKD8pJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOYW1lfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gTGFuZ3VhZ2VHZXQoKQoKZ2V0IGEgbGFuZ3VhZ2UgYXMgaGFzaAoKICAgIG15ICVMYW5ndWFnZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlR2V0KAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlTGFuZ3VhZ2UgPSAoCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAnMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnZW4nLAogICAgKTsKCj1jdXQKCnN1YiBMYW5ndWFnZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhMYW5ndWFnZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAnU0VMRUNUIGlkLCBuYW1lIEZST00gZmFxX2xhbmd1YWdlIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TGFuZ3VhZ2VJRH0gXSwKICAgICk7CiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJFJvd1swXSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkUm93WzFdLAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIExhbmd1YWdlTG9va3VwKCkKClRoaXMgbWV0aG9kIGRvZXMgYSBsb29rdXAgZm9yIGEgZmFxIGxhbmd1YWdlLgpJZiBhIGxhbmd1YWdlIGlkIGlzIGdpdmVuLCBpdCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBsYW5ndWFnZS4KSWYgdGhlIG5hbWUgb2YgdGhlIGxhbmd1YWdlIGlzIGdpdmVuLCB0aGUgbGFuZ3VhZ2UgaWQgaXMgcmV0dXJuZWQuCgogICAgbXkgJExhbmd1YWdlTmFtZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwKICAgICk7CgogICAgbXkgJExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICBOYW1lID0+ICdlbicsCiAgICApOwoKUmV0dXJuczoKCiAgICAkTGFuZ3VhZ2VOYW1lID0gJ2VuJzsKCiAgICAkTGFuZ3VhZ2VJRCA9IDE7Cgo9Y3V0CgpzdWIgTGFuZ3VhZ2VMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGlmIGJvdGggcGFyYW1ldGVycyBhcmUgZ2l2ZW4KICAgIGlmICggJFBhcmFte0xhbmd1YWdlSUR9ICYmICRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTGFuZ3VhZ2VJRCBvciBOYW1lIC0gbm90IGJvdGghJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGJvdGggcGFyYW1ldGVycyBhcmUgbm90IGdpdmVuCiAgICBpZiAoICEkUGFyYW17TGFuZ3VhZ2VJRH0gJiYgISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTGFuZ3VhZ2VJRCBvciBOYW1lIC0gbm9uZSBpcyBnaXZlbiEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgaWYgTGFuZ3VhZ2VJRCBpcyBhIG51bWJlcgogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gJiYgJFBhcmFte0xhbmd1YWdlSUR9ICF+IG17IFxBIFxkKyBceiB9eG1zICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTGFuZ3VhZ2VJRCBtdXN0IGJlIGEgbnVtYmVyISAoTGFuZ3VhZ2VJRDogJFBhcmFte0xhbmd1YWdlSUR9KSIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBwcmVwYXJlIFNRTCBzdGF0ZW1lbnRzCiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEfSApIHsKICAgICAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgICA9PiAnU0VMRUNUIG5hbWUgRlJPTSBmYXFfbGFuZ3VhZ2UgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0xhbmd1YWdlSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte05hbWV9ICkgewogICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfbGFuZ3VhZ2UgV0hFUkUgbmFtZSA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJExvb2t1cDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExvb2t1cCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRMb29rdXA7Cn0KCj1pdGVtIExhbmd1YWdlRGVsZXRlKCkKCkRlbGV0ZSBhIGxhbmd1YWdlLgoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VEZWxldGUoCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zCgogICAgJERlbGV0ZVN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGxhbmd1YWdlIGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgTGFuZ3VhZ2VEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KExhbmd1YWdlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEF0dHJpYnV0ZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIHRoZSBsYW5ndWFnZQogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZmFxX2xhbmd1YWdlIFdIRVJFIGlkID0gPyAnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0xhbmd1YWdlSUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBGQVFTZWFyY2goKQoKc2VhcmNoIGluIEZBUSBhcnRpY2xlcwoKICAgIG15IEBJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCgogICAgICAgIE51bWJlciAgICA9PiAnKjEzNConLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVGl0bGUgICAgID0+ICcqc29tZSB0aXRsZSonLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgIyBpcyBzZWFyY2hpbmcgaW4gTnVtYmVyLCBUaXRsZSwgS2V5d29yZCBhbmQgRmllbGQxLTYKICAgICAgICBXaGF0ICAgICAgPT4gJypzb21lIHRleHQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBLZXl3b3JkICAgPT4gJyp3ZWJzZXJ2ZXIqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFN0YXRlcyAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIDEgPT4gJ2ludGVybmFsJywKICAgICAgICAgICAgMiA9PiAnZXh0ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gWyA0LCA1LCA2IF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBDYXRlZ29yeUlEcyA9PiBbIDcsIDgsIDkgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBPcmRlckJ5ID0+IFsgJ0ZBUUlEJywgJ1RpdGxlJyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICMgZGVmYXVsdDogWyAnRkFRSUQnIF0sCiAgICAgICAgIyAoRkFRSUQsIE51bWJlciwgVGl0bGUsIExhbmd1YWdlLCBDYXRlZ29yeSwgQ3JlYXRlZCwKICAgICAgICAjIENoYW5nZWQsIFN0YXRlLCBWb3RlcywgUmVzdWx0KQoKICAgICAgICAjIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIE9yZGVyQnk6CiAgICAgICAgIyBUaGUgT3JkZXJCeURpcmVjdGlvbiBjYW4gYmUgc3BlY2lmaWVkIGZvciBlYWNoIE9yZGVyQnkgYXR0cmlidXRlLgogICAgICAgICMgVGhlIHBhaXJpbmcgaXMgbWFkZSBieSB0aGUgYXJyYXkgaW5kZXhlcy4KCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbICdEb3duJywgJ1VwJyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ0Rvd24nIF0KICAgICAgICAjIChEb3duIHwgVXApCgogICAgICAgIExpbWl0ICAgICA9PiAxNTAsCiAgICAgICAgSW50ZXJmYWNlID0+ICdwdWJsaWMnLCAgICAgICMgcHVibGljfGV4dGVybmFsfGludGVybmFsIChkZWZhdWx0IGludGVybmFsKQogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgQElEcyA9ICgKICAgICAgICAzMiwKICAgICAgICAxMywKICAgICAgICAxMiwKICAgICAgICA5LAogICAgICAgIDYsCiAgICAgICAgNSwKICAgICAgICA0LAogICAgICAgIDEsCiAgICApOwoKPWN1dAoKc3ViIEZBUVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2UKICAgIGlmICggISRQYXJhbXtJbnRlcmZhY2V9IHx8ICEkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9ICkgewogICAgICAgICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gPSAnaW50ZXJuYWwnOwogICAgfQoKICAgICMgdmVyaWZ5IHRoYXQgYWxsIHBhc3NlZCBhcnJheSBwYXJhbWV0ZXJzIGNvbnRhaW4gYW4gYXJyYXlyZWYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT3JkZXJCeSBPcmRlckJ5RGlyZWN0aW9uKSkgewoKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkUGFyYW17JEFyZ3VtZW50fSB8fD0gW107CgogICAgICAgICAgICBuZXh0IEFSR1VNRU5UOwogICAgICAgIH0KCiAgICAgICAgaWYgKCByZWYgJFBhcmFteyRBcmd1bWVudH0gbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRBcmd1bWVudCBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIG9yZGVyIHRhYmxlCiAgICBteSAlT3JkZXJCeVRhYmxlID0gKAoKICAgICAgICAjIEZBUSBpdGVtIGF0dHJpYnV0ZXMKICAgICAgICBGQVFJRCAgICA9PiAnaS5pZCcsCiAgICAgICAgTnVtYmVyICAgPT4gJ2kuZl9udW1iZXInLAogICAgICAgIFRpdGxlICAgID0+ICdpLmZfc3ViamVjdCcsCiAgICAgICAgTGFuZ3VhZ2UgPT4gJ2kuZl9sYW5ndWFnZV9pZCcsCiAgICAgICAgQ2F0ZWdvcnkgPT4gJ2kuY2F0ZWdvcnlfaWQnLAogICAgICAgIENyZWF0ZWQgID0+ICdpLmNyZWF0ZWQnLAogICAgICAgIENoYW5nZWQgID0+ICdpLmNoYW5nZWQnLAoKICAgICAgICAjIFN0YXRlIGF0dHJpYnV0ZXMKICAgICAgICBTdGF0ZSA9PiAncy5uYW1lJywKCiAgICAgICAgIyBWb3RlIGF0dHJpYnV0ZXMKICAgICAgICBWb3RlcyAgPT4gJ3ZvdGVzJywKICAgICAgICBSZXN1bHQgPT4gJ3ZyYXRlJywKICAgICk7CgogICAgIyBjaGVjayBpZiBPcmRlckJ5IGNvbnRhaW5zIG9ubHkgdW5pcXVlIHZhbGlkIHZhbHVlcwogICAgbXkgJU9yZGVyQnlTZWVuOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIGlmICggISRPcmRlckJ5IHx8ICEkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ICkgewoKICAgICAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeSBjb250YWlucyBpbnZhbGlkIHZhbHVlICckT3JkZXJCeScgIgogICAgICAgICAgICAgICAgICAgIC4gJ29yIHRoZSB2YWx1ZSBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UKICAgICAgICAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ID0gMTsKCiAgICB9CgogICAgIyBjaGVjayBpZiBPcmRlckJ5RGlyZWN0aW9uIGFycmF5IGNvbnRhaW5zIG9ubHkgJ1VwJyBvciAnRG93bicKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uICggQHsgJFBhcmFte09yZGVyQnlEaXJlY3Rpb259IH0gKSB7CgogICAgICAgICMgb25seSAnVXAnIG9yICdEb3duJyBhbGxvd2VkCiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnVXAnOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICREaXJlY3Rpb24gZXEgJ0Rvd24nOwoKICAgICAgICAjIGZvdW5kIGFuIGVycm9yCiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJPcmRlckJ5RGlyZWN0aW9uIGNhbiBvbmx5IGNvbnRhaW4gJ1VwJyBvciAnRG93bichIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGFzc2VtYmxlIHRoZSBPUkRFUiBCWSBjbGF1c2UKICAgIG15IEBTUUxPcmRlckJ5OwogICAgbXkgJENvdW50ID0gMDsKICAgIGZvciBteSAkT3JkZXJCeSAoIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgewoKICAgICAgICAjIHNldCB0aGUgZGVmYXVsdCBvcmRlciBkaXJlY3Rpb24KICAgICAgICBteSAkRGlyZWN0aW9uID0gJ0RFU0MnOwoKICAgICAgICAjIGFkZCB0aGUgZ2l2ZW4gb3JkZXIgZGlyZWN0aW9uCiAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0tPlskQ291bnRdICkgewogICAgICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gZXEgJ1VwJyApIHsKICAgICAgICAgICAgICAgICREaXJlY3Rpb24gPSAnQVNDJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdERVNDJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgU1FMCiAgICAgICAgcHVzaCBAU1FMT3JkZXJCeSwgIiRPcmRlckJ5VGFibGV7JE9yZGVyQnl9ICREaXJlY3Rpb24iOwogICAgfQogICAgY29udGludWUgewogICAgICAgICRDb3VudCsrOwogICAgfQoKICAgICMgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBvcmRlcmluZyBpcyBub3QgZGV0ZXJtaW5lZAogICAgIyB3ZSBhZGQgYW4gZGVzY2VuZGluZyBvcmRlcmluZyBieSBpZAogICAgaWYgKCAhZ3JlcCB7ICRfIGVxICdGQVFJRCcgfSAoIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgKSB7CiAgICAgICAgcHVzaCBAU1FMT3JkZXJCeSwgIiRPcmRlckJ5VGFibGV7RkFRSUR9IERFU0MiOwogICAgfQoKICAgICMgc3FsCiAgICBteSAkU1FMID0gJ1NFTEVDVCBpLmlkLCBjb3VudCggdi5pdGVtX2lkICkgYXMgdm90ZXMsIGF2Zyggdi5yYXRlICkgYXMgdnJhdGUgJwogICAgICAgIC4gJ0ZST00gZmFxX2l0ZW0gaSAnCiAgICAgICAgLiAnTEVGVCBKT0lOIGZhcV92b3RpbmcgdiBPTiB2Lml0ZW1faWQgPSBpLmlkICcKICAgICAgICAuICdMRUZUIEpPSU4gZmFxX3N0YXRlIHMgT04gcy5pZCA9IGkuc3RhdGVfaWQnOwoKICAgICMgZXh0ZW5kZWQgU1FMCiAgICBteSAkRXh0ID0gJyc7CgogICAgIyBmdWxsdGV4dCBzZWFyY2gKICAgIGlmICggJFBhcmFte1doYXR9ICYmICRQYXJhbXtXaGF0fSBuZSAnKicgKSB7CgogICAgICAgICMgZGVmaW5lIHRoZSBzZWFyY2ggZmllbGRzIGZvciBmdWxsdGV4dCBzZWFyY2gKICAgICAgICBteSBAU2VhcmNoRmllbGRzID0gKCAnaS5mX251bWJlcicsICdpLmZfc3ViamVjdCcsICdpLmZfa2V5d29yZHMnICk7CgogICAgICAgICMgdXNlZCBmcm9tIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGludGVybmFsKQogICAgICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSBlcSAnaW50ZXJuYWwnICkgewoKICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIHN0YXRlIG9mIHRoZSBmaWVsZCAoaW50ZXJuYWwsIGV4dGVybmFsLCBwdWJsaWMpCiAgICAgICAgICAgICAgICBteSAkRmllbGRTdGF0ZSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCAnRkFROjpJdGVtOjpGaWVsZCcgLiAkTnVtYmVyICktPntTaG93fTsKCiAgICAgICAgICAgICAgICAjIGFkZCBhbGwgaW50ZXJuYWwsIGV4dGVybmFsIGFuZCBwdWJsaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEZpZWxkU3RhdGUgZXEgJ2ludGVybmFsJwogICAgICAgICAgICAgICAgICAgIHx8ICRGaWVsZFN0YXRlIGVxICdleHRlcm5hbCcKICAgICAgICAgICAgICAgICAgICB8fCAkRmllbGRTdGF0ZSBlcSAncHVibGljJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hGaWVsZHMsICdpLmZfZmllbGQnIC4gJE51bWJlcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB1c2VkIGZyb20gdGhlIGN1c3RvbWVyIGludGVyZmFjZSAoZXh0ZXJuYWwpCiAgICAgICAgZWxzaWYgKCAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IGVxICdleHRlcm5hbCcgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgc3RhdGUgb2YgdGhlIGZpZWxkIChpbnRlcm5hbCwgZXh0ZXJuYWwsIHB1YmxpYykKICAgICAgICAgICAgICAgIG15ICRGaWVsZFN0YXRlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKS0+e1Nob3d9OwoKICAgICAgICAgICAgICAgICMgYWRkIGFsbCBleHRlcm5hbCBhbmQgcHVibGljIGZpZWxkcwogICAgICAgICAgICAgICAgaWYgKCAkRmllbGRTdGF0ZSBlcSAnZXh0ZXJuYWwnIHx8ICRGaWVsZFN0YXRlIGVxICdwdWJsaWMnICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEZpZWxkcywgJ2kuZl9maWVsZCcgLiAkTnVtYmVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVzZWQgZnJvbSB0aGUgcHVibGljIGludGVyZmFjZSAocHVibGljKQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgc3RhdGUgb2YgdGhlIGZpZWxkIChpbnRlcm5hbCwgZXh0ZXJuYWwsIHB1YmxpYykKICAgICAgICAgICAgICAgIG15ICRGaWVsZFN0YXRlID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKS0+e1Nob3d9OwoKICAgICAgICAgICAgICAgICMgYWRkIGFsbCBwdWJsaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoICRGaWVsZFN0YXRlIGVxICdwdWJsaWMnICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEZpZWxkcywgJ2kuZl9maWVsZCcgLiAkTnVtYmVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgU1FMIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoCiAgICAgICAgJEV4dCAuPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVlcnlDb25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICAgICA9PiBcQFNlYXJjaEZpZWxkcywKICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRQYXJhbXtXaGF0fSwKICAgICAgICAgICAgU2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgU2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICApOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgbnVtYmVyCiAgICBpZiAoICRQYXJhbXtOdW1iZXJ9ICkgewogICAgICAgICRQYXJhbXtOdW1iZXJ9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOdW1iZXJ9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17TnVtYmVyfSwgJ0xpa2UnICk7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gIiBMT1dFUihpLmZfbnVtYmVyKSBMSUtFIExPV0VSKCciIC4gJFBhcmFte051bWJlcn0gLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSB0aXRsZQogICAgaWYgKCAkUGFyYW17VGl0bGV9ICkgewogICAgICAgICRQYXJhbXtUaXRsZX0gPSAiXCUkUGFyYW17VGl0bGV9XCUiOwogICAgICAgICRQYXJhbXtUaXRsZX0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17VGl0bGV9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17VGl0bGV9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKGkuZl9zdWJqZWN0KSBMSUtFIExPV0VSKCciIC4gJFBhcmFte1RpdGxlfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgbGFuZ3VhZ2VzCiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEc30gJiYgcmVmICRQYXJhbXtMYW5ndWFnZUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17TGFuZ3VhZ2VJRHN9IH0gKSB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgbGFuZ3VhZ2UgaWRzCiAgICAgICAgZm9yIG15ICRMYW5ndWFnZUlEICggQHsgJFBhcmFte0xhbmd1YWdlSURzfSB9ICkgewogICAgICAgICAgICAkTGFuZ3VhZ2VJRCA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJExhbmd1YWdlSUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiAnLCAnLCBAeyAkUGFyYW17TGFuZ3VhZ2VJRHN9IH07CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICcgaS5mX2xhbmd1YWdlX2lkIElOICgnIC4gJEluU3RyaW5nIC4gJyknOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBjYXRlZ29yaWVzCiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUlEc30gJiYgcmVmICRQYXJhbXtDYXRlZ29yeUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgY2F0ZWdvcnkgaWRzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJENhdGVnb3J5SUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiAnLCAnLCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH07CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICcgaS5jYXRlZ29yeV9pZCBJTiAoJyAuICRJblN0cmluZyAuICcpJzsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3Igc3RhdGVzCiAgICBpZiAoICRQYXJhbXtTdGF0ZXN9ICYmIHJlZiAkUGFyYW17U3RhdGVzfSBlcSAnSEFTSCcgJiYgJXsgJFBhcmFte1N0YXRlc30gfSApIHsKCiAgICAgICAgIyBpbnRlZ2VyIHF1b3RlIHRoZSBzdGF0ZSBpZHMKICAgICAgICBmb3IgbXkgJFN0YXRlVHlwZUlEICgga2V5cyAleyAkUGFyYW17U3RhdGVzfSB9ICkgewogICAgICAgICAgICAkU3RhdGVUeXBlSUQgPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRTdGF0ZVR5cGVJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBzdHJpbmcKICAgICAgICBteSAkSW5TdHJpbmcgPSBqb2luICcsICcsIGtleXMgJXsgJFBhcmFte1N0YXRlc30gfTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJyBzLnR5cGVfaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGtleXdvcmRzCiAgICBpZiAoICRQYXJhbXtLZXl3b3JkfSApIHsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJFBhcmFte0tleXdvcmR9ID0gIlwlJFBhcmFte0tleXdvcmR9XCUiOwogICAgICAgICRQYXJhbXtLZXl3b3JkfSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17S2V5d29yZH0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte0tleXdvcmR9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17S2V5d29yZH0sICdMaWtlJyApOwoKICAgICAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdOb0xvd2VySW5MYXJnZVRleHQnKSApIHsKICAgICAgICAgICAgJEV4dCAuPSAiIGkuZl9rZXl3b3JkcyBMSUtFICciIC4gJFBhcmFte0tleXdvcmR9IC4gIicgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFNlbGYtPntEQk9iamVjdH0tPkdldERhdGFiYXNlRnVuY3Rpb24oJ0xjYXNlTGlrZUluTGFyZ2VUZXh0JykgKSB7CiAgICAgICAgICAgICRFeHQKICAgICAgICAgICAgICAgIC49ICIgTENBU0UoaS5mX2tleXdvcmRzKSBMSUtFIExDQVNFKCciCiAgICAgICAgICAgICAgICAuICRQYXJhbXtLZXl3b3JkfQogICAgICAgICAgICAgICAgLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkRXh0CiAgICAgICAgICAgICAgICAuPSAiIExPV0VSKGkuZl9rZXl3b3JkcykgTElLRSBMT1dFUignIgogICAgICAgICAgICAgICAgLiAkUGFyYW17S2V5d29yZH0KICAgICAgICAgICAgICAgIC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgb25seSBhcHByb3ZlZCBmYXEgYXJ0aWNsZXMgZm9yIHB1YmxpYyBhbmQgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICBpZiAoICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gZXEgJ3B1YmxpYycgfHwgJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSBlcSAnZXh0ZXJuYWwnICkgewogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICcgaS5hcHByb3ZlZCA9IDEnOwogICAgfQoKICAgICMgYWRkIFdIRVJFIHN0YXRlbWVudAogICAgaWYgKCRFeHQpIHsKICAgICAgICAkRXh0ID0gJyBXSEVSRSAnIC4gJEV4dDsKICAgIH0KCiAgICAjIGFkZCBHUk9VUCBCWQogICAgJEV4dAogICAgICAgIC49ICcgR1JPVVAgQlkgaS5pZCwgaS5mX3N1YmplY3QsIGkuZl9sYW5ndWFnZV9pZCwgaS5jcmVhdGVkLCBpLmNoYW5nZWQsIHMubmFtZSwgdi5pdGVtX2lkICc7CgogICAgIyBhZGQgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgaWYgKEBTUUxPcmRlckJ5KSB7CiAgICAgICAgJEV4dCAuPSAnT1JERVIgQlkgJzsKICAgICAgICAkRXh0IC49IGpvaW4gJywgJywgQFNRTE9yZGVyQnk7CiAgICAgICAgJEV4dCAuPSAnICc7CiAgICB9CgogICAgIyBhZGQgZXh0ZW5kZWQgU1FMCiAgICAkU1FMIC49ICRFeHQ7CgogICAgIyBhc2sgZGF0YWJhc2UKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9IHx8IDUwMAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBMaXN0LCAkUm93WzBdOwogICAgfQogICAgcmV0dXJuIEBMaXN0Owp9Cgo9aXRlbSBGQVFQYXRoTGlzdEdldCgpCgpyZXR1cm5zIGEgY2F0ZWdvcnkgYXJyYXkgcmVmZXJlbmNlCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkZBUVBhdGhMaXN0R2V0KAogICAgICAgIENhdGVnb3J5SUQgPT4gMTUwLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICcyJywKICAgICAgICAgICAgUGFyZW50SUQgPT4gJzAnLAogICAgICAgICAgICBOYW1lID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ015IEZpcnN0IENhdGVnb3J5JywKICAgICAgICAgICAgVmFsaWRJRCA9PiAnMScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJzQnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAnMicsCiAgICAgICAgICAgIE5hbWUgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICAgICAgQ29tbWVudCA9PiAnVGhpcyBJcyBDYXRlZ29yeSBBJywKICAgICAgICAgICAgVmFsaWRJRCA9PiAnMScsCiAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgRkFRUGF0aExpc3RHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15IEBDYXRlZ29yeUxpc3QgICA9ICgpOwogICAgbXkgJFRlbXBDYXRlZ29yeUlEID0gJFBhcmFte0NhdGVnb3J5SUR9OwogICAgd2hpbGUgKCRUZW1wQ2F0ZWdvcnlJRCkgewogICAgICAgIG15ICVEYXRhID0gJFNlbGYtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRUZW1wQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICglRGF0YSkgewogICAgICAgICAgICBwdXNoIEBDYXRlZ29yeUxpc3QsIFwlRGF0YTsKICAgICAgICB9CiAgICAgICAgJFRlbXBDYXRlZ29yeUlEID0gJERhdGF7UGFyZW50SUR9OwogICAgfQogICAgQENhdGVnb3J5TGlzdCA9IHJldmVyc2UoQENhdGVnb3J5TGlzdCk7CgogICAgcmV0dXJuIFxAQ2F0ZWdvcnlMaXN0OwoKfQoKPWl0ZW0gU2V0Q2F0ZWdvcnlHcm91cCgpCgpzZXQgZ3JvdXBzIHRvIGEgY2F0ZWdvcnkKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAzLAogICAgICAgIEdyb3VwSURzICAgPT4gWyAyLDQsMSw1LDc3IF0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgZ3JvdXBzIGNvdWxkIG5vdCBiZSBzZXQgdG8gYSBjYXRlZ29yeQoKPWN1dAoKc3ViIFNldENhdGVnb3J5R3JvdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBHcm91cElEcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIG9sZCBncm91cHMKICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cCBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgICMgaW5zZXJ0IGdyb3VwcwogICAgJFBhcmFte0NhdGVnb3J5SUR9ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17Q2F0ZWdvcnlJRH0sICdJbnRlZ2VyJyApOwogICAgZm9yIG15ICRHcm91cElEICggQHsgJFBhcmFte0dyb3VwSURzfSB9ICkgewoKICAgICAgICAjIGRiIHF1b3RlCiAgICAgICAgJEdyb3VwSUQgPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRHcm91cElELCAnSW50ZWdlcicgKTsKCiAgICAgICAgbXkgJFNRTCA9ICJJTlNFUlQgSU5UTyBmYXFfY2F0ZWdvcnlfZ3JvdXAgIiAuCiAgICAgICAgICAgICIgKGNhdGVnb3J5X2lkLCBncm91cF9pZCwgY2hhbmdlZCwgY2hhbmdlZF9ieSwgY3JlYXRlZCwgY3JlYXRlZF9ieSkgVkFMVUVTIiAuCiAgICAgICAgICAgICIgKCRQYXJhbXtDYXRlZ29yeUlEfSwgJEdyb3VwSUQsIGN1cnJlbnRfdGltZXN0YW1wLCAkUGFyYW17VXNlcklEfSwgIiAuCiAgICAgICAgICAgICIgY3VycmVudF90aW1lc3RhbXAsICRQYXJhbXtVc2VySUR9KSI7CgogICAgICAgICMgd3JpdGUgYXR0YWNobWVudCB0byBkYgogICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPkRvKCBTUUwgPT4gJFNRTCApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBHZXRVc2VyQ2F0ZWdvcmllcygpCgpnZXQgdXNlciBjYXRlZ29yeS1ncm91cHMKCiAgICBteSAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4ge30sCiAgICAgICAgMCA9PiB7CiAgICAgICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgfSwKICAgICAgICAyID0+IHsKICAgICAgICAgICAgMyA9PiAnU3ViIENhdGVnb3J5IEEnLAogICAgICAgICAgICA0ID0+ICdTdWIgQ2F0ZWdvcnkgQicsCiAgICAgICAgfSwKICAgICAgICAzID0+IHt9LAogICAgICAgIDQgPT4ge30sCiAgICB9OwoKPWN1dAoKc3ViIEdldFVzZXJDYXRlZ29yaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAkQ2F0ZWdvcnlHcm91cHMgPSAkU2VsZi0+Q2F0ZWdvcnlHcm91cEdldEFsbCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwogICAgbXkgJVVzZXJHcm91cHMgPSAoKTsKICAgIGlmICggISRTZWxmLT57Q2FjaGV9LT57R2V0VXNlckNhdGVnb3JpZXN9LT57R3JvdXBNZW1iZXJMaXN0fSApIHsKICAgICAgICAlVXNlckdyb3VwcyA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICAgICApOwogICAgICAgICRTZWxmLT57Q2FjaGV9LT57R2V0VXNlckNhdGVnb3JpZXN9LT57R3JvdXBNZW1iZXJMaXN0fSA9IFwlVXNlckdyb3VwczsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVVc2VyR3JvdXBzID0gJXsgJFNlbGYtPntDYWNoZX0tPntHZXRVc2VyQ2F0ZWdvcmllc30tPntHcm91cE1lbWJlckxpc3R9IH07CiAgICB9CgogICAgbXkgJFVzZXJDYXRlZ29yaWVzID0gJFNlbGYtPl9Vc2VyQ2F0ZWdvcmllcygKICAgICAgICBDYXRlZ29yaWVzICAgICA9PiAkQ2F0ZWdvcmllcywKICAgICAgICBDYXRlZ29yeUdyb3VwcyA9PiAkQ2F0ZWdvcnlHcm91cHMsCiAgICAgICAgVXNlckdyb3VwcyAgICAgPT4gXCVVc2VyR3JvdXBzLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gJFVzZXJDYXRlZ29yaWVzOwp9Cgo9aXRlbSBHZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygpCgpnZXQgdXNlciBjYXRlZ29yeS1ncm91cHMgKHNob3cgY2F0ZWdvcnkgbG9uZyBuYW1lcykKCiAgICBteSAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICAzID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgICAgIDQgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICB9OwoKPWN1dAoKc3ViIEdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJFVzZXJDYXRlZ29yaWVzID0gJFNlbGYtPkdldFVzZXJDYXRlZ29yaWVzKAogICAgICAgIFR5cGUgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHVzZXIgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICVVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lczsKCiAgICAjIGdldCB0aGUgbG9uZyBuYW1lcyBvZiB0aGUgY2F0ZWdvcmllcyB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIFBBUkVOVElEOgogICAgZm9yIG15ICRQYXJlbnRJRCAoIGtleXMgJXskVXNlckNhdGVnb3JpZXN9ICkgewoKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEkVXNlckNhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgcmVmICRVc2VyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gbmUgJ0hBU0gnOwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISV7ICRVc2VyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfTsKCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICgga2V5cyAleyAkVXNlckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lc3skQ2F0ZWdvcnlJRH0gPSAkQ2F0ZWdvcnlUcmVlLT57JENhdGVnb3J5SUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lczsKfQoKPWl0ZW0gR2V0Q3VzdG9tZXJDYXRlZ29yaWVzKCkKCmdldCBjdXN0b21lciB1c2VyIGNhdGVnb3JpZXMKCiAgICBteSAkQ3VzdG9tZXJVc2VyQ2F0ZWdvcnlIYXNoUmVmID0gJEZBUU9iamVjdC0+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+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGV4dHJhY3QgY2F0ZWdvcnkgaWRzCiAgICBteSAlQWxsQ2F0ZWdvcnlJRHMgPSAoKTsKICAgIGZvciBteSAkUGFyZW50SUQgKCBrZXlzICV7JEN1c3RvbWVyQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICgga2V5cyAleyAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkQWxsQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYWxsIGN1c3RvbWVyIGNhdGVnb3J5IGlkcwogICAgbXkgQEN1c3RvbWVyQ2F0ZWdvcnlJRHMgPSAoKTsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIDAsIGtleXMgJUFsbENhdGVnb3J5SURzICkgewogICAgICAgIHB1c2ggQEN1c3RvbWVyQ2F0ZWdvcnlJRHMsIEB7CiAgICAgICAgICAgICRTZWxmLT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgICAgICAgICAgUGFyZW50SUQgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGJ1aWxkIGN1c3RvbWVyIGNhdGVnb3J5IGhhc2gKICAgICRDdXN0b21lckNhdGVnb3JpZXMgPSB7fTsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQEN1c3RvbWVyQ2F0ZWdvcnlJRHMpIHsKICAgICAgICBteSAlQ2F0ZWdvcnkgPSAkU2VsZi0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57ICRDYXRlZ29yeXtQYXJlbnRJRH0gfS0+eyAkQ2F0ZWdvcnl7Q2F0ZWdvcnlJRH0gfSA9ICRDYXRlZ29yeXtOYW1lfTsKICAgIH0KCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHVzZXIgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICVDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXM7CgogICAgIyBnZXQgdGhlIGxvbmcgbmFtZXMgb2YgdGhlIGNhdGVnb3JpZXMgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBrZXlzICV7JEN1c3RvbWVyQ2F0ZWdvcmllc30gKSB7CgogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgcmVmICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IG5lICdIQVNIJzsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEleyAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBrZXlzICV7ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXN7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5VHJlZS0+eyRDYXRlZ29yeUlEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzOwp9Cgo9aXRlbSBHZXRQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzKCkKCmdldCBwdWJsaWMgY2F0ZWdvcnktZ3JvdXBzIChzaG93IGNhdGVnb3J5IGxvbmcgbmFtZXMpCgogICAgbXkgJFB1YmxpY0NhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRQdWJsaWNDYXRlZ29yeUdyb3VwSGFzaFJlZiA9IHsKICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgMyA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgICAgICA0ID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgfTsKCj1jdXQKCnN1YiBHZXRQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcwogICAgbXkgJFB1YmxpY0NhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KCBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0gKTsKCiAgICAjIGV4dHJhY3QgY2F0ZWdvcnkgaWRzCiAgICBteSAlQWxsQ2F0ZWdvcnlJRHMgPSAoKTsKICAgIGZvciBteSAkUGFyZW50SUQgKCBrZXlzICV7JFB1YmxpY0NhdGVnb3JpZXN9ICkgewogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIGtleXMgJXsgJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRBbGxDYXRlZ29yeUlEc3skQ2F0ZWdvcnlJRH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgcHVibGljIGNhdGVnb3J5IGlkcwogICAgbXkgQFB1YmxpY0NhdGVnb3J5SURzID0gKCk7CiAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCAwLCBrZXlzICVBbGxDYXRlZ29yeUlEcyApIHsKICAgICAgICBwdXNoIEBQdWJsaWNDYXRlZ29yeUlEcywgQHsKICAgICAgICAgICAgJFNlbGYtPlB1YmxpY0NhdGVnb3J5U2VhcmNoKAogICAgICAgICAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBNb2RlICAgICA9PiAnUHVibGljJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKQogICAgICAgIH07CiAgICB9CgogICAgIyBidWlsZCBwdWJsaWMgY2F0ZWdvcnkgaGFzaAogICAgJFB1YmxpY0NhdGVnb3JpZXMgPSB7fTsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQFB1YmxpY0NhdGVnb3J5SURzKSB7CiAgICAgICAgbXkgJUNhdGVnb3J5ID0gJFNlbGYtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFB1YmxpY0NhdGVnb3JpZXMtPnsgJENhdGVnb3J5e1BhcmVudElEfSB9LT57ICRDYXRlZ29yeXtDYXRlZ29yeUlEfSB9ID0gJENhdGVnb3J5e05hbWV9OwogICAgfQoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgdXNlciBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJVB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXM7CgogICAgIyBnZXQgdGhlIGxvbmcgbmFtZXMgb2YgdGhlIGNhdGVnb3JpZXMgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBrZXlzICV7JFB1YmxpY0NhdGVnb3JpZXN9ICkgewoKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEkUHVibGljQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH07CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiByZWYgJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9IG5lICdIQVNIJzsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEleyAkUHVibGljQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfTsKCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICgga2V5cyAleyAkUHVibGljQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfSApIHsKICAgICAgICAgICAgJFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXN7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5VHJlZS0+eyRDYXRlZ29yeUlEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlUHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lczsKfQoKPWl0ZW0gQ2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKCkKCmdldCB1c2VyIHBlcm1pc3Npb24gZm9yIGEgY2F0ZWdvcnkKCiAgICBteSAkUGVybWlzc2lvblN0cmluZyA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICBDYXRlZ29yeUlEID0+ICcxMjMnLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRQZXJtaXNzaW9uU3RyaW5nID0gJ3J3JzsgICAgICAgICAgICAgICAjIG9yICdybycgb3IgJycKCj1jdXQKCnN1YiBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRVc2VyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwogICAgZm9yIG15ICRQZXJtaXNzaW9uIChxdyhydyBybykpIHsKICAgICAgICBmb3IgbXkgJFBhcmVudElEICgga2V5cyAleyRVc2VyQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgICAgIG15ICRDYXRlZ29yaWVzID0gJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfTsKICAgICAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICgga2V5cyAleyRDYXRlZ29yaWVzfSApIHsKICAgICAgICAgICAgICAgIGlmICggJENhdGVnb3J5SUQgPT0gJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkUGVybWlzc2lvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAnJzsKfQoKPWl0ZW0gQ2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigpCgpnZXQgY3VzdG9tZXIgdXNlciBwZXJtaXNzaW9uIGZvciBhIGNhdGVnb3J5CgogICAgbXkgJFBlcm1pc3Npb25TdHJpbmcgJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ21tJywKICAgICAgICBDYXRlZ29yeUlEICAgPT4gJzEyMycsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkUGVybWlzc2lvblN0cmluZyA9ICdydyc7ICAgICAgICAgICAgICAgIyBvciAncm8nIG9yICcnCgo9Y3V0CgpzdWIgQ2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDdXN0b21lclVzZXIgQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkUGVybWlzc2lvbiAocXcocncgcm8pKSB7CiAgICAgICAgbXkgJEN1c3RvbWVyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdybycsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGZvciBteSAkUGFyZW50SUQgKCBrZXlzICV7JEN1c3RvbWVyQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgICAgIG15ICRDYXRlZ29yaWVzID0gJEN1c3RvbWVyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH07CiAgICAgICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIGtleXMgJXskQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRDYXRlZ29yeUlEID09ICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFBlcm1pc3Npb247CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJyc7Cn0KCj1pdGVtIEFnZW50Q2F0ZWdvcnlTZWFyY2goKQoKZ2V0IHRoZSBjYXRlZ29yeSBzZWFyY2ggYXMgYXJyYXkgcmVmCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkFnZW50Q2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgPT4gMywgICAjIChvcHRpb25hbCwgZGVmYXVsdCAwKQogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgICc0JywKICAgICAgICAnOCcsCiAgICBdOwoKPWN1dAoKc3ViIEFnZW50Q2F0ZWdvcnlTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyZW50IGlkCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgJFBhcmFte1BhcmVudElEfSA9IDA7CiAgICB9CiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVDYXRlZ29yeSA9ICV7ICRDYXRlZ29yaWVzLT57ICRQYXJhbXtQYXJlbnRJRH0gfSB9OwogICAgbXkgQENhdGVnb3J5SURzID0gc29ydCB7ICRDYXRlZ29yeXskYX0gY21wICRDYXRlZ29yeXskYn0gfSAoIGtleXMgJUNhdGVnb3J5ICk7CgogICAgcmV0dXJuIFxAQ2F0ZWdvcnlJRHM7Cn0KCj1pdGVtIEN1c3RvbWVyQ2F0ZWdvcnlTZWFyY2goKQoKZ2V0IHRoZSBjYXRlZ29yeSBzZWFyY2ggYXMgaGFzaAoKICAgIG15ICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBAeyRGQVFPYmplY3QtPkN1c3RvbWVyQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgQ3VzdG9tZXJVc2VyICA9PiAndHQnLAogICAgICAgIFBhcmVudElEICAgICAgPT4gMywgICAjIChvcHRpb25hbCwgZGVmYXVsdCAwKQogICAgICAgIE1vZGUgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApfTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SURBcnJheVJlZiA9IFsKICAgICAgICAnNCcsCiAgICAgICAgJzgnLAogICAgXTsKCj1jdXQKCnN1YiBDdXN0b21lckNhdGVnb3J5U2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEN1c3RvbWVyVXNlciBNb2RlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBwYXJlbnQgaWQKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkUGFyYW17UGFyZW50SUR9ID0gMDsKICAgIH0KCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgIFR5cGUgICAgICAgICA9PiAncm8nLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJUNhdGVnb3J5ICAgICAgICAgICA9ICV7ICRDYXRlZ29yaWVzLT57ICRQYXJhbXtQYXJlbnRJRH0gfSB9OwogICAgbXkgQENhdGVnb3J5SURzICAgICAgICA9IHNvcnQgeyAkQ2F0ZWdvcnl7JGF9IGNtcCAkQ2F0ZWdvcnl7JGJ9IH0gKCBrZXlzICVDYXRlZ29yeSApOwogICAgbXkgQEFsbG93ZWRDYXRlZ29yeUlEcyA9ICgpOwoKICAgIG15ICVBcnRpY2xlcyA9ICgpOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdDdXN0b21lckNhdGVnb3J5U2VhcmNoOjpBcnRpY2xlcyc7CiAgICBpZiAoICRTZWxmLT57Q2FjaGV9LT57JENhY2hlS2V5fSApIHsKICAgICAgICAlQXJ0aWNsZXMgPSAleyAkU2VsZi0+e0NhY2hlfS0+eyRDYWNoZUtleX0gfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSAkU1FMID0gJ1NFTEVDVCBmYXFfaXRlbS5pZCwgZmFxX2l0ZW0uY2F0ZWdvcnlfaWQgJwogICAgICAgICAgICAuICdGUk9NIGZhcV9pdGVtLCBmYXFfc3RhdGVfdHlwZSwgZmFxX3N0YXRlICcKICAgICAgICAgICAgLiAnV0hFUkUgZmFxX3N0YXRlLmlkID0gZmFxX2l0ZW0uc3RhdGVfaWQgJwogICAgICAgICAgICAuICdBTkQgZmFxX3N0YXRlLnR5cGVfaWQgPSBmYXFfc3RhdGVfdHlwZS5pZCAnCiAgICAgICAgICAgIC4gIkFORCBmYXFfc3RhdGVfdHlwZS5uYW1lICE9ICdpbnRlcm5hbCcgIgogICAgICAgICAgICAuICdBTkQgYXBwcm92ZWQgPSAxJzsKCiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICRTUUwsCiAgICAgICAgKTsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkQXJ0aWNsZXN7ICRSb3dbMV0gfSsrOwogICAgICAgIH0KCiAgICAgICAgIyBjYWNoZQogICAgICAgICRTZWxmLT57Q2FjaGV9LT57JENhY2hlS2V5fSA9IFwlQXJ0aWNsZXM7CiAgICB9CgogICAgZm9yIG15ICRDYXRlZ29yeUlEIChAQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgIyBnZXQgYWxsIHN1YmNhdGVnb3J5IGlkcyBmb3IgdGhpcyBjYXRlZ29yeQogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEcyA9ICRTZWxmLT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAkUGFyYW17TW9kZX0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoaXMgY2F0ZWdvcnkgaWQKICAgICAgICBteSBASURzID0gKCAkQ2F0ZWdvcnlJRCwgQHskU3ViQ2F0ZWdvcnlJRHN9ICk7CgogICAgICAgICMgY2hlY2sgaWYgY2F0ZWdvcnkgY29udGFpbnMgYXJ0aWNsZXMgd2l0aCBzdGF0ZSBleHRlcm5hbCBvciBwdWJsaWMKICAgICAgICBJRDoKICAgICAgICBmb3IgbXkgJElEIChASURzKSB7CiAgICAgICAgICAgIG5leHQgSUQgaWYgISRBcnRpY2xlc3skSUR9OwogICAgICAgICAgICBwdXNoIEBBbGxvd2VkQ2F0ZWdvcnlJRHMsICRDYXRlZ29yeUlEOwogICAgICAgICAgICBsYXN0IElEOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXEBBbGxvd2VkQ2F0ZWdvcnlJRHM7Cn0KCj1pdGVtIFB1YmxpY0NhdGVnb3J5U2VhcmNoKCkKCmdldCB0aGUgY2F0ZWdvcnkgc2VhcmNoIGFzIGhhc2gKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gJEZBUU9iamVjdC0+UHVibGljQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgICAgICA9PiAzLCAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDApCiAgICAgICAgTW9kZSAgICAgICAgICA9PiAnUHVibGljJywKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgICc0JywKICAgICAgICAnOCcsCiAgICBdOwoKPWN1dAoKc3ViIFB1YmxpY0NhdGVnb3J5U2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE1vZGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgJFBhcmFte1BhcmVudElEfSA9IDA7CiAgICB9CgogICAgbXkgJENhdGVnb3J5TGlzdENhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIGlmICEkQ2F0ZWdvcnlMaXN0Q2F0ZWdvcmllcy0+eyAkUGFyYW17UGFyZW50SUR9IH07CgogICAgbXkgJUNhdGVnb3J5ICAgICAgICAgICA9ICV7ICRDYXRlZ29yeUxpc3RDYXRlZ29yaWVzLT57ICRQYXJhbXtQYXJlbnRJRH0gfSB9OwogICAgbXkgQENhdGVnb3J5SURzICAgICAgICA9IHNvcnQgeyAkQ2F0ZWdvcnl7JGF9IGNtcCAkQ2F0ZWdvcnl7JGJ9IH0gKCBrZXlzICVDYXRlZ29yeSApOwogICAgbXkgQEFsbG93ZWRDYXRlZ29yeUlEcyA9ICgpOwoKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICMgZ2V0IGFsbCBzdWJjYXRlZ29yeSBpZHMgZm9yIHRoaXMgY2F0ZWdvcnkKICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRHMgPSAkU2VsZi0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgUGFyZW50SUQgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBNb2RlICAgICAgICAgPT4gJFBhcmFte01vZGV9LAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0aGlzIGNhdGVnb3J5IGlkCiAgICAgICAgbXkgQElEcyA9ICggJENhdGVnb3J5SUQsIEB7JFN1YkNhdGVnb3J5SURzfSApOwoKICAgICAgICAjIGNoZWNrIGlmIGNhdGVnb3J5IGNvbnRhaW5zIGFydGljbGVzIHdpdGggc3RhdGUgcHVibGljCiAgICAgICAgbXkgJEZvdW5kQXJ0aWNsZSA9IDA7CgogICAgICAgIG15ICRTUUwgPSAnU0VMRUNUIGZhcV9pdGVtLmlkICcKICAgICAgICAgICAgLiAnRlJPTSBmYXFfaXRlbSwgZmFxX3N0YXRlX3R5cGUsIGZhcV9zdGF0ZSAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGZhcV9pdGVtLmNhdGVnb3J5X2lkID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBmYXFfc3RhdGUuaWQgPSBmYXFfaXRlbS5zdGF0ZV9pZCAnCiAgICAgICAgICAgIC4gJ0FORCBmYXFfc3RhdGUudHlwZV9pZCA9IGZhcV9zdGF0ZV90eXBlLmlkICcKICAgICAgICAgICAgLiAiQU5EIGZhcV9zdGF0ZV90eXBlLm5hbWUgPSAncHVibGljJyAiCiAgICAgICAgICAgIC4gJ0FORCBhcHByb3ZlZCA9IDEnOwoKICAgICAgICBJRDoKICAgICAgICBmb3IgbXkgJElEIChASURzKSB7CiAgICAgICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgICAgICAgICAgQmluZCAgPT4gWyBcJElEIF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJEZvdW5kQXJ0aWNsZSA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBJRCBpZiAkRm91bmRBcnRpY2xlOwogICAgICAgIH0KCiAgICAgICAgIyBhbiBhcnRpY2xlIHdhcyBmb3VuZAogICAgICAgIGlmICgkRm91bmRBcnRpY2xlKSB7CiAgICAgICAgICAgIHB1c2ggQEFsbG93ZWRDYXRlZ29yeUlEcywgJENhdGVnb3J5SUQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcQEFsbG93ZWRDYXRlZ29yeUlEczsKCn0KCj1pdGVtIEZBUUxvZ0FkZCgpCgphZGRzIGFjY2Vzc2VkIEZBUSBhcnRpY2xlIHRvIHRoZSBhY2Nlc3MgbG9nIHRhYmxlCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFMb2dBZGQoCiAgICAgICAgSXRlbUlEICAgID0+ICcxMjM0NTYnLAogICAgICAgIEludGVyZmFjZSA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPTE7ICAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgRkFRTG9nIGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIEZBUUxvZ0FkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgSW50ZXJmYWNlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICBteSAkSVAgICAgICAgID0gJEVOVnsnUkVNT1RFX0FERFInfSAgICAgfHwgJ05PTkUnOwogICAgbXkgJFVzZXJBZ2VudCA9ICRFTlZ7J0hUVFBfVVNFUl9BR0VOVCd9IHx8ICdOT05FJzsKCiAgICAjIGdldCBjdXJyZW50IHN5c3RlbSB0aW1lCiAgICBteSAkU3lzdGVtVGltZSA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUoKTsKCiAgICAjIGRlZmluZSB0aW1lIHBlcmlvZCB3aGVyZSByZWxvYWRzIHdpbGwgbm90IGJlIGxvZ2dlZCAoMTAgbWludXRlcykKICAgIG15ICRSZWxvYWRCbG9ja1RpbWUgPSAxMCAqIDYwOwoKICAgICMgc3VidHJhY3QgUmVsb2FkQmxvY2tUaW1lCiAgICAkU3lzdGVtVGltZSA9ICRTeXN0ZW1UaW1lIC0gJFJlbG9hZEJsb2NrVGltZTsKCiAgICAjIGNvbnZlcnQgdG8gdGltZXNzdGFtcAogICAgbXkgJFRpbWVTdGFtcCA9ICRTZWxmLT57VGltZU9iamVjdH0tPlN5c3RlbVRpbWUyVGltZVN0YW1wKAogICAgICAgIFN5c3RlbVRpbWUgPT4gJFN5c3RlbVRpbWUsCiAgICApOwoKICAgICMgY2hlY2sgaWYgYSBsb2cgZW50cnkgZXhpc3RzIG5ld2VyIHRoYW4gdGhlIFJlbG9hZEJsb2NrVGltZQogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCBGUk9NIGZhcV9sb2cgJwogICAgICAgICAgICAuICdXSEVSRSBpdGVtX2lkID0gPyBBTkQgaXAgPSA/ICcKICAgICAgICAgICAgLiAnQU5EIHVzZXJfYWdlbnQgPSA/IEFORCBjcmVhdGVkID49ID8gJywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSwgXCRJUCwgXCRVc2VyQWdlbnQsIFwkVGltZVN0YW1wIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQWxyZWFkeUV4aXN0cyA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRBbHJlYWR5RXhpc3RzID0gMTsKICAgIH0KCiAgICByZXR1cm4gaWYgJEFscmVhZHlFeGlzdHM7CgogICAgIyBpbnNlcnQgbmV3IGxvZyBlbnRyeQogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfbG9nICcKICAgICAgICAgICAgLiAnKGl0ZW1faWQsIGludGVyZmFjZSwgaXAsIHVzZXJfYWdlbnQsIGNyZWF0ZWQpIFZBTFVFUyAnCiAgICAgICAgICAgIC4gJyg/LCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17SW50ZXJmYWNlfSwgXCRJUCwgXCRVc2VyQWdlbnQsCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEZBUVRvcDEwR2V0KCkKCnJldHVybnMgYW4gYXJyYXkgd2l0aCB0aGUgdG9wIDEwIGZhcSBhcnRpY2xlIGlkcwoKICAgIG15ICRUb3AxMElEc1JlZiA9ICRGQVFPYmplY3QtPkZBUVRvcDEwR2V0KAogICAgICAgIEludGVyZmFjZSAgID0+ICdwdWJsaWMnLAogICAgICAgIENhdGVnb3J5SURzID0+IFsgMSwgMiwgMyBdLCAgIyAob3B0aW9uYWwpIE9ubHkgc2hvdyB0aGUgVG9wMTAgYXJ0aWNsZXMgZnJvbSB0aGVzZSBjYXRlZ29yaWVzCiAgICAgICAgTGltaXQgICAgICAgPT4gMTAsICAgICAgICAgICAjIChvcHRpb25hbCwgZGVmYXVsdCAxMCkKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFRvcDEwSURzUmVmID0gWwogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMTMsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDE1OSwgICAgICAgICAgICAgICAjIG51bWJlciBvZiB2aXNpdHMKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ3B1YmxpYycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDYsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDc4LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAncHVibGljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gNCwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gNTksCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdpbnRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDIwLAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAyOSwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ3B1YmxpYycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDEsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDI0LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAnZXh0ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAxMSwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMjQsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdpbnRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDUsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDE4LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAnaW50ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiA5LAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAxNiwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2V4dGVybmFsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMiwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMTQsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdpbnRlcm5hbCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMTQsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDYsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdwdWJsaWMnLAogICAgICAgIH0KICAgIF07Cgo9Y3V0CgpzdWIgRkFRVG9wMTBHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSW50ZXJmYWNlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBwcmVwYXJlIFNRTAogICAgbXkgQEJpbmQ7CiAgICBteSAkU1FMID0gJ1NFTEVDVCBpdGVtX2lkLCBjb3VudChpdGVtX2lkKSBhcyBpdGVtY291bnQsIGZhcV9zdGF0ZV90eXBlLm5hbWUsIGFwcHJvdmVkICcKICAgICAgICAuICdGUk9NIGZhcV9sb2csIGZhcV9pdGVtLCBmYXFfc3RhdGUsIGZhcV9zdGF0ZV90eXBlICcKICAgICAgICAuICdXSEVSRSBmYXFfbG9nLml0ZW1faWQgPSBmYXFfaXRlbS5pZCAnCiAgICAgICAgLiAnQU5EIGZhcV9pdGVtLnN0YXRlX2lkID0gZmFxX3N0YXRlLmlkICcKICAgICAgICAuICdBTkQgZmFxX3N0YXRlLnR5cGVfaWQgPSBmYXFfc3RhdGVfdHlwZS5pZCAnOwoKICAgICMgZmlsdGVyIGp1c3QgY2F0ZWdvcmllcyB3aXRoIGF0IGxlYXN0IHJvIHBlcm1pc3Npb24KICAgIGlmICggJFBhcmFte0NhdGVnb3J5SURzfSAmJiByZWYgJFBhcmFte0NhdGVnb3J5SURzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfSApIHsKCiAgICAgICAgIyBpbnRlZ2VyIHF1b3RlIHRoZSBjYXRlZ29yeSBpZHMKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkQ2F0ZWdvcnlJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIGNhdGVnb3J5IGlkIHN0cmluZwogICAgICAgIG15ICRDYXRlZ29yeUlEU3RyaW5nID0gam9pbiAnLCAnLCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH07CiAgICAgICAgJFNRTCAuPSAiQU5EIGZhcV9pdGVtLmNhdGVnb3J5X2lkIElOICgkQ2F0ZWdvcnlJRFN0cmluZykiOwogICAgfQoKICAgICMgZmlsdGVyIHJlc3VsdHMgZm9yIHB1YmxpYyBhbmQgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICBpZiAoICggJFBhcmFte0ludGVyZmFjZX0gZXEgJ3B1YmxpYycgKSB8fCAoICRQYXJhbXtJbnRlcmZhY2V9IGVxICdleHRlcm5hbCcgKSApIHsKCiAgICAgICAgIyBvbmx5IHNob3cgYXBwcm92ZWQgYXJ0aWNsZXMKICAgICAgICAkU1FMIC49ICdBTkQgYXBwcm92ZWQgPSAxICc7CgogICAgICAgICMgb25seSBzaG93IHRoZSBwdWJsaWMgYXJ0aWNsZXMKICAgICAgICAkU1FMIC49ICJBTkQgKCAoIGZhcV9zdGF0ZV90eXBlLm5hbWUgPSAncHVibGljJyApICI7CgogICAgICAgICMgY3VzdG9tZXJzIGNhbiBhZGRpdGlvbmFsbHkgc2VlIHRoZSBleHRlcm5hbCBhcnRpY2xlcwogICAgICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJ2V4dGVybmFsJyApIHsKICAgICAgICAgICAgJFNRTCAuPSAiT1IgKCBmYXFfc3RhdGVfdHlwZS5uYW1lID0gJ2V4dGVybmFsJyApICI7CiAgICAgICAgfQoKICAgICAgICAkU1FMIC49ICcpICc7CiAgICB9CgogICAgIyBmaWx0ZXIgcmVzdWx0cyBmb3IgZGVmaW5lZCB0aW1lIHBlcmlvZAogICAgaWYgKCAkUGFyYW17U3RhcnREYXRlfSAmJiAkUGFyYW17RW5kRGF0ZX0gKSB7CiAgICAgICAgJFNRTCAuPSAnQU5EIGZhcV9sb2cuY3JlYXRlZCA+PSA/IEFORCBmYXFfbG9nLmNyZWF0ZWQgPD0gPyAnOwogICAgICAgIHB1c2ggQEJpbmQsICggXCRQYXJhbXtTdGFydERhdGV9LCBcJFBhcmFte0VuZERhdGV9ICk7CiAgICB9CgogICAgIyBjb21wbGV0ZSBTUUwgc3RhdGVtZW50CiAgICAkU1FMIC49ICdHUk9VUCBCWSBpdGVtX2lkLCBmYXFfc3RhdGVfdHlwZS5uYW1lLCBhcHByb3ZlZCAnCiAgICAgICAgLiAnT1JERVIgQlkgaXRlbWNvdW50IERFU0MnOwoKICAgICMgZ2V0IHRoZSB0b3AgMTAgYXJ0aWNsZSBpZHMgZnJvbSBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIEJpbmQgID0+IFxAQmluZCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9IHx8IDEwLAogICAgKTsKCiAgICBteSBAUmVzdWx0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBSZXN1bHQsIHsKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIENvdW50ICAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFJvd1syXSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBcQFJlc3VsdDsKfQoKPWl0ZW0gRkFRSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSgpCgpVcGRhdGVzIHRoZSBVUkxzIG9mIHVwbG9hZGVkIGlubGluZSBhdHRhY2htZW50cy4KCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMiwKICAgICAgICBGb3JtSUQgICAgID0+IDQ1NiwKICAgICAgICBGaWxlSUQgICAgID0+IDUsCiAgICAgICAgQXR0YWNobWVudCA9PiBcJUF0dGFjaG1lbnQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb2YgdW5kZWYgaWYgYXR0YWNobWVudCBVUkwgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBGQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBBdHRhY2htZW50IEZvcm1JRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGF0dGFjaG1lbnQgaXMgYSBoYXNoIHJlZmVyZW5jZQogICAgaWYgKCByZWYgJFBhcmFte0F0dGFjaG1lbnR9IG5lICdIQVNIJyAmJiAhJXsgJFBhcmFte0F0dGFjaG1lbnR9IH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBdHRhY2htZW50IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgb25seSBjb25zaWRlciBpbmxpbmUgYXR0YWNobWVudHMgaGVyZSAodGhleSBoYXZlIGEgY29udGVudCBpZCkKICAgIHJldHVybiAxIGlmICEkUGFyYW17QXR0YWNobWVudH0tPntDb250ZW50SUR9OwoKICAgICMgZ2V0IGZhcSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT5GQVFHZXQoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBwaWN0dXJlIHVybCBpbiB1cGxvYWQgY2FjaGUKICAgIG15ICRTZWFyY2ggPSAiQWN0aW9uPVBpY3R1cmVVcGxvYWQgLisgRm9ybUlEPSRQYXJhbXtGb3JtSUR9IC4rICIKICAgICAgICAuICJDb250ZW50SUQ9JFBhcmFte0F0dGFjaG1lbnR9LT57Q29udGVudElEfSI7CgogICAgIyBwaWN0dXJlIHVybCBpbiBmYXEgYXR0YWNobWVudAogICAgbXkgJFJlcGxhY2UgPSAiQWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50OyIKICAgICAgICAuICJJdGVtSUQ9JFBhcmFte0l0ZW1JRH07RmlsZUlEPSRQYXJhbXtGaWxlSUR9IjsKCiAgICAjIHJld3JpdGUgcGljdHVyZSB1cmxzCiAgICBGSUVMRDoKICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGNvbnRhaW5zIHNvbWV0aGluZwogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyJGaWVsZCROdW1iZXIifTsKCiAgICAgICAgIyByZW1vdmUgbmV3bGluZXMKICAgICAgICAkRkFRRGF0YXsiRmllbGQkTnVtYmVyIn0gPX4gc3sgW1xuXHJdKyB9e31neG1zOwoKICAgICAgICAjIHJlcGxhY2UgdXJsCiAgICAgICAgJEZBUURhdGF7IkZpZWxkJE51bWJlciJ9ID1+IHN7JFNlYXJjaH17JFJlcGxhY2V9eG1zOwogICAgfQoKICAgICMgdXBkYXRlIEZBUSBhcnRpY2xlIHdpdGhvdXQgd3JpdGluZyBhIGhpc3RvcnkgZW50cnkKICAgIG15ICRPayA9ICRTZWxmLT5GQVFVcGRhdGUoCiAgICAgICAgJUZBUURhdGEsCiAgICAgICAgSGlzdG9yeU9mZiAgPT4gMSwKICAgICAgICBBcHByb3ZhbE9mZiA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHVwZGF0ZSB3YXMgc3VjY2Vzc2Z1bAogICAgaWYgKCAhJE9rICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSBGQVEgSXRlbSMgJyRQYXJhbXtJdGVtSUR9JyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9aXRlbSBfVXNlckNhdGVnb3JpZXMoKQoKLi4uLgouLi4uCgo9Y3V0CgpzdWIgX1VzZXJDYXRlZ29yaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3JpZXMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlVXNlckNhdGVnb3JpZXMgPSAoKTsKCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkUGFyYW17Q2F0ZWdvcmllc30gfSApIHsKCiAgICAgICAgbXkgJVN1YkNhdGVnb3JpZXMgPSAoKTsKCiAgICAgICAgQ0FURUdPUllJRDoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBrZXlzICV7ICRQYXJhbXtDYXRlZ29yaWVzfS0+eyRQYXJlbnRJRH0gfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgY2F0ZWdvcnkgZ3JvdXBzCiAgICAgICAgICAgIG5leHQgQ0FURUdPUllJRCBpZiAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlHcm91cHN9LT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgIyBjaGVjayB1c2VyIGdyb3VwcwogICAgICAgICAgICBHUk9VUElEOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwSUQgKCBrZXlzICV7ICRQYXJhbXtDYXRlZ29yeUdyb3Vwc30tPnskQ2F0ZWdvcnlJRH0gfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IEdST1VQSUQgaWYgIWRlZmluZWQgJFBhcmFte1VzZXJHcm91cHN9LT57JEdyb3VwSUR9OwoKICAgICAgICAgICAgICAgICMgYWRkIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAkU3ViQ2F0ZWdvcmllc3skQ2F0ZWdvcnlJRH0gPSAkUGFyYW17Q2F0ZWdvcmllc30tPnskUGFyZW50SUR9eyRDYXRlZ29yeUlEfTsKCiAgICAgICAgICAgICAgICAjIGFkZCBlbXB0eSBoYXNoIGlmIGNhdGVnb3J5IGhhcyBubyBzdWJjYXRlZ29yaWVzCiAgICAgICAgICAgICAgICBpZiAoICEkVXNlckNhdGVnb3JpZXN7JENhdGVnb3J5SUR9ICkgewogICAgICAgICAgICAgICAgICAgICRVc2VyQ2F0ZWdvcmllc3skQ2F0ZWdvcnlJRH0gPSB7fTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsYXN0IEdST1VQSUQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJFVzZXJDYXRlZ29yaWVzeyRQYXJlbnRJRH0gPSBcJVN1YkNhdGVnb3JpZXM7CiAgICB9CiAgICByZXR1cm4gXCVVc2VyQ2F0ZWdvcmllczsKfQoKPWl0ZW0gX0ZBUUFwcHJvdmFsVXBkYXRlKCkKCnVwZGF0ZSB0aGUgYXBwcm92YWwgc3RhdGUgb2YgYW4gYXJ0aWNsZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+X0ZBUUFwcHJvdmFsVXBkYXRlKAogICAgICAgIEl0ZW1JRCAgICAgPT4gMTIzLAogICAgICAgIEFwcHJvdmVkICAgPT4gMSwgICAgIyAwfDEgKGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIF9GQVFBcHByb3ZhbFVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtBcHByb3ZlZH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEFwcHJvdmVkIHBhcmFtZXRlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgdXBkYXRlIGRhdGFiYXNlCiAgICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBmYXFfaXRlbSBTRVQgJwogICAgICAgICAgICAuICdhcHByb3ZlZCA9ID8sICcKICAgICAgICAgICAgLiAnY2hhbmdlZCA9IGN1cnJlbnRfdGltZXN0YW1wLCAnCiAgICAgICAgICAgIC4gJ2NoYW5nZWRfYnkgPSA/ICcKICAgICAgICAgICAgLiAnV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtBcHByb3ZlZH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgYXBwcm92YWwgZmVhdHVyZSBpcyBhY3RpdmF0ZWQgYW5kIGZhcSBhcnRpY2xlIGlzIG5vdCBhcHByb3ZlZCB5ZXQKICAgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICYmICEkUGFyYW17QXBwcm92ZWR9ICkgewoKICAgICAgICAjIGdldCBmYXEgZGF0YQogICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgbmV3IGFwcHJvdmFsIHRpY2tldAogICAgICAgIG15ICRPayA9ICRTZWxmLT5fRkFRQXBwcm92YWxUaWNrZXRDcmVhdGUoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJEZBUURhdGF7TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgIEZBUU51bWJlciAgPT4gJEZBUURhdGF7TnVtYmVyfSwKICAgICAgICAgICAgVGl0bGUgICAgICA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgIFN0YXRlSUQgICAgPT4gJEZBUURhdGF7U3RhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRPayApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkIG5vdCBjcmVhdGUgYXBwcm92YWwgdGlja2V0IScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfRkFRQXBwcm92YWxUaWNrZXRDcmVhdGUoKQoKY3JlYXRlcyBhbiBhcHByb3ZhbCB0aWNrZXQKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPl9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBDYXRlZ29yeUlEID0+IDIsCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgICAgIEZBUU51bWJlciAgPT4gMTAyMTEsCiAgICAgICAgVGl0bGUgICAgICA9PiAnU29tZSBUaXRsZScsCiAgICAgICAgU3RhdGVJRCAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgX0ZBUUFwcHJvdmFsVGlja2V0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBDYXRlZ29yeUlEIEZBUU51bWJlciBUaXRsZSBTdGF0ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgc3ViamVjdAogICAgbXkgJFN1YmplY3QgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldFN1YmplY3QnKTsKICAgICRTdWJqZWN0ID1+IHN7IDxPVFJTX0ZBUV9OVU1CRVI+IH17JFBhcmFte0ZBUU51bWJlcn19eG1zOwoKICAgICMgY2hlY2sgaWYgd2UgY2FuIGZpbmQgZXhpc3Rpbmcgb3BlbiBhcHByb3ZhbCB0aWNrZXRzIGZvciB0aGlzIEZBUSBhcnRpY2xlCiAgICBteSBAVGlja2V0SURzID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRTZWFyY2goCiAgICAgICAgUmVzdWx0ICAgID0+ICdBUlJBWScsCiAgICAgICAgVGl0bGUgICAgID0+ICRTdWJqZWN0LAogICAgICAgIFN0YXRlVHlwZSA9PiAnT3BlbicsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKICAgICMgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBhcHByb3ZhbCB0aWNrZXQgaWYgdGhlcmUgaXMgc3RpbGwgYXQgbGVhc3Qgb25lIHRpY2tldCBvcGVuCiAgICAjIGZvciB0aGlzIEZBUSBhcnRpY2xlCiAgICByZXR1cm4gMSBpZiBAVGlja2V0SURzOwoKICAgICMgY3JlYXRlIHRpY2tldAogICAgbXkgJFRpY2tldElEID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgPT4gJFN1YmplY3QsCiAgICAgICAgUXVldWUgICAgPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZBUTo6QXBwcm92YWxRdWV1ZScpIHx8ICdSYXcnLAogICAgICAgIExvY2sgICAgID0+ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsVGlja2V0UHJpb3JpdHknKSB8fCAnMyBub3JtYWwnLAogICAgICAgIFN0YXRlICAgID0+ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkFwcHJvdmFsVGlja2V0RGVmYXVsdFN0YXRlJykgfHwgJ25ldycsCiAgICAgICAgT3duZXJJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICBpZiAoJFRpY2tldElEKSB7CgogICAgICAgICMgZ2V0IFVzZXJOYW1lCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+VXNlck5hbWUoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBmYXEgc3RhdGUKICAgICAgICBteSAlU3RhdGUgPSAkU2VsZi0+U3RhdGVHZXQoCiAgICAgICAgICAgIFN0YXRlSUQgPT4gJFBhcmFte1N0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2F0ZWdvcmllcyBjYW4gYmUgbmVzdGVkOyB5b3UgY2FuIGhhdmUgc29tZTo6bG9uZzo6Y2F0ZWdvcnkuCiAgICAgICAgbXkgQENhdGVnb3J5TmFtZXM7CiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW17Q2F0ZWdvcnlJRH07CiAgICAgICAgQ0FURUdPUlk6CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgbXkgJUNhdGVnb3J5ID0gJFNlbGYtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENhdGVnb3J5TmFtZXMsICRDYXRlZ29yeXtOYW1lfTsKICAgICAgICAgICAgbGFzdCBDQVRFR09SWSBpZiAhJENhdGVnb3J5e1BhcmVudElEfTsKICAgICAgICAgICAgJENhdGVnb3J5SUQgPSAkQ2F0ZWdvcnl7UGFyZW50SUR9OwogICAgICAgIH0KICAgICAgICBteSAkQ2F0ZWdvcnkgPSBqb2luKCAnOjonLCByZXZlcnNlIEBDYXRlZ29yeU5hbWVzICk7CgogICAgICAgIG15ICRMYW5ndWFnZTsKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKSApIHsKICAgICAgICAgICAgJExhbmd1YWdlID0gJFNlbGYtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkUGFyYW17TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGFuZ3VhZ2UgPSAnLSc7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBib2R5IGZyb20gY29uZmlnCiAgICAgICAgbXkgJEJvZHkgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldEJvZHknKTsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfQ0FURUdPUllJRD4gfXskUGFyYW17Q2F0ZWdvcnlJRH19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9DQVRFR09SWT4gICB9eyRDYXRlZ29yeX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX0xBTkdVQUdFPiAgIH17JExhbmd1YWdlfXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfSVRFTUlEPiAgICAgfXskUGFyYW17SXRlbUlEfX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX05VTUJFUj4gICAgIH17JFBhcmFte0ZBUU51bWJlcn19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9USVRMRT4gICAgICB9eyRQYXJhbXtUaXRsZX19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9BVVRIT1I+ICAgICB9eyRVc2VyTmFtZX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX1NUQVRFPiAgICAgIH17JFN0YXRle05hbWV9fXhtczsKCiAgICAgICAgIyBjcmVhdGUgYXJ0aWNsZQogICAgICAgIG15ICRBcnRpY2xlSUQgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgIFRpY2tldElEICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgQXJ0aWNsZVR5cGUgPT4gJ25vdGUtaW50ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICA9PiAnc3lzdGVtJywKICAgICAgICAgICAgU3ViamVjdCAgICAgPT4gJFN1YmplY3QsCiAgICAgICAgICAgIEJvZHkgICAgICAgID0+ICRCb2R5LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlID0+ICdTeXN0ZW1SZXF1ZXN0JywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4KICAgICAgICAgICAgICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE5vdGUnKS0+e0hpc3RvcnlDb21tZW50fQogICAgICAgICAgICAgICAgfHwgJycsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRBcnRpY2xlSUQ7CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwoKPWVuZCBJbnRlcm5hbDoKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06Okdyb3VwOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICRPYmplY3QgKHF3KERCT2JqZWN0IENvbmZpZ09iamVjdCBMb2dPYmplY3QgTWFpbk9iamVjdCBFbmNvZGVPYmplY3QgVGltZU9iamVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRPYmplY3R9ID0gJFBhcmFteyRPYmplY3R9IHx8IGRpZSAiR290IG5vICRPYmplY3QhIjsKICAgIH0KCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIG9iamVjdHMKICAgICRTZWxmLT57R3JvdXBPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06Okdyb3VwLT5uZXcoICV7JFNlbGZ9ICk7CiAgICAkU2VsZi0+e0ZBUU9iamVjdH0gICA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyggJXskU2VsZn0gKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIExpbmtMaXN0V2l0aERhdGEoKQoKZmlsbCB1cCB0aGUgbGluayBsaXN0IHdpdGggZGF0YQoKICAgICRTdWNjZXNzID0gJExpbmtPYmplY3RCYWNrZW5kLT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIExpbmtMaXN0ID0+ICRIYXNoUmVmLAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtMaXN0V2l0aERhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTGlua0xpc3QgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGxpbmsgbGlzdAogICAgaWYgKCByZWYgJFBhcmFte0xpbmtMaXN0fSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdMaW5rTGlzdCBtdXN0IGJlIGEgaGFzaCByZWZlcmVuY2UhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICV7ICRQYXJhbXtMaW5rTGlzdH0gfSApIHsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0gfSApIHsKCiAgICAgICAgICAgIEZBUUlEOgogICAgICAgICAgICBmb3IgbXkgJEZBUUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmYXEgZGF0YQogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBGQVFJRCAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgaWQgZnJvbSBoYXNoIGlmIG5vIGZhcSBkYXRhIHdhcyBmb3VuZAogICAgICAgICAgICAgICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0tPnskRkFRSUR9OwogICAgICAgICAgICAgICAgICAgIG5leHQgRkFRSUQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgZmFxIGRhdGEKICAgICAgICAgICAgICAgICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0tPnskRkFRSUR9ID0gXCVGQVFEYXRhOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBPYmplY3RQZXJtaXNzaW9uKCkKCmNoZWNrcyByZWFkIHBlcm1pc3Npb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IGFuZCBVc2VySUQuCgogICAgJFBlcm1pc3Npb24gPSAkTGlua09iamVjdC0+T2JqZWN0UGVybWlzc2lvbigKICAgICAgICBPYmplY3QgID0+ICdGQVEnLAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0UGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhPYmplY3QgS2V5IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBtb2R1bGUgcmVnaXN0cnkgb2YgQWdlbnRGQVFab29tCiAgICBteSAkTW9kdWxlUmVnID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+e0FnZW50RkFRWm9vbX07CgogICAgIyBkbyBub3QgZ3JhbnQgYWNjZXNzIGlmIGZyb250ZW5kIG1vZHVsZSBpcyBub3QgcmVnaXN0ZXJlZAogICAgcmV0dXJuIGlmICEkTW9kdWxlUmVnOwoKICAgICMgZ3JhbnQgYWNjZXNzIGlmIG1vZHVsZSBwZXJtaXNzb24gaGFzIG5vIEdyb3VwIG9yIEdyb3VwUm8gZGVmaW5lZAogICAgaWYgKCAhJE1vZHVsZVJlZy0+e0dyb3VwUm99ICYmICEkTW9kdWxlUmVnLT57R3JvdXB9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIFBFUk1JU1NJT046CiAgICBmb3IgbXkgJFBlcm1pc3Npb24gKHF3KEdyb3VwUm8gR3JvdXApKSB7CgogICAgICAgIG5leHQgUEVSTUlTU0lPTiBpZiAhJE1vZHVsZVJlZy0+eyRQZXJtaXNzaW9ufTsKICAgICAgICBuZXh0IFBFUk1JU1NJT04gaWYgcmVmICRNb2R1bGVSZWctPnskUGVybWlzc2lvbn0gbmUgJ0FSUkFZJzsKCiAgICAgICAgZm9yIG15ICRHcm91cCAoIEB7ICRNb2R1bGVSZWctPnskUGVybWlzc2lvbn0gfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBncm91cCBpZAogICAgICAgICAgICBteSAkR3JvdXBJRCA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cExvb2t1cCggR3JvdXAgPT4gJEdyb3VwICk7CgogICAgICAgICAgICBteSAkVHlwZTsKICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbiBlcSAnR3JvdXBSbycgKSB7CiAgICAgICAgICAgICAgICAkVHlwZSA9ICdybyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUGVybWlzc2lvbiBlcSAnR3JvdXAnICkgewogICAgICAgICAgICAgICAgJFR5cGUgPSAncncnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCB1c2VyIGdyb3Vwcywgd2hlcmUgdGhlIHVzZXIgaGFzIHRoZSBhcHByb3ByaWF0ZSBwcml2aWxlZ2UKICAgICAgICAgICAgbXkgJUdyb3VwcyA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFR5cGUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgaWYgYWdlbnQgaXMgYSBtZW1iZXIgaW4gdGhlIGdyb3VwCiAgICAgICAgICAgIHJldHVybiAxIGlmICRHcm91cHN7JEdyb3VwSUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm47Cn0KCj1pdGVtIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucwoKUmV0dXJuCiAgICAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICJGQVEjIDEyMzQiLAogICAgICAgIExvbmcgICA9PiAiRkFRIyAxMjM0OiBGQVFUaXRsZSIsCiAgICApOwoKICAgICVEZXNjcmlwdGlvbiA9ICRMaW5rT2JqZWN0LT5PYmplY3REZXNjcmlwdGlvbkdldCgKICAgICAgICBLZXkgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERlc2NyaXB0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdCBLZXkgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgbXkgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAnRkFRJywKICAgICAgICBMb25nICAgPT4gJ0ZBUScsCiAgICApOwoKICAgIHJldHVybiAlRGVzY3JpcHRpb24gaWYgJFBhcmFte01vZGV9ICYmICRQYXJhbXtNb2RlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICAjIGdldCBmYXEKICAgIG15ICVGQVEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICBGQVFJRCAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISVGQVE7CgogICAgIyBkZWZpbmUgZGVzY3JpcHRpb24gdGV4dAogICAgbXkgJEZBUUhvb2sgICAgICAgICA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgIG15ICREZXNjcmlwdGlvblRleHQgPSAiJEZBUUhvb2sgJEZBUXtOdW1iZXJ9IjsKCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAkRGVzY3JpcHRpb25UZXh0LAogICAgICAgIExvbmcgICA9PiAiJERlc2NyaXB0aW9uVGV4dDogJEZBUXtUaXRsZX0iLAogICAgKTsKCiAgICByZXR1cm4gJURlc2NyaXB0aW9uOwp9Cgo9aXRlbSBPYmplY3RTZWFyY2goKQoKcmV0dXJuIGEgaGFzaCBsaXN0IG9mIHRoZSBzZWFyY2ggcmVzdWx0cwoKUmV0dXJuCiAgICAkU2VhcmNoTGlzdCA9IHsKICAgICAgICBOT1RMSU5LRUQgPT4gewogICAgICAgICAgICBTb3VyY2UgPT4gewogICAgICAgICAgICAgICAgMTIgID0+ICREYXRhT2ZJdGVtMTIsCiAgICAgICAgICAgICAgICAyMTIgPT4gJERhdGFPZkl0ZW0yMTIsCiAgICAgICAgICAgICAgICAzMzIgPT4gJERhdGFPZkl0ZW0zMzIsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH07CgogICAgJFNlYXJjaExpc3QgPSAkTGlua09iamVjdEJhY2tlbmQtPk9iamVjdFNlYXJjaCgKICAgICAgICBTZWFyY2hQYXJhbXMgPT4gJEhhc2hSZWYsICAjIChvcHRpb25hbCkKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0U2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHBhcmFtcwogICAgJFBhcmFte1NlYXJjaFBhcmFtc30gfHw9IHt9OwoKICAgICMgYWRkIHdpbGRjYXJkcwogICAgbXkgJVNlYXJjaDsKICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntUaXRsZX0gKSB7CiAgICAgICAgJFNlYXJjaHtUaXRsZX0gPSAnKicgLiAkUGFyYW17U2VhcmNoUGFyYW1zfS0+e1RpdGxlfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntOdW1iZXJ9ICkgewogICAgICAgICRTZWFyY2h7TnVtYmVyfSA9ICcqJyAuICRQYXJhbXtTZWFyY2hQYXJhbXN9LT57TnVtYmVyfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSApIHsKICAgICAgICAkU2VhcmNoe1doYXR9ID0gJyonIC4gJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSAuICcqJzsKICAgIH0KCiAgICAjIHNlYXJjaCB0aGUgZmFxcwogICAgbXkgQEZBUUlEcyA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRU2VhcmNoKAogICAgICAgICV7ICRQYXJhbXtTZWFyY2hQYXJhbXN9IH0sCiAgICAgICAgJVNlYXJjaCwKICAgICAgICBPcmRlciAgPT4gJ0NyZWF0ZWQnLAogICAgICAgIFNvcnQgICA9PiAnZG93bicsCiAgICAgICAgTGltaXQgID0+IDUwLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJVNlYXJjaExpc3Q7CiAgICBGQVFJRDoKICAgIGZvciBteSAkRkFRSUQgKEBGQVFJRHMpIHsKCiAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICBGQVFJRCAgPT4gJEZBUUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBGQVFJRCBpZiAhJUZBUURhdGE7CgogICAgICAgICMgYWRkIEZBUSBkYXRhCiAgICAgICAgJFNlYXJjaExpc3R7Tk9UTElOS0VEfS0+e1NvdXJjZX0tPnskRkFRSUR9ID0gXCVGQVFEYXRhOwogICAgfQoKICAgIHJldHVybiBcJVNlYXJjaExpc3Q7Cn0KCj1pdGVtIExpbmtBZGRQcmUoKQoKbGluayBhZGQgcHJlIGV2ZW50IG1vZHVsZQoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtBZGRQcmUoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIG9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnRkFRJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0FkZFByZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgVHlwZSBTdGF0ZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICRQYXJhbXtTdGF0ZX0gZXEgJ1RlbXBvcmFyeSc7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIExpbmtBZGRQb3N0KCkKCmxpbmsgYWRkIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnRkFRJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0FkZFBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBMaW5rRGVsZXRlUHJlKCkKCmxpbmsgZGVsZXRlIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICBvcgoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtEZWxldGVQcmUoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtEZWxldGVQcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBMaW5rRGVsZXRlUG9zdCgpCgpsaW5rIGRlbGV0ZSBwb3N0IGV2ZW50IG1vZHVsZQoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtEZWxldGVQb3N0KAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICBvcgoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtEZWxldGVQb3N0KAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rRGVsZXRlUG9zdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgVHlwZSBTdGF0ZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICRQYXJhbXtTdGF0ZX0gZXEgJ1RlbXBvcmFyeSc7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6U3RhdGljOjpGQVFBY2Nlc3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBEYXRlOjpQY2FsYyBxdyhEYXlzX2luX01vbnRoKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGQVE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgYWxsIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE9iamVjdCAocXcoREJPYmplY3QgQ29uZmlnT2JqZWN0IExvZ09iamVjdCBVc2VySUQpKSB7CiAgICAgICAgZGllICJHb3Qgbm8gJE9iamVjdCIgaWYgISRTZWxmLT57JE9iamVjdH07CiAgICB9CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdAogICAgJFNlbGYtPntGQVFPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCVQYXJhbSk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUGFyYW0gewoKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgbXkgQFBhcmFtcyA9ICgpOwoKICAgICMgZ2V0IGN1cnJlbnQgdGltZQogICAgbXkgKCAkcywgJG0sICRoLCAkRCwgJE0sICRZICkgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lMkRhdGUoCiAgICAgICAgU3lzdGVtVGltZSA9PiAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lKCksCiAgICApOwogICAgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREICk7CiAgICAkTSA9IHNwcmludGYoICIlMDJkIiwgJE0gKTsKICAgICRZID0gc3ByaW50ZiggIiUwMmQiLCAkWSApOwoKICAgICMgY3JlYXRlIHBvc3NpYmxlIHRpbWUgc2VsZWN0aW9ucwogICAgbXkgJVllYXIgPSBtYXAgeyAkXywgJF8gfSAoICRZIC0gMTAgLi4gJFkgKyAxICk7CiAgICBteSAlTW9udGggPSBtYXAgeyBzcHJpbnRmKCAiJTAyZCIsICRfICksIHNwcmludGYoICIlMDJkIiwgJF8gKSB9ICggMSAuLiAxMiApOwogICAgbXkgJURheSAgID0gbWFwIHsgc3ByaW50ZiggIiUwMmQiLCAkXyApLCBzcHJpbnRmKCAiJTAyZCIsICRfICkgfSAoIDEgLi4gMzEgKTsKCiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCAgID0+ICdTdGFydCBkYXknLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1N0YXJ0RGF5JywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJzAxJywKICAgICAgICBEYXRhICAgICAgID0+IHsKICAgICAgICAgICAgJURheSwKICAgICAgICB9LAogICAgfTsKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ1N0YXJ0IG1vbnRoJywKICAgICAgICBOYW1lICAgICAgID0+ICdTdGFydE1vbnRoJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJE0sCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVNb250aCwKICAgICAgICB9LAogICAgfTsKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ1N0YXJ0IHllYXInLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1N0YXJ0WWVhcicsCiAgICAgICAgTXVsdGlwbGUgICA9PiAwLAogICAgICAgIFNpemUgICAgICAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEID0+ICRZLAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlWWVhciwKICAgICAgICB9LAogICAgfTsKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ0VuZCBkYXknLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0VuZERheScsCiAgICAgICAgTXVsdGlwbGUgICA9PiAwLAogICAgICAgIFNpemUgICAgICAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEID0+ICRELAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlRGF5LAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnRW5kIG1vbnRoJywKICAgICAgICBOYW1lICAgICAgID0+ICdFbmRNb250aCcsCiAgICAgICAgTXVsdGlwbGUgICA9PiAwLAogICAgICAgIFNpemUgICAgICAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEID0+ICRNLAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlTW9udGgsCiAgICAgICAgfSwKICAgIH07CiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCAgID0+ICdFbmQgeWVhcicsCiAgICAgICAgTmFtZSAgICAgICA9PiAnRW5kWWVhcicsCiAgICAgICAgTXVsdGlwbGUgICA9PiAwLAogICAgICAgIFNpemUgICAgICAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEID0+ICRZLAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlWWVhciwKICAgICAgICB9LAogICAgfTsKCiAgICByZXR1cm4gQFBhcmFtczsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoU3RhcnRZZWFyIFN0YXJ0TW9udGggU3RhcnREYXkgRW5kWWVhciBFbmRNb250aCBFbmREYXkpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjb3JyZWN0IHN0YXJ0IGRheSBvZiBtb250aCBpZiBlbnRlcmVkIHdyb25nIGJ5IHVzZXIKICAgIG15ICRTdGFydERheSA9IHNwcmludGYoICIlMDJkIiwgRGF5c19pbl9Nb250aCggJFBhcmFte1N0YXJ0WWVhcn0sICRQYXJhbXtTdGFydE1vbnRofSApICk7CiAgICBpZiAoICRQYXJhbXtTdGFydERheX0gPCAkU3RhcnREYXkgKSB7CiAgICAgICAgJFN0YXJ0RGF5ID0gJFBhcmFte1N0YXJ0RGF5fTsKICAgIH0KCiAgICAjIGNvcnJlY3QgZW5kIGRheSBvZiBtb250aCBpZiBlbnRlcmVkIHdyb25nIGJ5IHVzZXIKICAgIG15ICRFbmREYXkgPSBzcHJpbnRmKCAiJTAyZCIsIERheXNfaW5fTW9udGgoICRQYXJhbXtFbmRZZWFyfSwgJFBhcmFte0VuZE1vbnRofSApICk7CiAgICBpZiAoICRQYXJhbXtFbmREYXl9IDwgJEVuZERheSApIHsKICAgICAgICAkRW5kRGF5ID0gJFBhcmFte0VuZERheX07CiAgICB9CgogICAgIyBzZXQgc3RhcnQgYW5kIGVuZCBkYXRlCiAgICBteSAkU3RhcnREYXRlID0gIiRQYXJhbXtTdGFydFllYXJ9LSRQYXJhbXtTdGFydE1vbnRofS0kU3RhcnREYXkgMDA6MDA6MDAiOwogICAgbXkgJEVuZERhdGUgICA9ICIkUGFyYW17RW5kWWVhcn0tJFBhcmFte0VuZE1vbnRofS0kRW5kRGF5IDIzOjU5OjU5IjsKCiAgICAjIGdldCBhIGNvdW50IG9mIGFsbCBmYXEgYXJ0aWNsZXMKICAgIG15ICRUb3AxMEl0ZW1JRHNSZWYgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUVRvcDEwR2V0KAogICAgICAgIEludGVyZmFjZSA9PiAnaW50ZXJuYWwnLAogICAgICAgIFN0YXJ0RGF0ZSA9PiAkU3RhcnREYXRlLAogICAgICAgIEVuZERhdGUgICA9PiAkRW5kRGF0ZSwKICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIHJlc3VsdCB0YWJsZQogICAgbXkgQERhdGE7CiAgICBmb3IgbXkgJEl0ZW1JRFJlZiAoIEB7JFRvcDEwSXRlbUlEc1JlZn0gKSB7CgogICAgICAgICMgZ2V0IGZhcSBkYXRhCiAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+e0ZBUU9iamVjdH0tPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSURSZWYtPntJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHZvdGUgZGF0YQogICAgICAgIG15ICRWb3RlRGF0YSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+SXRlbVZvdGVEYXRhR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRFJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkVm90ZVJlc3VsdCA9IHNwcmludGYoCiAgICAgICAgICAgICIlMC4iCiAgICAgICAgICAgICAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KAogICAgICAgICAgICAgICAgIkZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHREZWNpbWFsUGxhY2VzIgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLiAiZiIsCiAgICAgICAgICAgICRWb3RlRGF0YS0+e1Jlc3VsdH0KICAgICAgICAgICAgICAgIHx8IDAKICAgICAgICApOwogICAgICAgIG15ICRWb3RlcyA9ICRWb3RlRGF0YS0+e1ZvdGVzfSB8fCAwOwoKICAgICAgICAjIGJ1aWxkIHRhYmxlIHJvdwogICAgICAgIHB1c2ggQERhdGEsIFsKICAgICAgICAgICAgJEZBUURhdGF7TnVtYmVyfSwKICAgICAgICAgICAgJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAkSXRlbUlEUmVmLT57Q291bnR9LAogICAgICAgICAgICAkVm90ZVJlc3VsdCwKICAgICAgICAgICAgJFZvdGVzLAogICAgICAgIF07CiAgICB9CgogICAgIyBzZXQgcmVwb3J0IHRpdGxlCiAgICBteSAkVGl0bGUgPSAiJFBhcmFte1N0YXJ0WWVhcn0tJFBhcmFte1N0YXJ0TW9udGh9LSRTdGFydERheSAtICRQYXJhbXtFbmRZZWFyfS0kUGFyYW17RW5kTW9udGh9LSRFbmREYXkiOwoKICAgICMgdGFibGUgaGVhZGxpbmVzCiAgICBteSBASGVhZERhdGEgPSAoCiAgICAgICAgJ0ZBUSAjJywKICAgICAgICAnVGl0bGUnLAogICAgICAgICdDb3VudCcsCiAgICAgICAgJ1ZvdGUgUmVzdWx0JywKICAgICAgICAnVm90ZXMnLAogICAgKTsKCiAgICBteSBAUmVzdWx0ID0gKCBbJFRpdGxlXSwgW0BIZWFkRGF0YV0sIEBEYXRhICk7CgogICAgcmV0dXJuIEBSZXN1bHQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyBxdygkU2VsZik7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OkZBUTsKCm15ICRGQVFPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6RkFRLT5uZXcoICV7JFNlbGZ9ICk7CgpteSAkRkFRSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEZBUUlELAogICAgIkZBUUFkZCgpIC0gMSIsCik7CgpteSAlRkFRID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEID0+ICRGQVFJRCwKICAgIFVzZXJJRCA9PiAxLAopOwoKbXkgJUZBUVRlc3QgPSAoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMiAgICAgPT4gJ1NvbHV0aW9uLi4uJywKKTsKCmZvciBteSAkVGVzdCAoIHNvcnQga2V5cyAlRkFRVGVzdCApIHsKICAgICRTZWxmLT5JcygKICAgICAgICAkRkFReyRUZXN0fSwKICAgICAgICAkRkFRVGVzdHskVGVzdH0sCiAgICAgICAgIkZBUUdldCgpIC0gJFRlc3QiLAogICAgKTsKfQoKbXkgJEZBUVVwZGF0ZSA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAyLAogICAgTGFuZ3VhZ2VJRCA9PiAyLAogICAgQXBwcm92ZWQgICA9PiAxLAogICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0MicsCiAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzMicsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uMicsCiAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbiBmb3VuZC4uLjInLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCA9PiAkRkFRSUQsCiAgICBVc2VySUQgPT4gMSwKKTsKCiVGQVFUZXN0ID0gKAogICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0MicsCiAgICBDYXRlZ29yeUlEID0+IDEsCiAgICBTdGF0ZUlEICAgID0+IDIsCiAgICBMYW5ndWFnZUlEID0+IDIsCiAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzMicsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtLi4uMicsCiAgICBGaWVsZDIgICAgID0+ICdTb2x1dGlvbiBmb3VuZC4uLjInLAopOwoKZm9yIG15ICRUZXN0ICggc29ydCBrZXlzICVGQVFUZXN0ICkgewogICAgJFNlbGYtPklzKAogICAgICAgICRGQVFUZXN0eyRUZXN0fSwKICAgICAgICAkRkFReyRUZXN0fSwKICAgICAgICAiRkFRR2V0KCkgLSAkVGVzdCIsCiAgICApOwp9CgpteSAkT2sgPSAkRkFRT2JqZWN0LT5Wb3RlQWRkKAogICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgSXRlbUlEICAgID0+ICRGQVFJRCwKICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgUmF0ZSAgICAgID0+IDEwMCwKICAgIFVzZXJJRCAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkT2ssCiAgICAiVm90ZUFkZCgpIiwKKTsKCm15ICRWb3RlID0gJEZBUU9iamVjdC0+Vm90ZUdldCgKICAgIENyZWF0ZUJ5ICA9PiAnU29tZSBUZXh0JywKICAgIEl0ZW1JRCAgICA9PiAkRkFRSUQsCiAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjEnLAogICAgSW50ZXJmYWNlID0+ICcyJywKICAgIFVzZXJJRCAgICA9PiAxLAopOwoKJFNlbGYtPklzKAogICAgJFZvdGUtPntJUH0sCiAgICAnNTQuNDMuMzAuMScsCiAgICAiVm90ZUdldCgpIC0gSVAiLAopOwoKbXkgJEZBUUlEMiA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgIFRpdGxlICAgICAgPT4gJ1RpdGxlJywKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJycsCiAgICBGaWVsZDEgICAgID0+ICdQcm9ibGVtIERlc2NyaXB0aW9uIDEuLi4nLAogICAgRmllbGQyICAgICA9PiAnU29sdXRpb24gbm90IGZvdW5kMS4uLicsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRGQVFJRDIsCiAgICAiRkFRQWRkKCkgLSAyIiwKKTsKCm15ICRIb21lICAgICAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnSG9tZScpOwpteSBAQXR0YWNobWVudFRlc3RzID0gKAogICAgewogICAgICAgIEZpbGUgPT4gJ0ZBUS1UZXN0MS5wZGYnLAogICAgICAgIE1ENSAgPT4gJzVlZTc2N2YzYjY4ZjI0YTkyMTNlMGJlZjgyZGM1M2U1JywKICAgIH0sCiAgICB7CiAgICAgICAgRmlsZSA9PiAnRkFRLVRlc3QxLmRvYycsCiAgICAgICAgTUQ1ICA9PiAnMmU1MjAwMzZhMGNkYTZhODA2YTg4MzhiMTAwMGQ5ZDcnLAogICAgfSwKKTsKZm9yIG15ICRBdHRhY2htZW50VGVzdCAoQEF0dGFjaG1lbnRUZXN0cykgewogICAgbXkgJENvbnRlbnRTQ0FMQVJSZWYgPSAkU2VsZi0+e01haW5PYmplY3R9LT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkSG9tZSAuICcvc2NyaXB0cy90ZXN0L3NhbXBsZS8nIC4gJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0sCiAgICApOwogICAgbXkgJEFkZCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgSXRlbUlEICAgICAgPT4gJEZBUUlEMiwKICAgICAgICBDb250ZW50ICAgICA9PiAkeyRDb250ZW50U0NBTEFSUmVmfSwKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgIEZpbGVuYW1lICAgID0+ICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9LAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEFkZCwKICAgICAgICAiQXR0YWNobWVudEFkZCgpIC0gJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0iLAogICAgKTsKICAgIG15IEBBdHRhY2htZW50SW5kZXggPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgSXRlbUlEID0+ICRGQVFJRDIsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgbXkgJUZpbGUgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50R2V0KAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSUQyLAogICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudEluZGV4WzBdLT57RmlsZUlEfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZpbGV7RmlsZW5hbWV9LAogICAgICAgICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9LAogICAgICAgICJBdHRhY2htZW50R2V0KCkgLSBGaWxlbmFtZSAkQXR0YWNobWVudFRlc3QtPntGaWxlfSIsCiAgICApOwogICAgbXkgJE1ENSA9ICRTZWxmLT57TWFpbk9iamVjdH0tPk1ENXN1bSgKICAgICAgICBTdHJpbmcgPT4gXCRGaWxle0NvbnRlbnR9LAogICAgKTsKICAgICRTZWxmLT5JcygKICAgICAgICAkTUQ1LAogICAgICAgICRBdHRhY2htZW50VGVzdC0+e01ENX0sCiAgICAgICAgIkF0dGFjaG1lbnRHZXQoKSAtIE1ENSAkQXR0YWNobWVudFRlc3QtPntGaWxlfSIsCiAgICApOwoKICAgIG15ICREZWxldGUgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50RGVsZXRlKAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSUQyLAogICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudEluZGV4WzBdLT57RmlsZUlEfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkRGVsZXRlLAogICAgICAgICJBdHRhY2htZW50RGVsZXRlKCkgLSAkQXR0YWNobWVudFRlc3QtPntGaWxlfSIsCiAgICApOwoKfQoKbXkgQEZBUUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgIE51bWJlciAgICAgICAgICAgPT4gJyonLAogICAgV2hhdCAgICAgICAgICAgICA9PiAnKnMqJywKICAgIEtleXdvcmQgICAgICAgICAgPT4gJ3NvbWUqJywKICAgIFN0YXRlcyAgICAgICAgICAgPT4gWyAncHVibGljJywgJ2ludGVybmFsJyBdLAogICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ1ZvdGVzJ10sCiAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnVXAnXSwKICAgIExpbWl0ICAgICAgICAgICAgPT4gMTUwLAogICAgVXNlcklEICAgICAgICAgICA9PiAxLAopOwoKbXkgJEZBUVNlYXJjaEZvdW5kICA9IDA7Cm15ICRGQVFTZWFyY2hGb3VuZDIgPSAwOwpmb3IgbXkgJEZBUUlEU2VhcmNoIChARkFRSURzKSB7CiAgICBpZiAoICRGQVFJRFNlYXJjaCBlcSAkRkFRSUQgKSB7CiAgICAgICAgJEZBUVNlYXJjaEZvdW5kID0gMTsKICAgIH0KICAgIGlmICggJEZBUUlEU2VhcmNoIGVxICRGQVFJRDIgKSB7CiAgICAgICAgJEZBUVNlYXJjaEZvdW5kMiA9IDE7CiAgICB9Cn0KJFNlbGYtPlRydWUoCiAgICAkRkFRU2VhcmNoRm91bmQsCiAgICAiRkFRU2VhcmNoKCkgLSAkRkFRSUQiLAopOwokU2VsZi0+RmFsc2UoCiAgICAkRkFRU2VhcmNoRm91bmQyLAogICAgIkZBUVNlYXJjaCgpIC0gJEZBUUlEMiIsCik7CgpARkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgTnVtYmVyICAgICAgICAgICA9PiAnKicsCiAgICBUaXRsZSAgICAgICAgICAgID0+ICd0SVRMZScsCiAgICBXaGF0ICAgICAgICAgICAgID0+ICdsJywKICAgIFN0YXRlcyAgICAgICAgICAgPT4gWyAncHVibGljJywgJ2ludGVybmFsJyBdLAogICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ0NyZWF0ZWQnXSwKICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgTGltaXQgICAgICAgICAgICA9PiAxNTAsCiAgICBVc2VySUQgICAgICAgICAgID0+IDEsCik7CgokRkFRU2VhcmNoRm91bmQgID0gMDsKJEZBUVNlYXJjaEZvdW5kMiA9IDA7CmZvciBteSAkRkFRSURTZWFyY2ggKEBGQVFJRHMpIHsKICAgIGlmICggJEZBUUlEU2VhcmNoIGVxICRGQVFJRCApIHsKICAgICAgICAkRkFRU2VhcmNoRm91bmQgPSAxOwogICAgfQogICAgaWYgKCAkRkFRSURTZWFyY2ggZXEgJEZBUUlEMiApIHsKICAgICAgICAkRkFRU2VhcmNoRm91bmQyID0gMTsKICAgIH0KfQokU2VsZi0+RmFsc2UoCiAgICAkRkFRU2VhcmNoRm91bmQsCiAgICAiRkFRU2VhcmNoKCkgLSAkRkFRSUQiLAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFTZWFyY2hGb3VuZDIsCiAgICAiRkFRU2VhcmNoKCkgLSAkRkFRSUQyIiwKKTsKCkBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICBOdW1iZXIgICAgICAgICAgID0+ICcqJywKICAgIFRpdGxlICAgICAgICAgICAgPT4gJycsCiAgICBXaGF0ICAgICAgICAgICAgID0+ICdzb2x1dGlvbiBmb3VuZCcsCiAgICBTdGF0ZXMgICAgICAgICAgID0+IFsgJ3B1YmxpYycsICdpbnRlcm5hbCcgXSwKICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydDcmVhdGVkJ10sCiAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnVXAnXSwKICAgIExpbWl0ICAgICAgICAgICAgPT4gMTUwLAogICAgVXNlcklEICAgICAgICAgICA9PiAxLAopOwoKJEZBUVNlYXJjaEZvdW5kICA9IDA7CiRGQVFTZWFyY2hGb3VuZDIgPSAwOwpmb3IgbXkgJEZBUUlEU2VhcmNoIChARkFRSURzKSB7CiAgICBpZiAoICRGQVFJRFNlYXJjaCBlcSAkRkFRSUQgKSB7CiAgICAgICAgJEZBUVNlYXJjaEZvdW5kID0gMTsKICAgIH0KICAgIGlmICggJEZBUUlEU2VhcmNoIGVxICRGQVFJRDIgKSB7CiAgICAgICAgJEZBUVNlYXJjaEZvdW5kMiA9IDE7CiAgICB9Cn0KJFNlbGYtPlRydWUoCiAgICAkRkFRU2VhcmNoRm91bmQsCiAgICAiRkFRU2VhcmNoICgpIGxpdGVyYWwgdGV4dCAtICRGQVFJRCIsCik7CiRTZWxmLT5GYWxzZSgKICAgICRGQVFTZWFyY2hGb3VuZDIsCiAgICAiRkFRU2VhcmNoKCkgbGl0ZXJhbCB0ZXh0IC0gJEZBUUlEMiIsCik7CgpARkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgTnVtYmVyICAgICAgICAgICA9PiAnKicsCiAgICBUaXRsZSAgICAgICAgICAgID0+ICcnLAogICAgV2hhdCAgICAgICAgICAgICA9PiAnc29sdXRpb24rZm91bmQnLAogICAgU3RhdGVzICAgICAgICAgICA9PiBbICdwdWJsaWMnLCAnaW50ZXJuYWwnIF0sCiAgICBPcmRlckJ5ICAgICAgICAgID0+IFsnQ3JlYXRlZCddLAogICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ1VwJ10sCiAgICBMaW1pdCAgICAgICAgICAgID0+IDE1MCwKICAgIFVzZXJJRCAgICAgICAgICAgPT4gMSwKKTsKCiRGQVFTZWFyY2hGb3VuZCAgPSAwOwokRkFRU2VhcmNoRm91bmQyID0gMDsKZm9yIG15ICRGQVFJRFNlYXJjaCAoQEZBUUlEcykgewogICAgaWYgKCAkRkFRSURTZWFyY2ggZXEgJEZBUUlEICkgewogICAgICAgICRGQVFTZWFyY2hGb3VuZCA9IDE7CiAgICB9CiAgICBpZiAoICRGQVFJRFNlYXJjaCBlcSAkRkFRSUQyICkgewogICAgICAgICRGQVFTZWFyY2hGb3VuZDIgPSAxOwogICAgfQp9CiRTZWxmLT5UcnVlKAogICAgJEZBUVNlYXJjaEZvdW5kLAogICAgIkZBUVNlYXJjaCgpIEFORCAtICRGQVFJRCIsCik7CiRTZWxmLT5UcnVlKAogICAgJEZBUVNlYXJjaEZvdW5kMiwKICAgICJGQVFTZWFyY2goKSBBTkQgLSAkRkFRSUQyIiwKKTsKCm15ICRWb3RlSURzUmVmID0gJEZBUU9iamVjdC0+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+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnQ2hpbGRDYXRlZ29yeScsCiAgICBDb21tZW50ICA9PiAnQ2hpbGQgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENoaWxkQ2F0ZWdvcnlJRCwKICAgICJDYXRlZ29yeUFkZCgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKbXkgJENoaWxkQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENoaWxkQ2F0ZWdvcnlJRCwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENoaWxkQ2F0ZWdvcnlEZWxldGUsCiAgICAiQ2F0ZWdvcnlEZWxldGUoKSAtIENoaWxkIENhdGVnb3J5IiwKKTsKCm15ICRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBSb290IENhdGVnb3J5IiwKKTsKCjE7Cg==
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//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAADgBAAAAAAAAVwBvAHIAZABEAG8AYwB1AG0AZQBuAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAgAGAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAcVgAAAAAAABPAGIAagBlAGMAdABQAG8AbwBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgABAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v///wAAAAAAAAAA
JVBERi0xLjQNCiXDpMO8w7bDnw0KMiAwIG9iag0KPDwgL0xlbmd0aCAzIDAgUg0KICAgL0ZpbHRlciAvRmxhdGVEZWNvZGUNCj4+DQpzdHJlYW0NCnicbVDLCoNADLwL/sOcC133EVcXpIdShR4FoR/QFxRs0Ut/v9FdrbSybAiTyWQSiXccdZDYSqFgleaYuSH2V5w2ePrq8Pp7HO2bONJGCUImrTBoLkgqBaPR3FBQtUPzYAYJxw1cLFLykHIinSAdWIanBMgESLGmh3TpoXyWstUsZQOUBSm2TRMr81DJTusV8zYd9jQk8h/zC6eTPKV/tlacTo1hYo0Omo/DwnxHw7kc/+KeyrlxKxmyL51wbuMISI4t4fDCqPcBPw5VGmVuZHN0cmVhbQ0KZW5kb2JqDQoNCjMgMCBvYmoNCiAgMjA0DQplbmRvYmoNCg0KNCAwIG9iag0KPDwgL1R5cGUgL1hPYmplY3QNCiAgIC9TdWJ0eXBlIC9JbWFnZQ0KICAgL1dpZHRoIDIwMA0KICAgL0hlaWdodCAyMDANCiAgIC9CaXRzUGVyQ29tcG9uZW50IDgNCiAgIC9Db2xvclNwYWNlIC9EZXZpY2VSR0INCiAgIC9GaWx0ZXIgL0RDVERlY29kZQ0KICAgL0xlbmd0aCAyODQxDQo+Pg0Kc3RyZWFtDQr/2P/gABBKRklGAAEBAAABAAEAAP/bAEMAAwICAwICAwMDAwQDAwQFCAUFBAQFCgcHBggMCgwMCwoLCw0OEhANDhEOCwsQFhARExQVFRUMDxcYFhQYEhQVFP/bAEMBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIAMgAyAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1TooooAKKKKACiiigAoopCcCgBkrYFUJnqxO/NUJ3rSKEyvM9UJ5KsTvWfM/WuuKIZXnk61QmfrVid81QmkzXVFEMrzv1qhO9TzyVQmeuuKJZBM/FUJn61PM9UJ5K6oohleeTrVCZ+tTzvVCaTrXVFEsgmeqE71PO9Z88nWuqKIZBM/WqEz8Gp5nqjO/WuqKIZXneiq88nWiuhIk+/6KKK/Kz1gooooAKKKKACopWwKkJwKqTvTWoEEz1QmfrVid6oTv1rpiiSvO9Z879asTv1qhO9dUUQV5n61QmfrVid+tZ8711RRDIJ361QmfrU8z1QmfrXXFEEE79az53qxPJ1rPmeuqKJIJn61QnfrU8z1QneuqKJZXneqEz9annfrVCZ66oohkEz9aoTvVieTrWfO/WuqKIK8z9aKgmeiulIg/Q6iiivyU9gKKKKACiikJwKAI5XwKozPU871QnetIoTIJnqhO9WJ34rPneuuKIZXmfrVCZ+tWJ361QnfrXVFEMrzP1rPmerE8nWqEz11xRLIJn61Qmep5361nzv1rqiiGQTSdaoTP1qeZ6oTPXVFEkEz1nzvVid6z53rqiiGQTPVCZ8ZqeZ6ozvXVFEMrzvWfM/JqxO9Z8z11RRLIJn60VXneiuhIk/R6iiivyE9gKKKKACopXwKkJwKqTvTSuBBM/FUJn61PO/NUZ3rpiiWV53681nzP1qxM/Ws+d+tdUUQQTP1qhO/WrE71nzvXVFEFed6oTP1qxM9UJnzXXFEMgnfrWfO/Wp55OtUJnrqiiSCZ6oTv1qeZ6oTv1rqiiWV55OtZ8z1Ynk61QmfrXVFEMgmeqE71PM9UJ3rqiiCvO/WqEz1PM9UZ3rqiiCvM/Wiq88nWiulIk/S2iiivxs9oKKKQnAoAjlfAqjM9Tzv1qhO9axQmQTP1qhO/Wp55OtUJ3rqiiGV5n61QmfrVid81QnfrXVFEMrzvWfO9WJ3qhM9dcUSyCZ6z5361Ynes+eSuqKIZXnkqhM/WrEz9aoTv1rqiiSCZ+tZ88lWJ3rPnfrXVFEMrzP1qjM+M1PM9UJn611RRDIJ3rPmerE79az5nrqiiWQTPVCZ+tTzvVCd66oohleeTrRVed+tFdKRJ+ntFFFfix7YVFM2BipCcCqkz00gIJnqhM/Wp53qhO9dMUSQTydaz5n61Ymes+d66ooggmeqE8mM1PO/WqE8ldUUQyvM9UJn4NTzPVGd+tdcUQV53xms+d6sTyVQmeuqKJK8z1Rnep53qhO/WuqKJZXnfrWfNJ1qxPJVCZ66oohkEz1nzvViaTrWfO9dUUQyCZ+tUJn61PO/WqE711RRBBM/Ws+eSrE79az53rqiiWQTPk0VGTk0V0Ig/UiiikJwK/Ej3SOZ8CqMz9anmfOaoTvWsUJkEz1nzydasTvWfO/JrqiiGQTPVCZ6nnfrVCd66oohkE79az55OtWJ5OtZ8z11xRLIJnqhM9WJ361nzvXVFEMrzydaoTP1qeZ6ozPXVFEleZ6oTvVid+tZ8711RRDK8z9aoTPVid+tUJpK6oohled6z5pKsTv1qhO9dUUSyCZ+tZ879asTyVQnk611RRBXneqEr5NTzv1qoTk11RRLCiiirJP1IqKZ8CpCcCqkz9a/E0rnukE71nzP1qxM9UJ5OK6YokrzvVCZ8A1PPJVCd+tdUUQQTP1qhO9TzvVCeSuuKIK80nWqEz9anmeqMz11RRBXnfrWfO/WrE79az53rqiiWQTPVCd6sTv1qhO9dUUSyvPJWfM/WrE79aoTPXVFEFeZ+DVCd6sTydaz53rqiiCvM/WqMz1PM9UJnrqiiGV5n61QnfrU879aoTyV1RRLIJWyajoJyaK3RIUUUUxH6hzPgVQmerE79aoTv1r8Xij3GQTPWfO/WrE79az53611RRDIJpKz5nqxO9UJnrqiiGQTydaz53qeeTrVCZ664olkE71QnfrU871QnkrqiiGV55KoTPjNTzPVGZ+tdUUSV5pKz5361YneqEz11RRDK8z9eaoTPViZ6oTP1rqiiGV53rPnfrVid+tUJnrqiiWQTP1rPmfrVid6z55K6oohleeTNUZWyanmkqoTk11RRIUUUVZIUUUUAfppM+KoTP1qxO/WqE71+ORR7bK879az5361YneqEz11xRBBM9Z871YneqE711RRBWmeqMz8Gp5nqhO9dUUSQTvWfPJ1qxPJWfM9dUUQQTvVCd6nmfrVCd+tdUUSQTydaz5nqed6oTPXVFEMgmfrVCd+tWJ5Kz55K6oogrzP1qhM9WJ361QneuqKIK878Gs+eTrVid+tUJ3rqiiWV5Wy1MoJyaK6CAooooAKKKKAP0lmfrVCeSrE74rPnevyKKPZZBO/Ws+Z+tWJ3zmqE710xRDK871nzv1qxO9UJnrriiWQTPVCd+tTzPVCd66oohleeTrVCZ6nmeqEz11RRLIJnrPnerE71nzvXVFEMgmfrVCZ6nmeqM79a6oohleeSs+Z+tWJ5Kz5nrqiiGQTP1qhM/WrE71nzvXVFEsrzP1qjK2TU871UJzXVFEsKKKKskKKKKACiiigD9Fp5OtZ88lWJnqhO/WvyaKPYZXmfg1QnkqxO/Ws+eSuuKIZXneqMz4qeZ6oTvXVFEEE7+9Z871PPJ1qhM/WuqKJIJnqhO+M1PNJ1qhPJXVFEled6oTPU88lUJnrqiiGQTPVCeTrU879aoTvXVFEFeZ+tUJnqed6ozvXVFEFed+tUJ361PPJ1rPnk611RRJDK2TUdBOTRW6ICiiimAUUUUAFFFFAH6DTvVCZ+tFFflUT1mUJ3rPnfrRRXXEllGZ6z5360UV1RIZnzv1qjM/WiiuqJJQnfrWfO9FFdUUQyhM/WqEz9aKK64IhlCd+tZ879aKK6oksoTP1qhM9FFdUSTPneqErZNFFdUUQMoooqyQooooAKKKKACiiigD/9kNCmVuZHN0cmVhbQ0KZW5kb2JqDQoNCjYgMCBvYmoNCjw8IC9UeXBlIC9Gb250DQogICAvU3VidHlwZSAvVHlwZTENCiAgIC9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQNCiAgIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nDQo+Pg0KZW5kb2JqDQoNCjcgMCBvYmoNCjw8DQogICAvRjEgNiAwIFINCj4+DQplbmRvYmoNCg0KOCAwIG9iag0KPDwgL0ltNCA0IDAgUg0KICAgPj4NCmVuZG9iag0KDQo5IDAgb2JqDQo8PA0KICAgL0ZvbnQgNyAwIFINCiAgIC9YT2JqZWN0IDggMCBSDQogICAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQyAvSW1hZ2VJIC9JbWFnZUIgXQ0KPj4NCmVuZG9iag0KDQoxIDAgb2JqDQo8PCAvVHlwZSAvUGFnZQ0KICAgL1BhcmVudCA1IDAgUg0KICAgL1Jlc291cmNlcyA5IDAgUg0KICAgL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXQ0KICAgL0dyb3VwIDw8IC9TIC9UcmFuc3BhcmVuY3kgL0NTIC9EZXZpY2VSR0IgL0kgdHJ1ZSA+Pg0KICAgL0NvbnRlbnRzIDIgMCBSDQo+Pg0KZW5kb2JqDQoNCjUgMCBvYmoNCjw8IC9UeXBlIC9QYWdlcw0KICAgL1Jlc291cmNlcyA5IDAgUg0KICAgL01lZGlhQm94IFsgMCAwIDU5NSA4NDIgXQ0KICAgL0tpZHMgWyAxIDAgUg0KICAgICAgICAgICBdDQogICAvQ291bnQgMQ0KPj4NCmVuZG9iag0KDQoxMCAwIG9iag0KPDwgL1R5cGUgL0NhdGFsb2cNCiAgIC9QYWdlcyA1IDAgUg0KPj4NCmVuZG9iag0KDQoxMSAwIG9iag0KPDwgL0NyZWF0b3IgPEZFRkYwMDU3MDA3MjAwNjkwMDc0MDA2NTAwNzI+DQovUHJvZHVjZXIgPEZFRkYwMDRGMDA3MDAwNjUwMDZFMDA0RjAwNjYwMDY2MDA2OTAwNjMwMDY1MDAyRTAwNkYwMDcyMDA2NzAwMjAwMDMyMDAyRTAwMzAwMDJEMDA3MDAwNzIwMDY1Pg0KL0NyZWF0aW9uRGF0ZSAoRDoyMDA3MDMwNTE1NTM1OSswMScwMCcpDQo+Pg0KZW5kb2JqDQoNCnhyZWYNCjAgMTINCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMzY5OCAwMDAwMCBuDQowMDAwMDAwMDIxIDAwMDAwIG4NCjAwMDAwMDAzMTAgMDAwMDAgbg0KMDAwMDAwMDMzNiAwMDAwMCBuDQowMDAwMDAzODgzIDAwMDAwIG4NCjAwMDAwMDMzODIgMDAwMDAgbg0KMDAwMDAwMzUwMiAwMDAwMCBuDQowMDAwMDAzNTQzIDAwMDAwIG4NCjAwMDAwMDM1ODQgMDAwMDAgbg0KMDAwMDAwNDAxOSAwMDAwMCBuDQowMDAwMDA0MDc5IDAwMDAwIG4NCnRyYWlsZXINCjw8IC9TaXplIDEyDQogICAvUm9vdCAxMCAwIFINCiAgIC9JbmZvIDExIDAgUg0KICAgL0lEIFsgPDYwMEE2NDFFNjM3QzAyN0U0NjEyMkI3ODM0NjczMzI5Pg0KICAgICAgICAgPDYwMEE2NDFFNjM3QzAyN0U0NjEyMkI3ODM0NjczMzI5PiBdDQo+Pg0Kc3RhcnR4cmVmDQo0Mjk0DQolJUVPRg0K
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS9cbiI7Ci8vIC0tCi8vIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCi8vIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZhciBGQVEgPSBGQVEgfHwge307CkZBUS5BZ2VudCA9IEZBUS5BZ2VudCB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgQ29uZmlybWF0aW9uRGlhbG9nLgogKi8KRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZyA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEB2YXJpYWJsZQogICAgICogQHByaXZhdGUKICAgICAqICAgICBUaGlzIHZhcmlhYmxlIHN0b3JlcyB0aGUgcGFyYW1ldGVycyB0aGF0IGFyZSBwYXNzZWQgZnJvbSB0aGUgRFRMIGFuZCBjb250YWluIGFsbCB0aGUgZGF0YSB0aGF0IHRoZSBkaWFsb2cgbmVlZHMuCiAgICAgKi8KICAgIHZhciBEaWFsb2dEYXRhID0gW107CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqIEBkZXNjcmlwdGlvbiBTaG93cyB3YWl0aW5nIGRpYWxvZyB1bnRpbCBzZWFyY2ggc2NyZWVuIGlzIHJlYWR5LgogICAgICovCiAgICBmdW5jdGlvbiBTaG93V2FpdGluZ0RpYWxvZyhQb3NpdGlvblRvcCl7CiAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coJzxkaXYgY2xhc3M9IlNwYWNpbmcgQ2VudGVyIj48c3BhbiBjbGFzcz0iQUpBWExvYWRlciIgdGl0bGU9IicgKyBDb3JlLkNvbmZpZy5HZXQoJ0xvYWRpbmdNc2cnKSArICciPjwvc3Bhbj48L2Rpdj4nLCAnJywgUG9zaXRpb25Ub3AsICdDZW50ZXInLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtFdmVudE9iamVjdH0gZXZlbnQgb2JqZWN0IG9mIHRoZSBjbGlja2VkIGVsZW1lbnQuCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzaG93cyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2l0aCAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgICAqLwogICAgVGFyZ2V0TlMuU2hvd0NvbmZpcm1hdGlvbkRpYWxvZyA9IGZ1bmN0aW9uIChFdmVudCkgewoKICAgICAgICB2YXIgTG9jYWxEaWFsb2dEYXRhLAogICAgICAgICAgICBQb3NpdGlvblRvcCwKICAgICAgICAgICAgRGF0YSwKICAgICAgICAgICAgQnV0dG9uczsKCiAgICAgICAgLy8gZ2V0IGdsb2JhbCBzYXZlZCBEaWFsb2dEYXRhIGZvciB0aGlzIGZ1bmN0aW9uCiAgICAgICAgTG9jYWxEaWFsb2dEYXRhID0gRGlhbG9nRGF0YVskKEV2ZW50LnRhcmdldCkuYXR0cignaWQnKV07CgogICAgICAgIC8vIGRlZmluZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRpYWxvZwogICAgICAgIFBvc2l0aW9uVG9wID0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpICsgKCQod2luZG93KS5oZWlnaHQoKSAqIDAuMyk7CgogICAgICAgIC8vIHNob3cgd2FpdGluZyBkaWFsb2cKICAgICAgICBTaG93V2FpdGluZ0RpYWxvZyhQb3NpdGlvblRvcCk7CgogICAgICAgIC8vIGFqYXggY2FsbCB0byB0aGUgbW9kdWxlIHRoYXQgZGVsZXRlcyB0aGUgdGVtcGxhdGUKICAgICAgICBEYXRhID0gTG9jYWxEaWFsb2dEYXRhLkRpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZzsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwgRGF0YSwgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CgogICAgICAgICAgICAvLyAnQ29uZmlybWF0aW9uJyBvcGVucyBhIGRpYWxvZyB3aXRoIDIgYnV0dG9uczogWWVzIGFuZCBObwogICAgICAgICAgICBpZiAoUmVzcG9uc2UuRGlhbG9nVHlwZSA9PT0gJ0NvbmZpcm1hdGlvbicpIHsKCiAgICAgICAgICAgICAgICAvLyBkZWZpbmUgeWVzIGFuZCBubyBidXR0b25zCiAgICAgICAgICAgICAgICBCdXR0b25zID0gW3sKICAgICAgICAgICAgICAgICAgICBMYWJlbDogTG9jYWxEaWFsb2dEYXRhLlRyYW5zbGF0ZWRUZXh0LlllcywKICAgICAgICAgICAgICAgICAgICBDbGFzczogIlByaW1hcnkiLAoKICAgICAgICAgICAgICAgICAgICAvLyBkZWZpbmUgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlICdZZXMnIGJ1dHRvbiBpcyBwcmVzc2VkCiAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uKCl7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlIFllcyBhbmQgTm8gYnV0dG9ucyB0byBwcmV2ZW50IG11bHRpcGxlIHN1Ym1pdHMKICAgICAgICAgICAgICAgICAgICAgICAgJCgnZGl2LkRpYWxvZzp2aXNpYmxlIGRpdi5Db250ZW50Rm9vdGVyIGJ1dHRvbicpLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byB0aGUgbW9kdWxlIHRoYXQgZG9lcyB0aGUgY29uZmlybWVkIGFjdGlvbiBhZnRlciBwcmVzc2luZyB0aGUgWWVzIGJ1dHRvbgogICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgTG9jYWxEaWFsb2dEYXRhLkNvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICBMYWJlbDogTG9jYWxEaWFsb2dEYXRhLlRyYW5zbGF0ZWRUZXh0Lk5vLAogICAgICAgICAgICAgICAgICAgIFR5cGU6ICJDbG9zZSIKICAgICAgICAgICAgICAgIH1dOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyAnTWVzc2FnZScgb3BlbnMgYSBkaWFsb2cgd2l0aCAxIGJ1dHRvbjogT2sKICAgICAgICAgICAgZWxzZSBpZiAoUmVzcG9uc2UuRGlhbG9nVHlwZSA9PT0gJ01lc3NhZ2UnKSB7CgogICAgICAgICAgICAgICAgLy8gZGVmaW5lIE9rIGJ1dHRvbgogICAgICAgICAgICAgICAgQnV0dG9ucyA9IFt7CiAgICAgICAgICAgICAgICAgICAgTGFiZWw6IExvY2FsRGlhbG9nRGF0YS5UcmFuc2xhdGVkVGV4dC5PaywKICAgICAgICAgICAgICAgICAgICBDbGFzczogIlByaW1hcnkiLAogICAgICAgICAgICAgICAgICAgIFR5cGU6ICJDbG9zZSIKICAgICAgICAgICAgICAgIH1dOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBzaG93IHRoZSBjb25maXJtYXRpb24gZGlhbG9nIHRvIGNvbmZpcm0gdGhlIGFjdGlvbgogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZyhSZXNwb25zZS5IVE1MLCBMb2NhbERpYWxvZ0RhdGEuRGlhbG9nVGl0bGUsIFBvc2l0aW9uVG9wLCAiQ2VudGVyIiwgdHJ1ZSwgQnV0dG9ucyk7CiAgICAgICAgfSwgJ2pzb24nKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0V2ZW50T2JqZWN0fSBldmVudCBvYmplY3Qgb2YgdGhlIGNsaWNrZWQgZWxlbWVudC4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHNob3dzIGEgY29uZmlybWF0aW9uIGRpYWxvZyB3aXRoIDIgYnV0dG9uczogWWVzIGFuZCBObwogICAgICovCiAgICBUYXJnZXROUy5CaW5kQ29uZmlybWF0aW9uRGlhbG9nID0gZnVuY3Rpb24gKERhdGEpIHsKICAgICAgICBEaWFsb2dEYXRhW0RhdGEuRWxlbWVudElEXSA9IERhdGE7CgogICAgICAgIC8vIGJpbmRpbmcgYSBjbGljayBldmVudCB0byB0aGUgZGVmaW5lZCBlbGVtZW50CiAgICAgICAgJChEaWFsb2dEYXRhW0RhdGEuRWxlbWVudElEXS5FbGVtZW50U2VsZWN0b3IpLmJpbmQoJ2NsaWNrJywgRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5TaG93Q29uZmlybWF0aW9uRGlhbG9nKTsKICAgIH07CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cgfHwge30pKTsK
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS9cbiI7Ci8vIC0tCi8vIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCi8vIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZhciBGQVEgPSBGQVEgfHwge307CkZBUS5BZ2VudCA9IEZBUS5BZ2VudCB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIFRpY2tldENvbXBvc2UuCiAqLwpGQVEuQWdlbnQuVGlja2V0Q29tcG9zZSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRFbGVtZW50IFRoZSBlZGl0b3IKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBJbml0aWFsaXplIHRoZSBuZWVkZWQgc3R1ZmYgZm9yIHRoZSBGQVEgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGlja2V0IHNjcmVlbnMuCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXRGQVFUaWNrZXRDb21wb3NlID0gZnVuY3Rpb24gKCRFbGVtZW50KSB7CiAgICAgICAgZnVuY3Rpb24gR2V0Q3Vyc29yUG9zaXRpb24oKSB7CiAgICAgICAgICAgIHZhciBFbGVtZW50ID0gJEVsZW1lbnRbMF0sCiAgICAgICAgICAgICAgICBFbGVtZW50VmFsdWUgPSAkRWxlbWVudC52YWwoKSwKICAgICAgICAgICAgICAgIFJhbmdlLAogICAgICAgICAgICAgICAgVGV4dFJhbmdlLAogICAgICAgICAgICAgICAgVGV4dFJhbmdlRHVwbGljYXRlLAogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IDAsCiAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IDA7CiAgICAgICAgICAgIC8vIEZpcmVmb3gKICAgICAgICAgICAgaWYgKEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQpIHsKICAgICAgICAgICAgICAgIFN0YXJ0UmFuZ2UgPSBFbGVtZW50LnNlbGVjdGlvblN0YXJ0OwogICAgICAgICAgICAgICAgRW5kUmFuZ2UgPSBFbGVtZW50LnNlbGVjdGlvbkVuZDsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBJRQogICAgICAgICAgICBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHsKICAgICAgICAgICAgICAgIFJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2UgPSBFbGVtZW50LmNyZWF0ZVRleHRSYW5nZSgpOwogICAgICAgICAgICAgICAgVGV4dFJhbmdlRHVwbGljYXRlID0gVGV4dFJhbmdlLmR1cGxpY2F0ZSgpOwogICAgICAgICAgICAgICAgVGV4dFJhbmdlLm1vdmVUb0Jvb2ttYXJrKFJhbmdlLmdldEJvb2ttYXJrKCkpOwogICAgICAgICAgICAgICAgVGV4dFJhbmdlRHVwbGljYXRlLnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0JywgVGV4dFJhbmdlKTsKICAgICAgICAgICAgICAgIFN0YXJ0UmFuZ2UgPSBFbmRSYW5nZSA9IFRleHRSYW5nZUR1cGxpY2F0ZS50ZXh0Lmxlbmd0aDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU2F2ZSBjdXJzb3IgcG9zaXRpb24gZm9yIGxhdGVyIHVzYWdlCiAgICAgICAgICAgICRFbGVtZW50LmRhdGEoJ0N1cnNvcicsIHsKICAgICAgICAgICAgICAgIFN0YXJ0UmFuZ2U6IFN0YXJ0UmFuZ2UsCiAgICAgICAgICAgICAgICBFbmRSYW5nZTogRW5kUmFuZ2UKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICB2YXIgSW5zdGFuY2VOYW1lID0gJEVsZW1lbnQuYXR0cignaWQnKTsKICAgICAgICAvLyBSZWdpc3RlciBSVEUgZXZlbnRzIGZvciBzYXZpbmcgdGhlIGN1cnNvciBwb3NpdGlvbgogICAgICAgIGlmICh0eXBlb2YgQ0tFRElUT1IgIT09ICd1bmRlZmluZWQnICYmIENLRURJVE9SICYmIENLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dCkgewogICAgICAgICAgICAvLyBHZXQgbGFzdCBjdXJzb3IgcG9zaXRpb24gYW5kIHNhdmUgaXQgKG9uIGZvY3VzIHdlIGNvbWUgYmFjayB0byB0aGlzIHBvc2l0aW9uKQogICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5vbignY29udGVudERvbScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZG9jdW1lbnQub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICQoJyMnICsgSW5zdGFuY2VOYW1lKS5kYXRhKCdSVEVDdXJzb3InLCBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZXMoKSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIENLRURJVE9SLmluc3RhbmNlc1tJbnN0YW5jZU5hbWVdLmRvY3VtZW50Lm9uKCdrZXl1cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjJyArIEluc3RhbmNlTmFtZSkuZGF0YSgnUlRFQ3Vyc29yJywgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKCkpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gbmVlZGVkIGZvciBjbGllbnQtc2lkZSB2YWxpZGF0aW9uIGFuZCBpbnNlcnRpbmcgZGF0YSBpbnRvIFJURQogICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5vbignZm9jdXMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAvLyBpZiBhIHNhdmVkIGN1cnNvciBwb3NpdGlvbiBleGlzdHMsIHNldCB0aGlzIHBvc2l0aW9uIG5vdwogICAgICAgICAgICAgICAgdmFyIFJURUN1cnNvclJhbmdlID0gJCgnIycgKyBJbnN0YW5jZU5hbWUpLmRhdGEoJ1JURUN1cnNvcicpLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbjsKICAgICAgICAgICAgICAgIGlmIChSVEVDdXJzb3JSYW5nZSkgewogICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbiA9IG5ldyBDS0VESVRPUi5kb20uc2VsZWN0aW9uKENLRURJVE9SLmluc3RhbmNlc1tJbnN0YW5jZU5hbWVdLmRvY3VtZW50KTsKICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb24uc2VsZWN0UmFuZ2VzKFJURUN1cnNvclJhbmdlKTsKICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgc2F2ZWQgY3Vyc29yIHBvc2l0aW9uICh0byBub3Qga2VlcCBvbGQgc3R1ZmYpCiAgICAgICAgICAgICAgICAgICAgJCgnIycgKyBJbnN0YW5jZU5hbWUpLmRhdGEoJ1JURUN1cnNvcicsIHVuZGVmaW5lZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAvLyBSZWdpc3RlciBldmVudHMgZm9yIHNhdmluZyB0aGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRleHRhcmVhCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgnY2xpY2suRkFRQ29tcG9zaW5nJykuYmluZCgnY2xpY2suRkFRQ29tcG9zaW5nJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgR2V0Q3Vyc29yUG9zaXRpb24oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgna2V5dXAuRkFRQ29tcG9zaW5nJykuYmluZCgna2V5dXAuRkFRQ29tcG9zaW5nJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgR2V0Q3Vyc29yUG9zaXRpb24oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsKCgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBUaXRsZSBvZiBhIEZBUSBhcnRpY2xlIHRvIGJlIHJldHVybmVkIGludG8gdGlja2V0IFN1YmplY3QKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBGaWVsZHMgb2YgYSBGQVEgYXJ0aWNsZSBhbmQgb3IgTGluayB0byB0aGUgcHVibGljIGludGVyZmFjZSBpbiBwbGFpbiB0ZXh0CiAgICAgKiBAcGFyYW0ge1N0cmluZ30gRmllbGRzIG9mIGEgRkFRIGFydGljbGUgYW5kIG9yIExpbmsgdG8gdGhlIHB1YmxpYyBpbnRlcmZhY2UgaW4gSFRNTAogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIERvIG5vdGhpbmcgYW5kIHNob3cgYW4gZXJyb3IgbWVzc2FnZS4KICAgICAqLwogICAgVGFyZ2V0TlMuU2V0RGF0YSA9IGZ1bmN0aW9uIChGQVFUaXRsZSwgRkFRQ29udGVudCwgRkFRSFRNTENvbnRlbnQpIHsKICAgICAgICBpZiAoJCgnI1N1YmplY3QnLCBwYXJlbnQuZG9jdW1lbnQpLmxlbmd0aCAmJiAkKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmxlbmd0aCkgewogICAgICAgICAgICB2YXIgJFBhcmVudFN1YmplY3QgPSAkKCcjU3ViamVjdCcsIHBhcmVudC5kb2N1bWVudCksCiAgICAgICAgICAgICAgICAkUGFyZW50Qm9keSA9ICQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCksCiAgICAgICAgICAgICAgICBQYXJlbnRCb2R5ID0gJFBhcmVudEJvZHlbMF0sCiAgICAgICAgICAgICAgICBQYXJlbnRCb2R5VmFsdWUgPSAkUGFyZW50Qm9keS52YWwoKSwKICAgICAgICAgICAgICAgIFJhbmdlLAogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IDAsCiAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IDAsCiAgICAgICAgICAgICAgICBOZXdQb3NpdGlvbiA9IDAsCiAgICAgICAgICAgICAgICBOZXdIVE1MOwoKICAgICAgICAgICAgLy8gY29weSBzdWJqZWN0CiAgICAgICAgICAgIGlmICgkUGFyZW50U3ViamVjdC52YWwoKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICRQYXJlbnRTdWJqZWN0LnZhbChGQVFUaXRsZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUGFyZW50U3ViamVjdC52YWwoJFBhcmVudFN1YmplY3QudmFsKCkgKyAnIC0gJyArIEZBUVRpdGxlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIEZBUSB0ZXh0IGFuZC9vciBsaW5rIHRvIFdZU0lXWUcgZWRpdG9yIGluIHBhcmVudCB3aW5kb3cKICAgICAgICAgICAgaWYgKHBhcmVudC5DS0VESVRPUiAmJiBwYXJlbnQuQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0KSB7CiAgICAgICAgICAgICAgICBwYXJlbnQuQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0LmZvY3VzKCk7CiAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIC8vIEluIHNvbWUgY2lyY3Vtc3RhbmNlcywgdGhpcyBjb21tYW5kIHRocm93cyBhbiBlcnJvciAoYWx0aG91Z2ggaW5zZXJ0aW5nIHRoZSBIVE1MIHdvcmtzKQogICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkgYWxzbyB3b3Jrcywgd2UganVzdCB3cmFwIGl0IGluIGEgdHJ5LWNhdGNoLXN0YXRlbWVudAogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5DS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuaW5zZXJ0SHRtbChGQVFIVE1MQ29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNhdGNoIChFcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAkLm5vb3AoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGluc2VydCBib2R5IGFuZC9vciBsaW5rIHRvIHRleHRhcmVhIChpZiBwb3NzaWJsZSB0byBjdXJzb3IgcG9zaXRpb24gb3RoZXJ3aXNlIHRvIHRoZSB0b3ApCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gR2V0IHByZXZpb3VzbHkgc2F2ZWQgY3Vyc29yIHBvc2l0aW9uIG9mIHRleHRhcmVhCiAgICAgICAgICAgICAgICBpZiAocGFyZW50LiQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCkuZGF0YSgnQ3Vyc29yJykpIHsKICAgICAgICAgICAgICAgICAgICBTdGFydFJhbmdlID0gcGFyZW50LiQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCkuZGF0YSgnQ3Vyc29yJykuU3RhcnRSYW5nZTsKICAgICAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IHBhcmVudC4kKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmRhdGEoJ0N1cnNvcicpLkVuZFJhbmdlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEFkZCBuZXcgdGV4dCB0byB0ZXh0YXJlYQogICAgICAgICAgICAgICAgJFBhcmVudEJvZHkudmFsKFBhcmVudEJvZHlWYWx1ZS5zdWJzdHIoMCwgU3RhcnRSYW5nZSkgKyBGQVFDb250ZW50ICsgUGFyZW50Qm9keVZhbHVlLnN1YnN0cihFbmRSYW5nZSwgUGFyZW50Qm9keVZhbHVlLmxlbmd0aCkpOwogICAgICAgICAgICAgICAgTmV3UG9zaXRpb24gPSBTdGFydFJhbmdlICsgRkFRQ29udGVudC5sZW5ndGg7CgogICAgICAgICAgICAgICAgLy8gSnVtcCB0byBuZXcgY3Vyc29yIHBvc2l0aW9uIChhZnRlciBpbnNlcnRlZCB0ZXh0KQogICAgICAgICAgICAgICAgaWYgKFBhcmVudEJvZHkuc2VsZWN0aW9uU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICBQYXJlbnRCb2R5LnNlbGVjdGlvblN0YXJ0ID0gTmV3UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgUGFyZW50Qm9keS5zZWxlY3Rpb25FbmQgPSBOZXdQb3NpdGlvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewogICAgICAgICAgICAgICAgICAgIFJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgUmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBOZXdQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgUmFuZ2Uuc2VsZWN0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2cnLCBwYXJlbnQuZG9jdW1lbnQpKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgYWxlcnQoJyRKU1RleHR7IlRoaXMgd2luZG93IG11c3QgYmUgY2FsbGVkIGZyb20gY29tcG9zZSB3aW5kb3cifScpOwogICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkFnZW50LlRpY2tldENvbXBvc2UgfHwge30pKTsK
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIERlZmF1bHQgU2V0dGluZ3MKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBzdWJzZWN0aW9uIEFydGljbGVMaXN0IEV4cGFuZGluZwogKi8KCi5GQVEgLk92ZXJ2aWV3Q29udHJvbCBkaXYgewogICAgcGFkZGluZzogMHB4Owp9CgouRkFRICNPdmVydmlld0JvZHkgewogICAgbWFyZ2luOiAwIDAgOHB4IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiBMYXJnZSBTaWRlYmFyQ29sdW1uCiAqLwoKLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyTGFzdCA+IC5TaWRlYmFyQ29sdW1uLkxhcmdlIHsKICAgIHdpZHRoOiAzNTBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4uTWVkaXVtIHsKICAgIHdpZHRoOiAyOTBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgovKioKICogQHN1YnNlY3Rpb24gRkFRTWluaUxpc3QKICovCgp1bC5GQVFNaW5pTGlzdCBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxMHB4Owp9CgoKLyoqCiAqIEBzdWJzZWN0aW9uIENhdGVnb3J5IHBhdGgKICovCgouRkFRUGF0aENhdGVnb3J5IHsKICAgIG1hcmdpbi1ib3R0b206IDEzcHggIWltcG9ydGFudDsKICAgIGhlaWdodDogYXV0bzsKICAgIG1pbi1oZWlnaHQ6IDI1cHg7CiAgICBtYXJnaW46IDAgLTFweDsKICAgIGJhY2tncm91bmQ6ICNBN0FBQUEgdXJsKCIuLi9pbWcvR3JhZGllbnRTbWFsbC5wbmciKSByZXBlYXQteCAwIDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLkZBUVBhdGhDYXRlZ29yeSBoMyB7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIHBhZGRpbmctbGVmdDogNXB4OwogICAgcGFkZGluZy10b3A6IDdweDsKfQoKaWZyYW1lLlRleHRPcHRpb24uRkFRIHsKICAgIHdpZHRoOiA5MDBweDsKICAgIG1pbi1oZWlnaHQ6IDYwMHB4Owp9Cgp9Cg==
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEZBUURldGFpbHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKCi8qKgogKiBAc3Vic2VjdGlvbiAgQXJ0aWNsZSB0YWJsZSBib2R5CiAqLwoKLkFydGljbGVGQVFIZWFkZXIgewogICAgbWFyZ2luOiAwIDhweDsKICAgIHBhZGRpbmc6IDJweCAwIDdweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGNvbG9yOiBHcmF5Owp9CgouQXJ0aWNsZUZBUUNvbnRlbnQgewogICAgcGFkZGluZzogMTFweCAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzsKfQoKLkFydGljbGVGQVFDb250ZW50IC5tZXNzYWdlIG9sIHsKICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWw7CiAgICBwYWRkaW5nLWxlZnQ6IDQwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgbWFyZ2luLXRvcDogMTJweDsKCn0KCi5BcnRpY2xlRkFRQ29udGVudCAubWVzc2FnZSB1bCB7CiAgICBsaXN0LXN0eWxlOiBkaXNjOwogICAgcGFkZGluZy1sZWZ0OiA0MHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgIG1hcmdpbi10b3A6IDEycHg7Cn0KCgouRkFRU3RhdGVOYW1lIHsKICAgIGZsb2F0OiByaWdodDsKICAgIGZvbnQtc2l6ZTogODAlOwogICAgZm9udC1zdHlsZTogaXRhbGljOwp9CgouUmF0ZUNoZWNrZWQgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKC4uL2ltZy9yYXRlLWJ1dHRvbi1jaGVja2VkLnBuZykgbm8tcmVwZWF0IHNjcm9sbCAwIDA7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGhlaWdodDogMTZweDsKICAgIG1hcmdpbi1yaWdodDogMnB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLXRvcDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogNHB4OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIGNvbG9yOiAjMDAwMDAwOwp9CgouUmF0ZVVuQ2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1nL3JhdGUtYnV0dG9uLXVuY2hlY2tlZC5wbmcpIG5vLXJlcGVhdCBzY3JvbGwgMCAwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDJweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy10b3A6IDE1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDRweDsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICBjb2xvcjogIzAwMDAwMDsKfQoKLlJhdGVTdGFyIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9pbWcvcmF0ZS1pbmRpY2F0b3IucG5nKSBuby1yZXBlYXQgc2Nyb2xsIDAgMDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAxNnB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmctbGVmdDogNnB4OwogICAgcGFkZGluZy1yaWdodDogNnB4Owp9CgouUmF0ZVN0YXJUZXh0IHsKICAgIHRleHQtaW5kZW50OjVweDsKfQoKLlJhdGVMYWJlbEJlZm9yZSB7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICBjb2xvcjogR3JheTsKfQoKLlJhdGVMYWJlbEFmdGVyIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWxlZnQ6IDVweDsKICAgIG1hcmdpbi1yaWdodDogMjVweDsKICAgIGNvbG9yOiBHcmF5Owp9CgouWm9vbVNtYWxsQnV0dG9uewogICAgbWFyZ2luLWxlZnQ6IDEycHg7Cn0KCn0K
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIFdpZGdldHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKCi8qKgogKiBAc3Vic2VjdGlvbiAgV2lkZ2V0Qm94CiAqLwoKLldpZGdldEJveCA+IC5GQVFDb250ZW50IHsKICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvZ3JhZGllbnRfbGlnaHRkYXJrLnBuZykgcmVwZWF0LXg7CiAgICBtaW4taGVpZ2h0OiAxMDBweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQzZDNUM0Owp9CgouV2lkZ2V0Qm94ID4gLkZBUUNvbnRlbnRTbWFsbCB7CiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2dyYWRpZW50X2xpZ2h0ZGFyay5wbmcpIHJlcGVhdC14OwogICAgbWluLWhlaWdodDogMTAwcHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0M2QzVDNDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQzZDNUM0Owp9CgouV2lkZ2V0Qm94ID4gLkZBUVZvdGluZyB7CiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2dyYWRpZW50X2xpZ2h0ZGFyay5wbmcpIHJlcGVhdC14OwogICAgbWluLWhlaWdodDogMTAwcHg7Cn0KCn0K
iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAQAAADtJZLrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACdJREFUGFdj+P+AieE/E8M/GInMQGNjcilHf0mXwqOFPITHjyhhAgB0x2Tmn7bVcAAAAABJRU5ErkJggg==
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVRJREFUeNrUk79rwkAUxy8x5EiMWqRYKJ0qdGupq3GrQwMZ0j+g/RtTUFGoSDQdCorQjoXORtsgNrmYn/bdYJFCsmTqgw/c997dl3fv7pjdbofyBItyRm4D7lBomoY4jsMMw1yBPAdKwDfwAUd9jaLI13U93QACJ0lyq6qqJstyWxTFE9d1LdM0n3q9Ht3ZB/xUgziOrxVFuWs2m/eEEBag02egH7bbLTMYDBagX1INwjC8aDQabcuyWHo7QRDQOQRVsfV6vQ3jYaYBbKjA+WuO4yDHIVBR9Jvjeb5G85lN9H3fXS6/Vp4XnxYKGFH2QYi7ovnMa4QF74ZhjAWhlGBcRHt4vpjMZrMxzWdWAE2cdjqPXUICrtW6aZXLlePNZv05mQzN0ajfxRhP/xowh08ZGohs2xagBzLIS+AIWANvkiQ9V6tVbz6fpxv8z7+Q2+BHgAEAHG6lklcQKVAAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATVJREFUeNrUU71qhEAQ9q8S0mhip3C5kCpcFcgjiJfmal/BKr2lr2DtK1wR9BkCaYRUQTzUQtDE5sB/MTOJAQs3jVUGhp2Z75vPnV2XHseRWmMMtdJWC3DzxDTNnyLHbWC5A7+coA/wt77vT5hYlrUsAASKZdkHWZb3mqYdJEm6wXqWZYHneccwDN1hGF6II3Rddw3Nj7quP0HzDko8OsZYQww5RIGmaXaqqh4YhrnA3cwda4ghh3gGdV1fiaK4bdt28cAQQw5RoCxLGr/2lyGHOAKAn0mShDAnteSIIYcoUFWV7zjOM5DPuJPfxik+I4Yc4gh5ngdRFLlpmnKGYew3YFiH6zvZtu36vu/yPB/Me+j5W1AU5XstiuIW7vseQmmCMvg/XgVBeMckjuNlgf/5mL4EGAAhHbltcqEYDQAAAABJRU5ErkJggg==
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKQ2lDQ1BJQ0MgcHJvZmlsZQAAeNqdU3dYk/cWPt/3ZQ9WQtjwsZdsgQAiI6wIyBBZohCSAGGEEBJAxYWIClYUFRGcSFXEgtUKSJ2I4qAouGdBiohai1VcOO4f3Ke1fXrv7e371/u855zn/M55zw+AERImkeaiagA5UoU8Otgfj09IxMm9gAIVSOAEIBDmy8JnBcUAAPADeXh+dLA//AGvbwACAHDVLiQSx+H/g7pQJlcAIJEA4CIS5wsBkFIAyC5UyBQAyBgAsFOzZAoAlAAAbHl8QiIAqg0A7PRJPgUA2KmT3BcA2KIcqQgAjQEAmShHJAJAuwBgVYFSLALAwgCgrEAiLgTArgGAWbYyRwKAvQUAdo5YkA9AYACAmUIszAAgOAIAQx4TzQMgTAOgMNK/4KlfcIW4SAEAwMuVzZdL0jMUuJXQGnfy8ODiIeLCbLFCYRcpEGYJ5CKcl5sjE0jnA0zODAAAGvnRwf44P5Dn5uTh5mbnbO/0xaL+a/BvIj4h8d/+vIwCBAAQTs/v2l/l5dYDcMcBsHW/a6lbANpWAGjf+V0z2wmgWgrQevmLeTj8QB6eoVDIPB0cCgsL7SViob0w44s+/zPhb+CLfvb8QB7+23rwAHGaQJmtwKOD/XFhbnauUo7nywRCMW735yP+x4V//Y4p0eI0sVwsFYrxWIm4UCJNx3m5UpFEIcmV4hLpfzLxH5b9CZN3DQCshk/ATrYHtctswH7uAQKLDljSdgBAfvMtjBoLkQAQZzQyefcAAJO/+Y9AKwEAzZek4wAAvOgYXKiUF0zGCAAARKCBKrBBBwzBFKzADpzBHbzAFwJhBkRADCTAPBBCBuSAHAqhGJZBGVTAOtgEtbADGqARmuEQtMExOA3n4BJcgetwFwZgGJ7CGLyGCQRByAgTYSE6iBFijtgizggXmY4EImFINJKApCDpiBRRIsXIcqQCqUJqkV1II/ItchQ5jVxA+pDbyCAyivyKvEcxlIGyUQPUAnVAuagfGorGoHPRdDQPXYCWomvRGrQePYC2oqfRS+h1dAB9io5jgNExDmaM2WFcjIdFYIlYGibHFmPlWDVWjzVjHVg3dhUbwJ5h7wgkAouAE+wIXoQQwmyCkJBHWExYQ6gl7CO0EroIVwmDhDHCJyKTqE+0JXoS+cR4YjqxkFhGrCbuIR4hniVeJw4TX5NIJA7JkuROCiElkDJJC0lrSNtILaRTpD7SEGmcTCbrkG3J3uQIsoCsIJeRt5APkE+S+8nD5LcUOsWI4kwJoiRSpJQSSjVlP+UEpZ8yQpmgqlHNqZ7UCKqIOp9aSW2gdlAvU4epEzR1miXNmxZDy6Qto9XQmmlnafdoL+l0ugndgx5Fl9CX0mvoB+nn6YP0dwwNhg2Dx0hiKBlrGXsZpxi3GS+ZTKYF05eZyFQw1zIbmWeYD5hvVVgq9ip8FZHKEpU6lVaVfpXnqlRVc1U/1XmqC1SrVQ+rXlZ9pkZVs1DjqQnUFqvVqR1Vu6k2rs5Sd1KPUM9RX6O+X/2C+mMNsoaFRqCGSKNUY7fGGY0hFsYyZfFYQtZyVgPrLGuYTWJbsvnsTHYF+xt2L3tMU0NzqmasZpFmneZxzQEOxrHg8DnZnErOIc4NznstAy0/LbHWaq1mrX6tN9p62r7aYu1y7Rbt69rvdXCdQJ0snfU6bTr3dQm6NrpRuoW623XP6j7TY+t56Qn1yvUO6d3RR/Vt9KP1F+rv1u/RHzcwNAg2kBlsMThj8MyQY+hrmGm40fCE4agRy2i6kcRoo9FJoye4Ju6HZ+M1eBc+ZqxvHGKsNN5l3Gs8YWJpMtukxKTF5L4pzZRrmma60bTTdMzMyCzcrNisyeyOOdWca55hvtm82/yNhaVFnMVKizaLx5balnzLBZZNlvesmFY+VnlW9VbXrEnWXOss623WV2xQG1ebDJs6m8u2qK2brcR2m23fFOIUjynSKfVTbtox7PzsCuya7AbtOfZh9iX2bfbPHcwcEh3WO3Q7fHJ0dcx2bHC866ThNMOpxKnD6VdnG2ehc53zNRemS5DLEpd2lxdTbaeKp26fesuV5RruutK10/Wjm7ub3K3ZbdTdzD3Ffav7TS6bG8ldwz3vQfTw91jicczjnaebp8LzkOcvXnZeWV77vR5Ps5wmntYwbcjbxFvgvct7YDo+PWX6zukDPsY+Ap96n4e+pr4i3z2+I37Wfpl+B/ye+zv6y/2P+L/hefIW8U4FYAHBAeUBvYEagbMDawMfBJkEpQc1BY0FuwYvDD4VQgwJDVkfcpNvwBfyG/ljM9xnLJrRFcoInRVaG/owzCZMHtYRjobPCN8Qfm+m+UzpzLYIiOBHbIi4H2kZmRf5fRQpKjKqLupRtFN0cXT3LNas5Fn7Z72O8Y+pjLk722q2cnZnrGpsUmxj7Ju4gLiquIF4h/hF8ZcSdBMkCe2J5MTYxD2J43MC52yaM5zkmlSWdGOu5dyiuRfm6c7Lnnc8WTVZkHw4hZgSl7I/5YMgQlAvGE/lp25NHRPyhJuFT0W+oo2iUbG3uEo8kuadVpX2ON07fUP6aIZPRnXGMwlPUit5kRmSuSPzTVZE1t6sz9lx2S05lJyUnKNSDWmWtCvXMLcot09mKyuTDeR55m3KG5OHyvfkI/lz89sVbIVM0aO0Uq5QDhZML6greFsYW3i4SL1IWtQz32b+6vkjC4IWfL2QsFC4sLPYuHhZ8eAiv0W7FiOLUxd3LjFdUrpkeGnw0n3LaMuylv1Q4lhSVfJqedzyjlKD0qWlQyuCVzSVqZTJy26u9Fq5YxVhlWRV72qX1VtWfyoXlV+scKyorviwRrjm4ldOX9V89Xlt2treSrfK7etI66Trbqz3Wb+vSr1qQdXQhvANrRvxjeUbX21K3nShemr1js20zcrNAzVhNe1bzLas2/KhNqP2ep1/XctW/a2rt77ZJtrWv913e/MOgx0VO97vlOy8tSt4V2u9RX31btLugt2PGmIbur/mft24R3dPxZ6Pe6V7B/ZF7+tqdG9s3K+/v7IJbVI2jR5IOnDlm4Bv2pvtmne1cFoqDsJB5cEn36Z8e+NQ6KHOw9zDzd+Zf7f1COtIeSvSOr91rC2jbaA9ob3v6IyjnR1eHUe+t/9+7zHjY3XHNY9XnqCdKD3x+eSCk+OnZKeenU4/PdSZ3Hn3TPyZa11RXb1nQ8+ePxd07ky3X/fJ897nj13wvHD0Ivdi2yW3S609rj1HfnD94UivW2/rZffL7Vc8rnT0Tes70e/Tf/pqwNVz1/jXLl2feb3vxuwbt24m3Ry4Jbr1+Hb27Rd3Cu5M3F16j3iv/L7a/eoH+g/qf7T+sWXAbeD4YMBgz8NZD+8OCYee/pT/04fh0kfMR9UjRiONj50fHxsNGr3yZM6T4aeypxPPyn5W/3nrc6vn3/3i+0vPWPzY8Av5i8+/rnmp83Lvq6mvOscjxx+8znk98ab8rc7bfe+477rfx70fmSj8QP5Q89H6Y8en0E/3Pud8/vwv94Tz+4A5JREAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfaCwYACxtEW+sDAAAA9klEQVQ4y9WTMWrDQBBF3xqpWNjSg6sYgotcQqVOkCO4zSV0ibQx5AAxqFapNgdwFSy78AEMzrJiJ80WwkQioCrTDPv/7Gf+zK5RVebEgpkxWyAbHpqmIc9zsiyjKIoc2AJvbduGvu8JIVCW5XQHIQRijADrBK1jjIQQ/m4hFW8AB2zGLgOY4RaMMS93/BNwGAKq+jol8AA8A4+AHdTdgC/gQ1VPoxbquj4Be+B418kR2Cd+fAZd1wFck3eA75QdcE38uID3HufcMuFn59wncAYWzrml935aQFWx1q5E5CIiu6qq3kVkJyIXa+3qt2dv/v9fmC3wA6mIXzzSqa/vAAAAAElFTkSuQmCC
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIERlZmF1bHQgU2V0dGluZ3MKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBzdWJzZWN0aW9uICBMYXlvdXRGaXhlZFNpZGViYXIKICovCgouTGF5b3V0Rml4ZWRTaWRlYmFyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouTGF5b3V0Rml4ZWRTaWRlYmFyID4gLkNvbnRlbnRDb2x1bW4gewogICAgLyoqCiAgICAgKiBAbm90ZSAgICBmb3JjZSBvd24gQmxvY2sgRm9ybWF0dGluZyBDb250ZXh0IGZvciBuZXN0ZWQgZmxvYXRzCiAgICAgKi8KICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIgPiAuU2lkZWJhckNvbHVtbiB7CiAgICBvdmVyZmxvdy14OiBoaWRkZW47Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIuU2lkZWJhckxhc3QgPiAuU2lkZWJhckNvbHVtbiB7CiAgICB3aWR0aDogMjcwcHg7CiAgICBmbG9hdDogcmlnaHQ7CiAgICBtYXJnaW4tbGVmdDogMTZweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLlJUTCAuTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4gewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMTZweDsKfQoKLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyRmlyc3QgPiAuU2lkZWJhckNvbHVtbiB7CiAgICB3aWR0aDogMjcwcHg7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9CgouUlRMIC5MYXlvdXRGaXhlZFNpZGViYXIuU2lkZWJhckZpcnN0ID4gLlNpZGViYXJDb2x1bW4gewogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiBMYXJnZSBTaWRlYmFyQ29sdW1uCiAqLwoKLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyTGFzdCA+IC5TaWRlYmFyQ29sdW1uLkxhcmdlIHsKICAgIHdpZHRoOiAzMDBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgovKioKICogQHN1YnNlY3Rpb24gIEN1c3RvbWVyIFdpZGdldFNpbXBsZQogKi8KCi5XaWRnZXRTaW1wbGUgewogICAgYm9yZGVyOiAxcHggc29saWQgI0U5RTlFOTsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRkZGOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNEREQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgM3B4ICNFRUU7CiAgICAtbW96LWJveC1zaGFkb3c6IDAgMCAzcHggI0VFRTsKICAgIGJveC1zaGFkb3c6IDAgMCAycHggI0VFRTsKICAgIHBhZGRpbmc6IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogYXV0bzsKICAgIHotaW5kZXg6IDEwOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLldpZGdldFNpbXBsZSAuSGVhZGVyIHsKICAgIHBhZGRpbmc6IDVweCA4cHggM3B4OwogICAgY29sb3I6ICMyMjI7CiAgICBiYWNrZ3JvdW5kOiAjQTdBQUFBIHVybCgiLi4vaW1nL0dyYWRpZW50U21hbGwucG5nIikgcmVwZWF0LXggMCAwOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNENkQ2RDY7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouV2lkZ2V0U2ltcGxlIC5IZWFkZXIgYSB7CiAgICBjb2xvcjogIzIyMjsKfQoKLldpZGdldFNpbXBsZSAuSGVhZGVyIGgzIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZmxvYXQ6IGxlZnQ7Cn0KCi5SVEwgLldpZGdldFNpbXBsZSAuSGVhZGVyIGgzIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLldpZGdldFNpbXBsZSAuSGVhZGVyIGgzIHNwYW4gewogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKfQoKLldpZGdldFNpbXBsZSAuQ29udGVudCB7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZzogMTNweCA4cHg7CiAgICBiYWNrZ3JvdW5kOiAjRkZGOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNFOUU5RTk7Cn0KCi5XaWRnZXRTaW1wbGUgLlBhZ2luYXRpb24gewogICAgZm9udC1zaXplOiAxMXB4Owp9CgovKioKICogQHN1YnNlY3Rpb24gRkFRSGVhZGVyCiAqLwoKLkZBUUhlYWRlciBoMiB7CiAgICBtYXJnaW46IDNweCAwIDA7CiAgICBmb250LXNpemU6IDI0cHg7CiAgICBsaW5lLWhlaWdodDogMjRweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZsb2F0OiBsZWZ0Owp9Ci5SVEwgLkZBUUhlYWRlciBoMiB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5GQVFIZWFkZXIgLkZBUUhvb2sgewogICAgY29sb3I6ICM2NjY7CiAgICBmb250LXNpemU6IDEycHg7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiBPdmVydmlldwogKi8KCi5PdmVydmlldyB0aGVhZCB7CiAgICBiYWNrZ3JvdW5kOiAjQTdBQUFBIHVybCgiLi4vaW1nL0dyYWRpZW50U21hbGwucG5nIikgcmVwZWF0LXggMCAtMzFweDsKICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIEZBUU1pbmlMaXN0CiAqLwoKdWwuRkFRTWluaUxpc3Qgc3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTBweDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIENhdGVnb3J5IHBhdGgKICovCi5GQVFQYXRoQ2F0ZWdvcnkgewogICAgcGFkZGluZzogNHB4IDhweCA0cHg7CiAgICBjb2xvcjogIzZBNkE2QTsKICAgIGJhY2tncm91bmQ6ICNBN0FBQUEgdXJsKCIuLi9pbWcvR3JhZGllbnRTbWFsbC5wbmciKSByZXBlYXQteCAwIDA7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0Q2RDZENjsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGRkY7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7Cn0KCi5GQVFQYXRoQ2F0ZWdvcnkgaDMgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCn0K
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIERlZmF1bHQgU2V0dGluZ3MKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLldpZGdldFNpbXBsZSAuSGVhZGVyIHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7Cn0KCn0K
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEZBUURldGFpbHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLkFydGljbGVGQVFDb250ZW50IHsKICAgIHBhZGRpbmc6IDExcHggMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7Cn0KCi5BcnRpY2xlRkFRQ29udGVudCAubWVzc2FnZSBvbCB7CiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsOwogICAgcGFkZGluZy1sZWZ0OiA0MHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgIG1hcmdpbi10b3A6IDEycHg7Cn0KCi5BcnRpY2xlRkFRQ29udGVudCAubWVzc2FnZSB1bCB7CiAgICBsaXN0LXN0eWxlOiBkaXNjOwogICAgcGFkZGluZy1sZWZ0OiA0MHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgIG1hcmdpbi10b3A6IDEycHg7Cn0KCi5SYXRlQ2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1nL3JhdGUtYnV0dG9uLWNoZWNrZWQucG5nKSBuby1yZXBlYXQgc2Nyb2xsIDAgMDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAycHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmctdG9wOiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiA0cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgY29sb3I6ICMwMDAwMDA7Cgp9CgouUmF0ZVVuQ2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1nL3JhdGUtYnV0dG9uLXVuY2hlY2tlZC5wbmcpIG5vLXJlcGVhdCBzY3JvbGwgMCAwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDJweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy10b3A6IDE1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDRweDsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICBjb2xvcjogIzAwMDAwMDsKCn0KCi5SYXRlU3RhciB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1nL3JhdGUtaW5kaWNhdG9yLnBuZykgbm8tcmVwZWF0IHNjcm9sbCAwIDA7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGhlaWdodDogMTZweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4OwogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDZweDsKICAgIHBhZGRpbmctcmlnaHQ6IDZweDsKICAgIG1hcmdpbi10b3A6IDJweDsKfQoKLlJhdGVTdGFyVGV4dCB7CiAgICB0ZXh0LWluZGVudDo1cHg7CiAgICBmbG9hdDogbGVmdDsKCn0KCi5SYXRlTGFiZWxCZWZvcmUgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICBjb2xvcjogR3JheTsKfQoKLlJhdGVMYWJlbEFmdGVyIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWxlZnQ6IDVweDsKICAgIG1hcmdpbi1yaWdodDogMjVweDsKICAgIGNvbG9yOiBHcmF5Owp9CgouUmF0aW5nTGFiZWwgewogICAgZmxvYXQ6IGxlZnQ7Cn0KCi5TcGFjaW5nVG9wIHsKICAgIG1hcmdpbi10b3A6IDEzcHg7Cn0KCi5TcGFjaW5nVG9wTGFyZ2UgewogICAgbWFyZ2luLXRvcDogMjZweDsKfQoKLlZvdGluZ1F1ZXN0aW9uIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OjEwcHg7CiAgICBjb2xvcjogIzAwMDAwMDsKfQoKLlZvdGluZ0JveCB7CiAgICBtaW4td2lkdGg6IDIwcGM7CiAgICBtYXJnaW46IDAgMzBweCAyMXB4OwogICAgY29sb3I6ICM2QTZBNkE7CiAgICBiYWNrZ3JvdW5kOiAjRjBGMEYwOwogICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjRjlGOUY5LCAjRjBGMEYwKTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oI0Y5RjlGOSksIHRvKCNGMEYwRjApKTsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0Q2RDZENjsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNENkQ2RDY7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNXB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDVweDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0Q2RDZENjsKfQoKLlZvdGluZ0JveCA+ICNNZXNzZW5nZXIgewogICAgaGVpZ2h0OiBhdXRvOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNFRUU7Cn0KCi5SU1NJY29uIHsKICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvcnNzLnBuZykgbm8tcmVwZWF0OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICB3aWR0aDogMjhweDsKfQoKLkRldGFpbHMgLkZBUUxhYmVsIHsKICAgIHdpZHRoOiA4NXB4OwogICAgbWFyZ2luOiAwIDNweDsKICAgIGNvbG9yOiAjQUFBOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLlJUTCAuRGV0YWlscyAuRkFRTGFiZWwgewogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKCi5EZXRhaWxzIC5BdHRhY2htZW50cyAuRkFRTGFiZWwgewogICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9wYXBlci1jbGlwLnBuZykgbm8tcmVwZWF0IHJpZ2h0OwogICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgICB0ZXh0LWFsaWduOmxlZnQ7Cgp9Ci5SVEwgLkRldGFpbHMgLkF0dGFjaG1lbnRzIC5GQVFMYWJlbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0OwogICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgICB0ZXh0LWFsaWduOnJpZ2h0Owp9CgouS2V5d29yZCBhIHsKICAgIGNvbG9yOiAjMDAwOwp9Cgp9Cg==
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIFdpZGdldHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKCi8qKgogKiBAc3Vic2VjdGlvbiAgV2lkZ2V0Qm94CiAqLwoKLkNhbGxGb3JBY3Rpb24gewogICAgcGFkZGluZzogMDsKICAgIGJhY2tncm91bmQ6ICNGM0YzRjMgdXJsKC4uL2ltZy9TbWFsbERhcmtHcmFkaWVudC5wbmcpIHJlcGVhdC14OwogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjODg4OwogICAgYm94LXNoYWRvdzogMCAxcHggMCAjRTZFNkU2OwogICAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAwICNFNkU2RTY7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDAgI0U2RTZFNjsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi8qKgogKiBAY3NzLWZvciAgICAgRmlyZWZveAogKiBAbm90ZSAgICAgICAgYnVnOiBidXR0b24gY29udGFpbmluZyBhbiBlbGVtZW50IGhhcyBhbiBoaWRkZW4gcGFkZGluZwogKi8KCi5DYWxsRm9yQWN0aW9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgIGJvcmRlcjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5DYWxsRm9yQWN0aW9uOmhvdmVyIHsKICAgIGNvbG9yOiAjMDAwOwogICAgYm9yZGVyLWNvbG9yOiAjNjk2OTY5Owp9CgouQ2FsbEZvckFjdGlvbiBzcGFuIHsKICAgIGhlaWdodDogMTJweDsKICAgIHBhZGRpbmc6IDNweCA3cHggNnB4OwogICAgbGluZS1oZWlnaHQ6IDE0cHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgY29sb3I6ICMzMzM7CiAgICBmb250OiBib2xkIDExcHgvMTRweCAiSGVsdmV0aWNhIE5ldWUiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwogICAgYm9yZGVyOiAxcHggc29saWQgI0ZGRjsKICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYmFja2dyb3VuZDogI0RERERERCB1cmwoIi4uL2ltZy9idXR0b25fYmcucG5nIikgcmVwZWF0LXg7Cgp9CgouQ2FsbEZvckFjdGlvbjphY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI0RERDsKICAgIC1tb3otYm94LXNoYWRvdzogbm9uZTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi5DYWxsRm9yQWN0aW9uOmFjdGl2ZSBzcGFuIHsKICAgIHBhZGRpbmc6IDRweCA3cHggNXB4OwogICAgYm9yZGVyLWNvbG9yOiAjREREOwogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNEREQ7CiAgICBiYWNrZ3JvdW5kOiAjRTRFNEU0IHVybCguLi9pbWcvU21hbGxEYXJrR3JhZGllbnQucG5nKSByZXBlYXQteDsKCn0KCi5TZWFyY2hCb3ggewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouU2VhcmNoQm94IGlucHV0W3R5cGU9J3RleHQnXSB7CiAgICBoZWlnaHQ6IDE1cHg7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiA0cHggNXB4OwogICAgZm9udDogbm9ybWFsIDEycHgvMTVweCAiSGVsdmV0aWNhIE5ldWUiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwogICAgYm9yZGVyLWNvbG9yOiAjOTk5OwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHggMCAwIDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXJhZGl1czogM3B4IDAgMCAzcHg7CiAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogICAgd2lkdGg6IDEwcGM7Cn0KCi5SVEwgLlNlYXJjaEJveCBpbnB1dFt0eXBlPSd0ZXh0J117CiAgICBib3JkZXItbGVmdDogbm9uZTsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM5OTk7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDAgM3B4IDNweCAwOwogICAgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7CiAgICB3aWR0aDogMTBwYzsKfQoKLlNlYXJjaEJveCBpbnB1dDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM2NjY7CiAgICBib3JkZXItcmlnaHQ6IG5vbmU7Cn0KLlJUTCAuU2VhcmNoQm94IGlucHV0OmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogIzY2NjsKICAgIGJvcmRlci1sZWZ0OiBub25lOwp9CgouU2VhcmNoQm94IGJ1dHRvbiB7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBtYXJnaW46IDAgMCAwIC00cHg7CiAgICBwYWRkaW5nOiAzcHggM3B4IDRweDsKICAgIGNvbG9yOiAjMzMzOwogICAgZm9udDogYm9sZCAxMXB4LzE0cHggIkhlbHZldGljYSBOZXVlIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsKICAgIGJhY2tncm91bmQ6ICNEREREREQgdXJsKCIuLi9pbWcvYnV0dG9uX2JnLnBuZyIpIHJlcGVhdC14OwogICAgYm9yZGVyOiAxcHggc29saWQgIzg4ODsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7CiAgICAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7CiAgICBib3JkZXItcmFkaXVzOiAwIDNweCAzcHggMDsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGRkY7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KCi5SVEwgLlNlYXJjaEJveCBidXR0b24gewogICAgaGVpZ2h0OiAyNXB4OwogICAgbWFyZ2luOiAwIC00cHggMCAwOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHggMCAwIDNweDsKICAgIC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4OwogICAgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweCAwIDAgM3B4OwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZGRjsKICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM4ODg7Cn0KCi5TZWFyY2hCb3ggYnV0dG9uOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogIzY5Njk2OTsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLlNlYXJjaEJveCBidXR0b246YWN0aXZlIHsKICAgIHBhZGRpbmc6IDRweCAzcHggM3B4OwogICAgYmFja2dyb3VuZDogI0U0RTRFNCB1cmwoLi4vaW1nL1NtYWxsRGFya0dyYWRpZW50LnBuZykgcmVwZWF0LXg7CiAgICBvdXRsaW5lOiBub25lOwp9Cgp9Cg==
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIFRpY2tldERldGFpbHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBidWdmaXggICAgICBIYXNMYXlvdXQgcmVuZGVyaW5nIGJ1ZwogKi8KCi5XaWRnZXRTaW1wbGUsCi5XaWRnZXRTaW1wbGUgLkNvbnRlbnQgPiBkaXYgewogICAgem9vbTogMTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLldpZGdldEJveCAuQ29udGVudCB7CiAgICBtYXJnaW4tdG9wOiAtNHB4Owp9CgouV2lkZ2V0U2ltcGxlID4gLkhlYWRlciBoMiB7CiAgICB3aWR0aDogMTAwJTsKfQoKLldpZGdldFNpbXBsZSA+IC5IZWFkZXIgLldpZGdldEFjdGlvbiArIGgyIHsKICAgIHdpZHRoOiBhdXRvOwp9CgouV2lkZ2V0QWN0aW9uIHsKICAgIGZsb2F0OiBub25lOwogICAgem9vbTogMTsKICAgIGRpc3BsYXk6IGlubGluZTsKfQoKLldpZGdldEFjdGlvbi5Ub2dnbGUgYSB7CiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2VtcHR5X2JhY2tncm91bmQucG5nKTsKfQoKLkFjdGlvbkxpc3QgYnV0dG9uIHsKICAgIG1hcmdpbi10b3A6IDFweDsKfQoKdWwuVGFibGVsaWtlIHsKICAgIHpvb206IDE7Cn0KCnVsLlRhYmxlbGlrZSBsaSB7CiAgICBtYXJnaW4tYm90dG9tOiAtM3B4Owp9Cgp1bC5UYWJsZWxpa2UgbGkuSGVhZGVyIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCmJ1dHRvbi5DYWxsRm9yQWN0aW9uIHsKICAgIGRpc3BsYXk6IGlubGluZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKYnV0dG9uLkNhbGxGb3JBY3Rpb24gc3BhbiB7CiAgICBwYWRkaW5nOiAzcHggMCAxcHg7CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXI6IDA7CiAgICBoZWlnaHQ6IGF1dG87Cn0KCi5TZWFyY2hCb3ggYnV0dG9uIHsKICAgIG1hcmdpbjogMXB4IDAgMCAtNHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAzcHggM3B4IDRweCAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAxcHggc29saWQgIzg4OCAhaW1wb3J0YW50OwoKICAgIH0KCn0gLyogZW5kIEBtZWRpYSAqLwo=
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVRJREFUeNrUk79rwkAUxy8x5EiMWqRYKJ0qdGupq3GrQwMZ0j+g/RtTUFGoSDQdCorQjoXORtsgNrmYn/bdYJFCsmTqgw/c997dl3fv7pjdbofyBItyRm4D7lBomoY4jsMMw1yBPAdKwDfwAUd9jaLI13U93QACJ0lyq6qqJstyWxTFE9d1LdM0n3q9Ht3ZB/xUgziOrxVFuWs2m/eEEBag02egH7bbLTMYDBagX1INwjC8aDQabcuyWHo7QRDQOQRVsfV6vQ3jYaYBbKjA+WuO4yDHIVBR9Jvjeb5G85lN9H3fXS6/Vp4XnxYKGFH2QYi7ovnMa4QF74ZhjAWhlGBcRHt4vpjMZrMxzWdWAE2cdjqPXUICrtW6aZXLlePNZv05mQzN0ajfxRhP/xowh08ZGohs2xagBzLIS+AIWANvkiQ9V6tVbz6fpxv8z7+Q2+BHgAEAHG6lklcQKVAAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATVJREFUeNrUU71qhEAQ9q8S0mhip3C5kCpcFcgjiJfmal/BKr2lr2DtK1wR9BkCaYRUQTzUQtDE5sB/MTOJAQs3jVUGhp2Z75vPnV2XHseRWmMMtdJWC3DzxDTNnyLHbWC5A7+coA/wt77vT5hYlrUsAASKZdkHWZb3mqYdJEm6wXqWZYHneccwDN1hGF6II3Rddw3Nj7quP0HzDko8OsZYQww5RIGmaXaqqh4YhrnA3cwda4ghh3gGdV1fiaK4bdt28cAQQw5RoCxLGr/2lyGHOAKAn0mShDAnteSIIYcoUFWV7zjOM5DPuJPfxik+I4Yc4gh5ngdRFLlpmnKGYew3YFiH6zvZtu36vu/yPB/Me+j5W1AU5XstiuIW7vseQmmCMvg/XgVBeMckjuNlgf/5mL4EGAAhHbltcqEYDQAAAABJRU5ErkJggg==
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QsVOXI8qU0aTCd93tykEZacuoswfwOJKFMGzrWgyxRA634YYw9oDsJzswmw4jP6XfXAbNmsH4xJItBuFZO/B/XjNxoFyHZ/UA4Xkad+rR/AgDnRQ6tVPB/FpfRATZIOG9hwyAy0VZBhFgW8yiMHaICbpudj+QyXAGxUa6GzWfFowLkEURSVolh9FYPW4Eajar7Kzukbl6/xRtVcazbU3Mp3m5Fyfw6ykvyvnxvLmmiz1yytqlDIupbTZDr/wXejytRe3s3gzDsbFZbNZCiMcpVa8zb8n5ub1/wQYAOUGgqaMcoNoAAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAQAAADifZiHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUCJljYWBgYWBkQSGJQUxEq0QYDgAmKgCxQuGUQQAAAABJRU5ErkJggg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpDb25maWc7CnVzZSBLZXJuZWw6OlN5c3RlbTo6Q2FjaGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnOwp1c2UgS2VybmVsOjpTeXN0ZW06OkNTVjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpHcm91cDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czsKdXNlIEtlcm5lbDo6U3lzdGVtOjpVc2VyOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhbGlkOwp1c2UgS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RkFROwoKdXNlIHZhcnMgcXcoQElTQSAkVkVSU0lPTik7Cgo9aGVhZDEgTkFNRQoKRkFRLnBtIC0gY29kZSB0byBleGNlY3V0ZSBkdXJpbmcgcGFja2FnZSBpbnN0YWxsYXRpb24KCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6Q29uZmlnOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpMb2c7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok1haW47CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OlRpbWU7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkRCOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpYTUw7CiAgICB1c2UgdmFyOjpwYWNrYWdlc2V0dXA6OkZBUTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gS2VybmVsOjpDb25maWctPm5ldygpOwogICAgbXkgJExvZ09iamVjdCAgICA9IEtlcm5lbDo6U3lzdGVtOjpMb2ctPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICk7CiAgICBteSAkTWFpbk9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpNYWluLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICApOwogICAgbXkgJFRpbWVPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6VGltZS0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgKTsKICAgIG15ICREQk9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpEQi0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIE1haW5PYmplY3QgICA9PiAkTWFpbk9iamVjdCwKICAgICk7CiAgICBteSAkWE1MT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlhNTC0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIERCT2JqZWN0ICAgICA9PiAkREJPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgID0+ICRNYWluT2JqZWN0LAogICAgKTsKICAgIG15ICRDb2RlT2JqZWN0ID0gdmFyOjpwYWNrYWdlc2V0dXA6OkZBUS0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIE1haW5PYmplY3QgICA9PiAkTWFpbk9iamVjdCwKICAgICAgICBUaW1lT2JqZWN0ICAgPT4gJFRpbWVPYmplY3QsCiAgICAgICAgREJPYmplY3QgICAgID0+ICREQk9iamVjdCwKICAgICAgICBYTUxPYmplY3QgICAgPT4gJFhNTE9iamVjdCwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkT2JqZWN0ICgKICAgICAgICBxdyhDb25maWdPYmplY3QgTG9nT2JqZWN0IE1haW5PYmplY3QgVGltZU9iamVjdCBEQk9iamVjdCBYTUxPYmplY3QgRW5jb2RlT2JqZWN0KQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+eyRPYmplY3R9ID0gJFBhcmFteyRPYmplY3R9IHx8IGRpZSAiR290IG5vICRPYmplY3QhIjsKICAgIH0KCiAgICAjIGNyZWF0ZSBuZWVkZWQgc3lzY29uZmlnIG9iamVjdAogICAgJFNlbGYtPntTeXNDb25maWdPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZy0+bmV3KCAleyRTZWxmfSApOwoKICAgICMgcmVidWlsZCBaWloqIGZpbGVzCiAgICAkU2VsZi0+e1N5c0NvbmZpZ09iamVjdH0tPldyaXRlRGVmYXVsdCgpOwoKICAgICMgZGVmaW5lIHRoZSBaWlogZmlsZXMKICAgIG15IEBaWlpGaWxlcyA9ICgKICAgICAgICAnWlpaQUF1dG8ucG0nLAogICAgICAgICdaWlpBdXRvLnBtJywKICAgICk7CgogICAgIyByZWxvYWQgdGhlIFpaWiBmaWxlcyAobW9kX3Blcmwgd29ya2Fyb3VuZCkKICAgIGZvciBteSAkWlpaRmlsZSAoQFpaWkZpbGVzKSB7CgogICAgICAgIFBSRUZJWDoKICAgICAgICBmb3IgbXkgJFByZWZpeCAoQElOQykgewogICAgICAgICAgICBteSAkRmlsZSA9ICRQcmVmaXggLiAnL0tlcm5lbC9Db25maWcvRmlsZXMvJyAuICRaWlpGaWxlOwogICAgICAgICAgICBuZXh0IFBSRUZJWCBpZiAhLWYgJEZpbGU7CiAgICAgICAgICAgIGRvICRGaWxlOwogICAgICAgICAgICBsYXN0IFBSRUZJWDsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKICAgICRTZWxmLT57Q1NWT2JqZWN0fSAgICA9IEtlcm5lbDo6U3lzdGVtOjpDU1YtPm5ldyggJXskU2VsZn0gKTsKICAgICRTZWxmLT57R3JvdXBPYmplY3R9ICA9IEtlcm5lbDo6U3lzdGVtOjpHcm91cC0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntVc2VyT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06OlVzZXItPm5ldyggJXskU2VsZn0gKTsKICAgICRTZWxmLT57VmFsaWRPYmplY3R9ICA9IEtlcm5lbDo6U3lzdGVtOjpWYWxpZC0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntMaW5rT2JqZWN0fSAgID0gS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QtPm5ldyggJXskU2VsZn0gKTsKICAgICRTZWxmLT57RkFRT2JqZWN0fSAgICA9IEtlcm5lbDo6U3lzdGVtOjpGQVEtPm5ldyggJXskU2VsZn0gKTsKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9ICA9IEtlcm5lbDo6U3lzdGVtOjpDYWNoZS0+bmV3KCAleyRTZWxmfSApOwogICAgJFNlbGYtPntTdGF0c09iamVjdH0gID0gS2VybmVsOjpTeXN0ZW06OlN0YXRzLT5uZXcoCiAgICAgICAgJXskU2VsZn0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgZGVmaW5lIGZpbGUgcHJlZml4CiAgICAkU2VsZi0+e0ZpbGVQcmVmaXh9ID0gJ0ZBUSc7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBDb2RlSW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlSW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVJbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpbnNlcnQgdGhlIGZhcSBzdGF0ZXMKICAgICRTZWxmLT5fSW5zZXJ0RkFRU3RhdGVzKCk7CgogICAgIyBhZGQgdGhlIGdyb3VwIGZhcQogICAgJFNlbGYtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAnZmFxJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnZmFxIGRhdGFiYXNlIHVzZXJzJywKICAgICk7CgogICAgIyBhZGQgdGhlIGdyb3VwIGZhcV9hZG1pbgogICAgJFNlbGYtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAnZmFxX2FkbWluJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnZmFxIGFkbWluIHVzZXJzJywKICAgICk7CgogICAgIyBhZGQgdGhlIGdyb3VwIGZhcV9hcHByb3ZhbAogICAgJFNlbGYtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAnZmFxX2FwcHJvdmFsJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnZmFxIGFwcHJvdmFsIHVzZXJzJywKICAgICk7CgogICAgIyBhZGQgdGhlIGZhcSBncm91cHMgdG8gdGhlIGNhdGVnb3J5ICdNaXNjJwogICAgJFNlbGYtPl9DYXRlZ29yeUdyb3VwU2V0KAogICAgICAgIENhdGVnb3J5ID0+ICdNaXNjJywKICAgICAgICBHcm91cHMgICA9PiBbICdmYXEnLCAnZmFxX2FkbWluJywgJ2ZhcV9hcHByb3ZhbCcgXSwKICAgICk7CgogICAgIyBjcmVhdGUgYWRpdGlvbmFsIEZBUSBsYW5ndWFnZXMKICAgICRTZWxmLT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkU2VsZi0+e1N0YXRzT2JqZWN0fS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVSZWluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlUmVpbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVJlaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaW5zZXJ0IHRoZSBmYXEgc3RhdGVzCiAgICAkU2VsZi0+X0luc2VydEZBUVN0YXRlcygpOwoKICAgICMgYWRkIHRoZSBncm91cCBmYXEKICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBkYXRhYmFzZSB1c2VycycsCiAgICApOwoKICAgICMgYWRkIHRoZSBncm91cCBmYXFfYWRtaW4KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcV9hZG1pbicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBhZG1pbiB1c2VycycsCiAgICApOwoKICAgICMgYWRkIHRoZSBncm91cCBmYXFfYXBwcm92YWwKICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcV9hcHByb3ZhbCcsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBhcHByb3ZhbCB1c2VycycsCiAgICApOwoKICAgICMgaW5zdGFsbCBzdGF0cwogICAgJFNlbGYtPntTdGF0c09iamVjdH0tPlN0YXRzSW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICApOwoKICAgICMgY3JlYXRlIGFkaXRpb25hbCBGQVEgbGFuZ3VhZ2VzCiAgICAkU2VsZi0+X0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcygpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVXBncmFkZSgpCgpydW4gdGhlIGNvZGUgdXBncmFkZSBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkU2VsZi0+e1N0YXRzT2JqZWN0fS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICk7CgogICAgIyBjcmVhdGUgYWRpdGlvbmFsIEZBUSBsYW5ndWFnZXMKICAgICRTZWxmLT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7CgogICAgIyBkZWxldGUgdGhlIEZBUSBjYWNoZSAodG8gYXZvaWQgb2xkIGRhdGEgZnJvbSBwcmV2aW91cyBGQVEgbW9kdWxlcykKICAgICRTZWxmLT57Q2FjaGVPYmplY3R9LT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVXBncmFkZVNwZWNpYWwoKQoKcnVuIHNwZWNpYWwgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlU3BlY2lhbCgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlU3BlY2lhbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY29udmVydCBcbiB0byA8YnI+IGZvciBleGlzdGluZyBhcnRpY2xlcwogICAgJFNlbGYtPl9Db252ZXJ0TmV3bGluZXMoKTsKCiAgICAjIHN0YXJ0IG5vcm1hbCBjb2RlIHVwZ3JhZGUKICAgICRTZWxmLT5Db2RlVXBncmFkZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVW5pbnN0YWxsKCkKCnJ1biB0aGUgY29kZSB1bmluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlYWN0aXZhdGUgdGhlIGdyb3VwIGZhcQogICAgJFNlbGYtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAnZmFxJywKICAgICk7CgogICAgIyBkZWFjdGl2YXRlIHRoZSBncm91cCBmYXFfYWRtaW4KICAgICRTZWxmLT5fR3JvdXBEZWFjdGl2YXRlKAogICAgICAgIE5hbWUgPT4gJ2ZhcV9hZG1pbicsCiAgICApOwoKICAgICMgZGVhY3RpdmF0ZSB0aGUgZ3JvdXAgZmFxX2FwcHJvdmFsCiAgICAkU2VsZi0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICdmYXFfYXBwcm92YWwnLAogICAgKTsKCiAgICAjIHVuaW5zdGFsbCBzdGF0cwogICAgJFNlbGYtPntTdGF0c09iamVjdH0tPlN0YXRzVW5pbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGxpbmtzIHdpdGggRkFRIGFydGljbGVzCiAgICAkU2VsZi0+X0xpbmtEZWxldGUoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0luc2VydEZBUVN0YXRlcygpCgppbnNlcnRzIG5lZWRlZCBGQVEgc3RhdGVzIGludG8gdGFibGUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9JbnNlcnRGQVFTdGF0ZXMoKTsKCj1jdXQKCnN1YiBfSW5zZXJ0RkFRU3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWZpbmUgZmFxX3N0YXRlX3R5cGVzID0+IGZhcV9zdGF0ZXMKICAgIG15ICVTdGF0ZSA9ICgKICAgICAgICAnaW50ZXJuYWwnID0+ICdpbnRlcm5hbCAoYWdlbnQpJywKICAgICAgICAnZXh0ZXJuYWwnID0+ICdleHRlcm5hbCAoY3VzdG9tZXIpJywKICAgICAgICAncHVibGljJyAgID0+ICdwdWJsaWMgKGFsbCknLAogICAgKTsKCiAgICBmb3IgbXkgJFR5cGUgKCBrZXlzICVTdGF0ZSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHN0YXRlIHR5cGUKICAgICAgICBteSAkU3RhdGVUeXBlUmVmID0gJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkVHlwZSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhlIHN0YXRlCiAgICAgICAgJFNlbGYtPntGQVFPYmplY3R9LT5TdGF0ZUFkZCgKICAgICAgICAgICAgTmFtZSAgID0+ICRTdGF0ZXskVHlwZX0sCiAgICAgICAgICAgIFR5cGVJRCA9PiAkU3RhdGVUeXBlUmVmLT57U3RhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9Db252ZXJ0TmV3bGluZXMoKQoKY292ZXJ0cyBhbGwgXG4gaW50byA8YnI+IGZvciBGaWVsZHMgMS02IGluIGFsbCBleGlzdGluZyBGQVEgYXJ0aWNsZXMKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Db252ZXJ0TmV3bGluZXMoKTsKCj1jdXQKCnN1YiBfQ29udmVydE5ld2xpbmVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBvbmx5IGNvbnZlcnQgXG4gdG8gPGJyPiBpZiBIVE1MIHZpZXcgaXMgZW5hYmxlZAogICAgcmV0dXJuIGlmICEkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRkFROjpJdGVtOjpIVE1MJyk7CgogICAgIyBnZXQgYWxsIEZBUSBJRHMKICAgIG15IEBGQVFJRHM7CiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gIlNFTEVDVCBpZCBGUk9NIGZhcV9pdGVtIiwKICAgICk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2goIEBGQVFJRHMsICRSb3dbMF0gKTsKICAgIH0KCiAgICBJRDoKICAgIGZvciBteSAkSXRlbUlEIChARkFRSURzKSB7CgogICAgICAgICMgZ2V0IEZBUSBkYXRhCiAgICAgICAgbXkgJUZBUSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgRkFRIGFydGljbGUgZmllbGRzIDEtNgogICAgICAgIG15ICRGb3VuZE5ld2xpbmU7CiAgICAgICAgS0VZOgogICAgICAgIGZvciBteSAkS2V5IChxdyAoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CiAgICAgICAgICAgIG5leHQgS0VZIGlmICEkRkFReyRLZXl9OwoKICAgICAgICAgICAgIyByZXBsYWNlIFxuIHdpdGggPGJyPgogICAgICAgICAgICAkRkFReyRLZXl9ID1+IHMvXG4vPGJyXC8+XG4vZzsKCiAgICAgICAgICAgICRGb3VuZE5ld2xpbmUgPSAxOwogICAgICAgIH0KICAgICAgICBuZXh0IElEIGlmICEkRm91bmROZXdsaW5lOwoKICAgICAgICAjIHVwZGF0ZSBGQVEgZGF0YQogICAgICAgICRTZWxmLT57RkFRT2JqZWN0fS0+RkFRVXBkYXRlKAogICAgICAgICAgICAlRkFRLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfR3JvdXBBZGQoKQoKYWRkIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdUaGUgZ3JvdXAgZGVzY3JpcHRpb24uJywKICAgICk7Cgo9Y3V0CgpzdWIgX0dyb3VwQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgRGVzY3JpcHRpb24pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICMgZ2V0IGxpc3Qgb2YgYWxsIGdyb3VwcwogICAgbXkgJUdyb3VwTGlzdCA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cExpc3QoKTsKCiAgICAjIHJldmVyc2UgdGhlIGdyb3VwIGxpc3QgZm9yIGVhc2llciBsb29rdXAKICAgIG15ICVHcm91cExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlR3JvdXBMaXN0OwoKICAgICMgY2hlY2sgaWYgZ3JvdXAgYWxyZWFkeSBleGlzdHMKICAgIG15ICRHcm91cElEID0gJEdyb3VwTGlzdFJldmVyc2V7ICRQYXJhbXtOYW1lfSB9OwoKICAgICMgcmVhY3RpdmF0ZSB0aGUgZ3JvdXAKICAgIGlmICgkR3JvdXBJRCkgewoKICAgICAgICAjIGdldCBjdXJyZW50IGdyb3VwIGRhdGEKICAgICAgICBteSAlR3JvdXBEYXRhID0gJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwR2V0KAogICAgICAgICAgICBJRCAgICAgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmVhY3RpdmF0ZSBncm91cAogICAgICAgICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cFVwZGF0ZSgKICAgICAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFkZCB0aGUgZ3JvdXAKICAgIGVsc2UgewogICAgICAgIHJldHVybiBpZiAhJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwQWRkKAogICAgICAgICAgICBOYW1lICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgQ29tbWVudCA9PiAkUGFyYW17RGVzY3JpcHRpb259LAogICAgICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBsb29rdXAgdGhlIG5ldyBncm91cCBpZAogICAgbXkgJE5ld0dyb3VwSUQgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBhZGQgdXNlciByb290IHRvIHRoZSBncm91cAogICAgJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTWVtYmVyQWRkKAogICAgICAgIEdJRCAgICAgICAgPT4gJE5ld0dyb3VwSUQsCiAgICAgICAgVUlEICAgICAgICA9PiAxLAogICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICBybyAgICAgICAgPT4gMSwKICAgICAgICAgICAgbW92ZV9pbnRvID0+IDEsCiAgICAgICAgICAgIGNyZWF0ZSAgICA9PiAxLAogICAgICAgICAgICBvd25lciAgICAgPT4gMSwKICAgICAgICAgICAgcHJpb3JpdHkgID0+IDEsCiAgICAgICAgICAgIHJ3ICAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfR3JvdXBEZWFjdGl2YXRlKCkKCmRlYWN0aXZhdGUgYSBncm91cAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICd0aGUtZ3JvdXAtbmFtZScsCiAgICApOwoKPWN1dAoKc3ViIF9Hcm91cERlYWN0aXZhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBOYW1lIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb29rdXAgZ3JvdXAgaWQKICAgIG15ICRHcm91cElEID0gJFNlbGYtPntHcm91cE9iamVjdH0tPkdyb3VwTG9va3VwKAogICAgICAgIEdyb3VwID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkR3JvdXBJRDsKCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPlZhbGlkTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICAjIGdldCBjdXJyZW50IGdyb3VwIGRhdGEKICAgIG15ICVHcm91cERhdGEgPSAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+R3JvdXBHZXQoCiAgICAgICAgSUQgICAgID0+ICRHcm91cElELAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGRlYWN0aXZhdGUgZ3JvdXAKICAgICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cFVwZGF0ZSgKICAgICAgICAlR3JvdXBEYXRhLAogICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkTGlzdFJldmVyc2V7aW52YWxpZH0sCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0xpbmtEZWxldGUoKQoKZGVsZXRlIGFsbCBleGlzdGluZyBsaW5rcyB0byBmYXEgYXJ0aWNsZXMKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9MaW5rRGVsZXRlKCk7Cgo9Y3V0CgpzdWIgX0xpbmtEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBhbGwgZmFxIGFydGljbGUgaWRzCiAgICBteSBARkFRSURzID0gKCk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCBGUk9NIGZhcV9pdGVtJwogICAgKTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBARkFRSURzLCAkUm93WzBdOwogICAgfQogICAgcmV0dXJuIGlmICFARkFRSURzOwoKICAgICMgZGVsZXRlIHRoZSBmYXEgYXJ0aWNsZSBsaW5rcwogICAgZm9yIG15ICRGQVFJRCAoQEZBUUlEcykgewogICAgICAgICRTZWxmLT57TGlua09iamVjdH0tPkxpbmtEZWxldGVBbGwoCiAgICAgICAgICAgIE9iamVjdCA9PiAnRkFRJywKICAgICAgICAgICAgS2V5ICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcygpCgpjcmVhdGVzIGFkaXRpb25hbCBGQVEgbGFuZ3VhZ2VzIGZvciBzeXN0ZW0gZGVmYXVsdCBsYW5ndWFnZSBhbmQgdXNlciBsYW5ndWFnZQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcygpOwoKPWN1dAoKc3ViIF9DcmVhdGVBZGl0aW9uYWxGQVFMYW5ndWFnZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBzeXN0ZW0gZGVmYXV0IGxhbmd1YWdlCiAgICBteSAkTGFuZ3VhZ2UgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRGVmYXVsdExhbmd1YWdlJyk7CiAgICBpZiAoJExhbmd1YWdlKSB7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgRkFRIGxhbmd1YWdlcwogICAgICAgIG15ICVDdXJyZW50TGFuZ3VhZ2VzID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdXNlIHJldmVyc2UgaGFzaCBmb3IgZWFzeSBsb29rdXAKICAgICAgICBteSAlUmV2ZXJzZUxhbmd1YWdlcyA9IHJldmVyc2UgJUN1cnJlbnRMYW5ndWFnZXM7CgogICAgICAgICMgY2hlY2sgaWYgbGFuZ3VhZ2UgaXMgYWxyZWFkeSBkZWZpbmVkCiAgICAgICAgaWYgKCAhJFJldmVyc2VMYW5ndWFnZXN7JExhbmd1YWdlfSApIHsKCiAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPntGQVFPYmplY3R9LT5MYW5ndWFnZUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkTGFuZ3VhZ2UsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0NhdGVnb3J5R3JvdXBTZXQoKQoKQWRkcyB0aGUgZ2l2ZW4gZ3JvdXAgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGNhdGVnb3J5LgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NhdGVnb3J5R3JvdXBTZXQoCiAgICAgICAgQ2F0ZWdvcnkgPT4gJ01pc2MnLAogICAgICAgIEdyb3VwcyAgID0+IFsgJ2ZhcScsICdmYXEtYWRtaW4nLCAnZmFxX2FwcHJvdmFsJyBdLAogICAgKTsKCj1jdXQKCnN1YiBfQ2F0ZWdvcnlHcm91cFNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeSBHcm91cHMpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoIHJlZiAkUGFyYW17R3JvdXBzfSBuZSAnQVJSQVknICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiR3JvdXBzIG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMgYW5kIHRoZWlyIGlkcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT57RkFRT2JqZWN0fS0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgbG9va3VwIGhhc2ggZm9yIHRoZSBjYXRvcnkgaWQKICAgIG15ICVGQVEySUQgPSByZXZlcnNlICV7JENhdGVnb3J5VHJlZX07CgogICAgIyBsb29rdXAgdGhlIGNhdGVnb3J5IGlkCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVEySUR7ICRQYXJhbXtDYXRlZ29yeX0gfTsKCiAgICAjIGxvb2t1cCB0aGUgZ3JvdXAgaWRzCiAgICBteSBAR3JvdXBJRHM7CiAgICBmb3IgbXkgJEdyb3VwICggQHsgJFBhcmFte0dyb3Vwc30gfSApIHsKICAgICAgICBteSAkR3JvdXBJRCA9ICRTZWxmLT57R3JvdXBPYmplY3R9LT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJEdyb3VwLAogICAgICAgICk7CiAgICAgICAgcHVzaCBAR3JvdXBJRHMsICRHcm91cElEOwogICAgfQoKICAgICMgc2V0IGNhdGVnb3J5IGdyb3VwCiAgICAkU2VsZi0+e0ZBUU9iamVjdH0tPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBHcm91cElEcyAgID0+IFxAR3JvdXBJRHMsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgU29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQKCj1jdXQK
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KCjxvdHJzX3N0YXRzPgo8Q2FjaGU+MDwvQ2FjaGU+CjxEZXNjcmlwdGlvbj5TaG93cyBhbiBvdmVydmlldyBvZiBGQVEgYXJ0aWNsZXMgaW4gYSBkZWZpbmVkIHRpbWUgcGVyaW9kIHNvcnRlZCBieSBhY2Nlc3MgbnVtYmVycy48L0Rlc2NyaXB0aW9uPgo8Rm9ybWF0PkNTVjwvRm9ybWF0Pgo8Rm9ybWF0PlByaW50PC9Gb3JtYXQ+CjxHcmFwaFNpemU+PC9HcmFwaFNpemU+CjxPYmplY3Q+PC9PYmplY3Q+CjxPYmplY3RNb2R1bGU+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpTdGF0aWM6OkZBUUFjY2VzczwvT2JqZWN0TW9kdWxlPgo8UGVybWlzc2lvbj5zdGF0czwvUGVybWlzc2lvbj4KPFN0YXRUeXBlPnN0YXRpYzwvU3RhdFR5cGU+CjxTdW1Db2w+MDwvU3VtQ29sPgo8U3VtUm93PjA8L1N1bVJvdz4KPFRpdGxlPkZBUSBhY2Nlc3Mgb3ZlcnZpZXc8L1RpdGxlPgo8VmFsaWQ+MTwvVmFsaWQ+Cjwvb3Ryc19zdGF0cz4K
JVBERi0xLjQKJaqrrK0KMSAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDIuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMi4xKQovQ3JlYXRpb25EYXRlIChEOjIwMTkwODIwMTYxMTIzWikKPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAzIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2ZZ1BUWRaA73uvc6Chu2kyNDlJlNCA5JwkSBYV6G4yLTQ5mJDBERhBRCQpgogCDjg6BBlFRRQDoqCAeRoZBJRxcBRRUVnAH7NVu7VbW7W1f7bPj/e+OufWO+e+ulXvq3oAyJDi2QnJsD4ACbwUvq+zHTMoOISJvQ9wgAxIgAow4ezkRFtvbw+wHCtrwT/E+1EArdzv6fzz+r8MEieBxwEAoi9zLIebzF7mncsczUngrOSnVzg9JTEFANh7men85QGXmbPCEd84Y4WjvnHR6ho/X/tlPgoAjhS1yoRTKxyxytSuFWZH8xMAkO5bXq/CTuQvP196pZfitxlWQ3RlP8woLo/LD0/hcpj/4db+ffxdL3Ty8sv/rzf4H/dZOTvf6K3l6pmAGBV/5baWAcB6DQBS8ldO5TAAlN0AdPT8lYs4DkBnCQCSz9ip/LRvOdTq7IAAKIAOpIA8UAYaQAcYAlNgAWyAI3ADXsAPBIPNgA2iQQLgg3SQA3aBfFAISsBBUAVqQQNoAq3gDOgE58FlcA3cAnfBCHgMBGASvAJz4D1YhCAIC5EhGiQFKUCqkDZkCLEgK8gR8oB8oWAoDIqCeFAqlAPthgqhUqgKqoOaoJ+gc9Bl6AY0BD2ExqEZ6E/oE4zAJJgOy8FqsB7Mgm1hd9gP3gRHwUlwFpwH74Mr4Hr4FNwBX4ZvwSOwAH4FzyMAISIMRBHRQViIPeKFhCCRCB/ZjhQg5Ug90op0I/3IPUSAzCIfURgUDcVE6aAsUC4ofxQblYTajipCVaFOojpQfah7qHHUHOormoyWRWujzdGu6CB0FDodnY8uRzei29FX0SPoSfR7DAbDwKhjTDEumGBMLCYbU4Q5jGnDXMIMYSYw81gsVgqrjbXEemHDsSnYfGwl9hT2InYYO4n9gCPiFHCGOCdcCI6Hy8WV45pxPbhh3BRuES+KV8Wb473wHHwmvhjfgO/G38FP4hcJYgR1giXBjxBL2EWoILQSrhKeEN4SiUQlohnRhxhD3EmsIJ4mXieOEz+SqCQtkj0plJRK2kc6QbpEekh6SyaT1cg25BByCnkfuYl8hfyM/EGEJqIr4irCEdkhUi3SITIs8pqCp6hSbCmbKVmUcspZyh3KrCheVE3UXjRcdLtoteg50THReTGamIGYl1iCWJFYs9gNsWkqlqpGdaRyqHnUY9Qr1AkaQlOm2dPYtN20BtpV2iQdQ1enu9Jj6YX0H+mD9DlxqriReIB4hni1+AVxAQNhqDFcGfGMYsYZxijjk4SchK0EV2KvRKvEsMSCpIykjSRXskCyTXJE8pMUU8pRKk5qv1Sn1FNplLSWtI90uvQR6avSszJ0GQsZtkyBzBmZR7KwrJasr2y27DHZAdl5OXk5Z7lEuUq5K3Kz8gx5G/lY+TL5HvkZBZqClUKMQpnCRYWXTHGmLTOeWcHsY84pyiq6KKYq1ikOKi4qqSv5K+UqtSk9VSYos5QjlcuUe5XnVBRUPFVyVFpUHqniVVmq0aqHVPtVF9TU1QLV9qh1qk2rS6q7qmept6g/0SBrWGskadRr3NfEaLI04zQPa97VgrWMtaK1qrXuaMPaJtox2oe1h9ag15it4a2pXzOmQ9Kx1UnTadEZ12Xoeujm6nbqvtZT0QvR26/Xr/dV31g/Xr9B/7EB1cDNINeg2+BPQy1DtmG14f215LVOa3es7Vr7xkjbiGt0xOiBMc3Y03iPca/xFxNTE75Jq8mMqYppmGmN6RiLzvJmFbGum6HN7Mx2mJ03+2huYp5ifsb8DwsdiziLZovpderruOsa1k1YKlmGW9ZZCqyYVmFWR60E1orW4db11s9tlG04No02U7aatrG2p2xf2+nb8e3a7Rbsze232V9yQBycHQocBh2pjv6OVY7PnJScopxanOacjZ2znS+5oF3cXfa7jLnKubJdm1zn3Ezdtrn1uZPcN7hXuT/30PLge3R7wp5ungc8n6xXXc9b3+kFvFy9Dng99Vb3TvL+xQfj4+1T7fPC18A3x7d/A23Dlg3NG9772fkV+z321/BP9e8NoASEBjQFLAQ6BJYGCoL0grYF3QqWDo4J7grBhgSENIbMb3TceHDjZKhxaH7o6Cb1TRmbbmyW3hy/+cIWypbwLWfD0GGBYc1hn8O9wuvD5yNcI2oi5tj27EPsVxwbThlnhmvJLeVORVpGlkZOR1lGHYiaibaOLo+ejbGPqYp5E+sSWxu7EOcVdyJuKT4wvi0BlxCWcI5H5cXx+rbKb83YOpSonZifKEgyTzqYNMd35zcmQ8mbkrtS6Msf6YFUjdTvUsfTrNKq0z6kB6SfzRDL4GUMZGpl7s2cynLKOp6NymZn9+Yo5uzKGd9mu61uO7Q9YnvvDuUdeTsmdzrvPLmLsCtu1+1c/dzS3He7A3d358nl7cyb+M75u5Z8kXx+/tgeiz2136O+j/l+cO/avZV7vxZwCm4W6heWF34uYhfd/MHgh4oflvZF7hssNik+UoIp4ZWM7rfef7JUrDSrdOKA54GOMmZZQdm7g1sO3ig3Kq89RDiUekhQ4VHRValSWVL5uSq6aqTarrqtRrZmb83CYc7h4SM2R1pr5WoLaz8djTn6oM65rqNerb78GOZY2rEXDQEN/cdZx5sapRsLG7+c4J0QnPQ92ddk2tTULNtc3AK3pLbMnAo9dfdHhx+7WnVa69oYbYWnwenU0y9/Cvtp9Iz7md6zrLOtP6v+XNNOay/ogDoyO+Y6ozsFXcFdQ+fczvV2W3S3/6L7y4nziuerL4hfKO4h9OT1LF3Mujh/KfHS7OWoyxO9W3ofXwm6cr/Pp2/wqvvV69ecrl3pt+2/eN3y+vkb5jfO3WTd7LxlcqtjwHig/bbx7fZBk8GOO6Z3uu6a3e0eWjfUM2w9fPmew71r913v3xpZPzI06j/6YCx0TPCA82D6YfzDN4/SHi0+3vkE/aTgqejT8meyz+p/1fy1TWAiuDDuMD7wfMPzxxPsiVe/Jf/2eTLvBflF+ZTCVNO04fT5GaeZuy83vpx8lfhqcTb/d7Hfa15rvP75D5s/BuaC5ibf8N8s/Vn0VurtiXdG73rnveefvU94v7hQ8EHqw8mPrI/9nwI/TS2mf8Z+rvii+aX7q/vXJ0sJS0tCFxC6gNAFhC4gdAGhCwhdQOgCQhcQuoDQBYQuIHQBoQsIXeD/2AVW/+MsB7JyOTYGgF82AB63AaisAkAtEgBKaAo3I2WlytvKZG9NzOTHREWnrGGmJnOZkXwuNz5zpfY3+wIKCAplbmRzdHJlYW0KZW5kb2JqCjMgMCBvYmoKMjQ1MwplbmRvYmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDE5LTA4LTIwVDE2OjExOjIzWjwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwvcGRmOlByb2R1Y2VyPgo8cGRmOlBERlZlcnNpb24+MS40PC9wZGY6UERGVmVyc2lvbj4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+Cjx4bXA6Q3JlYXRvclRvb2w+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwveG1wOkNyZWF0b3JUb29sPgo8eG1wOk1ldGFkYXRhRGF0ZT4yMDE5LTA4LTIwVDE2OjExOjIzWjwveG1wOk1ldGFkYXRhRGF0ZT4KPHhtcDpDcmVhdGVEYXRlPjIwMTktMDgtMjBUMTY6MTE6MjNaPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+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543WZ7n6Os5iu7uS9W7cVenW7JSffNt+qH4o1WMlo6RSJVX12fdwWuUsn4bk15LnQmGS7+u4WE/wifbhafmdHRzZIDd5tiUBJo12HC+0eV9hZUOCKFiXF2VrKlicvmaXYjHMcjulXH6lt+gtpLA8hZn4un2Uqbt6d9qxuAgcZznomwAs34vSKX/yT2mEDquPiHSTQYrnm34g+vsfVSEJZQplbmRzdHJlYW0KZW5kb2JqCjUyIDAgb2JqCjk2MAplbmRvYmoKNTMgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQ29udGVudHMgNTEgMCBSCj4+CmVuZG9iago1NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago1NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY3OS42MjkgMTE3LjE5IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMxLjMyIDY3OS42MjkgNTQwLjAgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NCAwIFIKL0ggL0kKCj4+CmVuZG9iago1NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago1OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY2Ny42MjkgMTM3LjExNiA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjY3LjYyOSA1MzkuOTk4IDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKNjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjU1LjYyOSAxODMuNzM5IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA2NTUuNjI5IDU0MC4yMDggNjY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MCAwIFIKL0ggL0kKCj4+CmVuZG9iago2MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDY0NC43MjggbnVsbF0KPj4KZW5kb2JqCjY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY0My42MjkgMjAwLjk1MSA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjQzLjYyOSA1MzkuOTk4IDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCA1ODguNjU2IG51bGxdCj4+CmVuZG9iago2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzEuNjI5IDE3OC40OTkgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NiAwIFIKL0ggL0kKCj4+CmVuZG9iago2OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYzMS42MjkgNTM5Ljk5OCA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI1IDAgUiAvWFlaIDcyLjAgNTMyLjU4NCBudWxsXQo+PgplbmRvYmoKNzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjE5LjYyOSAyMDQuOTk5IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2MTkuNjI5IDUzOS45OTggNjI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDQ3Ni41MTIgbnVsbF0KPj4KZW5kb2JqCjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYwNy42MjkgMjc1LjI5NCA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjA3LjYyOSA1MzkuOTk4IDYxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCAzOTYuNDQgbnVsbF0KPj4KZW5kb2JqCjc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU5NS42MjkgMzQxLjg1OSA2MDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC41MjQgNTk1LjYyOSA1NDAuODg0IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCAzNDAuMzY4IG51bGxdCj4+CmVuZG9iago3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1ODMuNjI5IDE5MS4wNjkgNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3OCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU4My42MjkgNTM5Ljk5OCA1OTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI1IDAgUiAvWFlaIDcyLjAgMjg0LjI5NiBudWxsXQo+PgplbmRvYmoKODIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTcxLjYyOSAyNDkuNjMxIDU4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODEgMCBSCi9IIC9JCgo+PgplbmRvYmoKODMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1NzEuNjI5IDUzOS45OTggNTgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MSAwIFIKL0ggL0kKCj4+CmVuZG9iago4NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDIyOC4yMjQgbnVsbF0KPj4KZW5kb2JqCjg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU1OS42MjkgMTkzLjA1NSA1NjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTU5LjYyOSA1MzkuOTk4IDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODQgMCBSCi9IIC9JCgo+PgplbmRvYmoKODcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCAxNzIuMTUyIG51bGxdCj4+CmVuZG9iago4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NDcuNjI5IDI4NS4zOTggNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NyAwIFIKL0ggL0kKCj4+CmVuZG9iago4OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuNTc4IDU0Ny42MjkgNTQwLjkzOCA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI1IDAgUiAvWFlaIDcyLjAgMTE2LjA4IG51bGxdCj4+CmVuZG9iago5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MzUuNjI5IDMxMy40ODcgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MCAwIFIKL0ggL0kKCj4+CmVuZG9iago5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDUzNS42MjkgNTM5Ljk5OCA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUyMy42MjkgMjEyLjQ2OSA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTIzLjYyOSA1MzkuOTk4IDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA2ODMuNiBudWxsXQo+PgplbmRvYmoKOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTExLjYyOSAyOTEuMDYxIDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1MTEuNjI5IDUzOS45OTggNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NiAwIFIKL0ggL0kKCj4+CmVuZG9iago5OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDYyOS4yIG51bGxdCj4+CmVuZG9iagoxMDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDk5LjYyOSAyMjMuMTM2IDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44MDggNDk5LjYyOSA1NDAuMTY4IDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjEwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDQ4Ny42MjkgMjAyLjM5NiA0OTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0ODcuNjI5IDUzOS45OTggNDk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjEwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NzUuNjI5IDE3My40MDggNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDc1LjYyOSA1MzkuOTk4IDQ4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMSAwIFIgL1hZWiA3Mi4wIDYyNi40IG51bGxdCj4+CmVuZG9iagoxMDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDYzLjYyOSAxNjQuOTEzIDQ3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODA3IDQ2My42MjkgNTQwLjE2NyA0NzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA1NTguMCBudWxsXQo+PgplbmRvYmoKMTEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ1MS42MjkgMjA4LjQyMSA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NTEuNjI5IDUzOS45OTggNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNDg5LjYgbnVsbF0KPj4KZW5kb2JqCjExNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MzkuNjI5IDIyMS40MDggNDQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDM5LjYyOSA1MzkuOTk4IDQ0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA0MjcuNjI5IDE0OS4zOSA0MzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0MjcuNjI5IDUzOS45OTggNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM3IDAgUiAvWFlaIDcyLjAgNjMyLjggbnVsbF0KPj4KZW5kb2JqCjEyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MTUuNjI5IDE5OS4wMDYgNDI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDE1LjYyOSA1MzkuOTk4IDQyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTIwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNyAwIFIgL1hZWiA3Mi4wIDU0NC40IG51bGxdCj4+CmVuZG9iagoxMjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDAzLjYyOSAxOTEuODYzIDQxMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTIzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDQwMy42MjkgNTM5Ljk5OCA0MTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTI3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgMzkxLjYyOSAxNDYuNTEzIDQwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM5MS42MjkgNTM5Ljk5OCA0MDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA2NjYuOCBudWxsXQo+PgplbmRvYmoKMTMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM3OS42MjkgMjgwLjExNyAzODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzNzkuNjI5IDUzOS45OTggMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNjAwLjQgbnVsbF0KPj4KZW5kb2JqCjEzMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNjcuNjI5IDIxNy4xNTIgMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzY3LjYyOSA1MzkuOTk4IDM3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDU1OC4wIG51bGxdCj4+CmVuZG9iagoxMzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzU1LjYyOSAyMjQuOTg2IDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM1NS42MjkgNTM5Ljk5OCAzNjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgMzQzLjYyOSAxNjEuNzg0IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM0My42MjkgNTM5Ljk5OCAzNTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKMTQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDMzMS42MjkgMjA3LjQ4OSAzNDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzMzEuNjI5IDUzOS45OTggMzQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMzYyLjMgbnVsbF0KPj4KZW5kb2JqCjE0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzMTkuNjI5IDI1Ny4yNDIgMzI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzE5LjYyOSA1MzkuOTk4IDMyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxNDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAzMDcuNjI5IDE1Mi4xMDIgMzE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAg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7Sb4/qfBqMz+zP8b//9v/A/+ywuyzub+T38Uvv3nuSDc//KfX//0479/hK+///HP/2J/+m9f8FH+nx/nZ3z7Mf9oX3+/gPOvxW+LGofZvv9n2P5V+YYbHN8ufP3Hj5//9ONvf7HfaQxff/r3bZMs4uzIao8vU55h4ogh9XuLvHTy8za5EUNu/7s3Bf/3/wEc85ncCmVuZHN0cmVhbQplbmRvYmoKMTUxIDAgb2JqCjIxNTE1CmVuZG9iagoxNTIgMCBvYmoKWwo1NSAwIFIKNTYgMCBSCjU4IDAgUgo1OSAwIFIKNjEgMCBSCjYyIDAgUgo2NCAwIFIKNjUgMCBSCjY3IDAgUgo2OCAwIFIKNzAgMCBSCjcxIDAgUgo3MyAwIFIKNzQgMCBSCjc2IDAgUgo3NyAwIFIKNzkgMCBSCjgwIDAgUgo4MiAwIFIKODMgMCBSCjg1IDAgUgo4NiAwIFIKODggMCBSCjg5IDAgUgo5MSAwIFIKOTIgMCBSCjk0IDAgUgo5NSAwIFIKOTcgMCBSCjk4IDAgUgoxMDAgMCBSCjEwMSAwIFIKMTAzIDAgUgoxMDQgMCBSCjEwNiAwIFIKMTA3IDAgUgoxMDkgMCBSCjExMCAwIFIKMTEyIDAgUgoxMTMgMCBSCjExNSAwIFIKMTE2IDAgUgoxMTggMCBSCjExOSAwIFIKMTIxIDAgUgoxMjIgMCBSCjEyNCAwIFIKMTI1IDAgUgoxMjcgMCBSCjEyOCAwIFIKMTMwIDAgUgoxMzEgMCBSCjEzMyAwIFIKMTM0IDAgUgoxMzYgMCBSCjEzNyAwIFIKMTM5IDAgUgoxNDAgMCBSCjE0MiAwIFIKMTQzIDAgUgoxNDUgMCBSCjE0NiAwIFIKMTQ4IDAgUgoxNDkgMCBSCl0KZW5kb2JqCjE1MyAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgMTUyIDAgUgogIC9Db250ZW50cyAxNTAgMCBSCj4+CmVu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dWx0UkdCIDQgMCBSID4+Cj4+CmVuZG9iagoxODIgMCBvYmoKPDwgL051bXMgWzAgPDwgL1MgL0QgPj4gMSA8PCAvUyAvciAvU3QgMiA+PiAyIDw8IC9TIC9yIC9TdCAzID4+IDMgPDwgL1MgL3IgL1N0IDQgPj4gNCA8PCAvUyAvRCA+PiAxMCA8PCAvUyAvRCAvU3QgNyA+Pl0gPj4KZW5kb2JqCnhyZWYKMCAxODMKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAxMzkgMDAwMDAgbiAKMDAwMDAwMjY3NyAwMDAwMCBuIAowMDAwMDAyNjk3IDAwMDAwIG4gCjAwMDAwMDI3MzAgMDAwMDAgbiAKMDAwMDAwMzY2MiAwMDAwMCBuIAowMDAwMDAzNjgxIDAwMDAwIG4gCjAwMDAwNTIyMDYgMDAwMDAgbiAKMDAwMDA1MjIyNyAwMDAwMCBuIAowMDAwMTA1NDg3IDAwMDAwIG4gCjAwMDAxMDU1MDkgMDAwMDAgbiAKMDAwMDEwNjAxNSAwMDAwMCBuIAowMDAwMTA2MDM1IDAwMDAwIG4gCjAwMDAyMTIxOTYgMDAwMDAgbiAKMDAwMDIxMTk1NSAwMDAwMCBuIAowMDAwMTA2MjI5IDAwMDAwIG4gCjAwMDAxMTI0MDAgMDAwMDAgbiAKMDAwMDExMjQyMSAwMDAwMCBuIAowMDAwMTE5NjAxIDAwMDAwIG4gCjAwMDAxMTk2MjIgMDAwMDAgbiAKMDAwMDEyMDUzMiAwMDAwMCBuIAowMDAwMTIwNTUyIDAwMDAwIG4gCjAwMDAxMjA3NDYgMDAwMDAgbiAKMDAwMDEyMzMzOSAwMDAwMCBuIAowMDAwMTIzMzYwIDAwMDAwIG4gCjAwMDAxMjM1NTQgMDAwMDAgbiAKMDAwMDEyNDQ4MiAwMDAwMCBuIAowMDAwMTI0NTAyIDAwMDAwIG4gCjAwMDAxMjQ2OTYgMDAwMDAgbiAKMDAwMDEyNTU1OSAwMDAwMCBuIAowMDAwMTI1NTc5IDAwMDAwIG4gCjAwMDAxMjU3NzMgMDAwMDAgbiAKMDAwMDEyNTg2OCAwMDAwMCBuIAowMDAwMTI2MDA0IDAwMDAwIG4gCjAwMDAxMjc1MzMgMDAwMDAgbiAKMDAwMDEyNzU1NCAwMDAwMCBuIAowMDAwMTI3NTgxIDAwMDAwIG4gCjAwMDAxMjc3OTIgMDAwMDAgbiAKMDAwMDEyODk1MyAwMDAwMCBuIAowMDAwMTI4OTc0IDAwMDAwIG4gCjAwMDAxMjkxNjggMDAwMDAgbiAKMDAwMDEzMTMzNSAwMDAwMCBuIAowMDAwMTMxMzU2IDAwMDAwIG4gCjAwMDAxMzE1NTAgMDAwMDAgbiAKMDAwMDEzMTYyOCAwMDAwMCBuIAowMDAwMTMxNzY1IDAwMDAwIG4gCjAwMDAxMzE5MDUgMDAwMDAgbiAKMDAwMDEzMjk3NyAwMDAwMCBuIAowMDAwMTMyOTk3IDAwMDAwIG4gCjAwMDAxMzMwMzEgMDAwMDAgbiAKMDAwMDEzMzI0MiAwMDAwMCBuIAowMDAwMTM0Mjc4IDAwMDAwIG4gCjAwMDAxMzQyOTggMDAwMDAgbiAKMDAwMDEzNDQ5MiAwMDAwMCBuIAowMDAwMTM0NTcwIDAwMDAwIG4gCjAwMDAxMzQ3MDYgMDAwMDAgbiAKMDAwMDEzNDg0MyAwMDAwMCBuIAowMDAwMTM0OTIxIDAwMDAwIG4gCjAwMDAxMzUwNTggMDAwMDAgbiAKMDAwMDEzNTE5OCAwMDAwMCBuIAowMDAwMTM1Mjc2IDAwMDAwIG4gCjAwMDAxMzU0MTQgMDAwMDAgbiAKMDAwMDEzNTU1NCAwMDAwMCBuIAowMDAwMTM1NjM0IDAwMDAwIG4gCjAwMDAxMzU3NzIgMDAwMDAgbiAKMDAwMDEzNTkxMiAwMDAwMCBuIAowMDAwMTM1OTkyIDAwMDAwIG4gCjAwMDAxMzYxMzAgMDAwMDAgbiAKMDAwMDEzNjI3MCAwMDAwMCBuIAowMDAwMTM2MzUwIDAwMDAwIG4gCjAwMDAxMzY0ODggMDAwMDAgbiAKMDAwMDEzNjYyOCAwMDAwMCBuIAowMDAwMTM2NzA4IDAwMDAwIG4gCjAwMDAxMzY4NDYgMDAwMDAgbiAKMDAwMDEzNjk4NiAwMDAwMCBuIAowMDAwMTM3MDY1IDAwMDAwIG4gCjAwMDAxMzcyMDMgMDAwMDAgbiAKMDAwMDEzNzM0MyAwMDAwMCBuIAowMDAwMTM3NDIzIDAwMDAwIG4gCjAwMDAxMzc1NjEgMDAwMDAgbiAKMDAwMDEzNzcwMSAwMDAwMCBuIAowMDAwMTM3NzgxIDAwMDAwIG4gCjAwMDAxMzc5MTkgMDAwMDAgbiAKMDAwMDEzODA1OSAwMDAwMCBuIAowMDAwMTM4MTM5IDAwMDAwIG4gCjAwMDAxMzgyNzcgMDAwMDAgbiAKMDAwMDEzODQxNyAwMDAwMCBuIAowMDAwMTM4NDk3IDAwMDAwIG4gCjAwMDAxMzg2MzUgMDAwMDAgbiAKMDAwMDEzODc3NSAwMDAwMCBuIAowMDAwMTM4ODU0IDAwMDAwIG4gCjAwMDAxMzg5OTIgMDAwMDAgbiAKMDAwMDEzOTEzMiAwMDAwMCBuIAowMDAwMTM5MjEwIDAwMDAwIG4gCjAwMDAxMzkzNDggMDAwMDAgbiAKMDAwMDEzOTQ4OCAwMDAwMCBuIAowMDAwMTM5NTY2IDAwMDAwIG4gCjAwMDAxMzk3MDQgMDAwMDAgbiAKMDAwMDEzOTg0NCAwMDAwMCBuIAowMDAwMTM5OTIyIDAwMDAwIG4gCjAwMDAxNDAwNjEgMDAwMDAgbiAKMDAwMDE0MDIwMiAwMDAwMCBuIAowMDAwMTQwMjgxIDAwMDAwIG4gCjAwMDAxNDA0MjAgMDAwMDAgbiAKMDAwMDE0MDU2MiAwMDAwMCBuIAowMDAwMTQwNjQxIDAwMDAwIG4gCjAwMDAxNDA3ODEgMDAwMDAgbiAKMDAwMDE0MDkyMyAwMDAwMCBuIAowMDAwMTQxMDAyIDAwMDAwIG4gCjAwMDAxNDExNDIgMDAwMDAgbiAKMDAwMDE0MTI4NCAwMDAwMCBuIAowMDAwMTQxMzYzIDAwMDAwIG4gCjAwMDAxNDE1MDMgMDAwMDAgbiAKMDAwMDE0MTY0NSAwMDAwMCBuIAowMDAwMTQxNzI0IDAwMDAwIG4gCjAwMDAxNDE4NjQgMDAwMDAgbiAKMDAwMDE0MjAwNiAwMDAwMCBuIAowMDAwMTQyMDg1IDAwMDAwIG4gCjAwMDAxNDIyMjMgMDAwMDAgbiAKMDAwMDE0MjM2NSAwMDAwMCBuIAowMDAwMTQyNDQ0IDAwMDAwIG4gCjAwMDAxNDI1ODQgMDAwMDAgbiAKMDAwMDE0MjcyNiAwMDAwMCBuIAowMDAwMTQyODA1IDAwMDAwIG4gCjAwMDAxNDI5NDUgMDAwMDAgbiAKMDAwMDE0MzA4NyAwMDAwMCBuIAowMDAwMTQzMTY2IDAwMDAwIG4gCjAwMDAxNDMzMDUgMDAwMDAgbiAKMDAwMDE0MzQ0NyAwMDAwMCBuIAowMDAwMTQzNTI2IDAwMDAwIG4gCjAwMDAxNDM2NjYgMDAwMDAgbiAKMDAwMDE0MzgwOCAwMDAwMCBuIAowMDAwMTQzODg3IDAwMDAwIG4gCjAwMDAxNDQwMjcgMDAwMDAgbiAKMDAwMDE0NDE2OSAwMDAwMCBuIAowMDAwMTQ0MjQ4IDAwMDAwIG4gCjAwMDAxNDQzODggMDAwMDAgbiAKMDAwMDE0NDUzMCAwMDAwMCBuIAowMDAwMTQ0NjA5IDAwMDAwIG4gCjAwMDAxNDQ3NDggMDAwMDAgbiAKMDAwMDE0NDg5MCAwMDAwMCBuIAowMDAwMTQ0OTY5IDAwMDAwIG4gCjAwMDAxNDUxMDkgMDAwMDAgbiAKMDAwMDE0NTI1MSAwMDAwMCBuIAowMDAwMTQ1MzMwIDAwMDAwIG4gCjAwMDAxNDU0NzAgMDAwMDAgbiAKMDAwMDE0NTYxMiAwMDAwMCBuIAowMDAwMTQ1NjkxIDAwMDAwIG4gCjAwMDAxNDU4MzAgMDAwMDAgbiAKMDAwMDE0NTk3MiAwMDAwMCBuIAowMDAwMTY3NTY1IDAwMDAwIG4gCjAwMDAxNjc1ODggMDAwMDAgbiAKMDAwMDE2ODA5MSAwMDAwMCBuIAowMDAwMTY4MzA1IDAwMDAwIG4gCjAwMDAxNjg1NzAgMDAwMDAgbiAKMDAwMDE4MzIzNiAwMDAwMCBuIAowMDAwMTgzMjEzIDAwMDAwIG4gCjAwMDAxODMzMzYgMDAwMDAgbiAKMDAwMDE4MzM1NiAwMDAwMCBuIAowMDAwMTg0MDAzIDAwMDAwIG4gCjAwMDAxODM1MjEgMDAwMDAgbiAKMDAwMDE4NDU3NiAwMDAwMCBuIAowMDAwMTg0NTk3IDAwMDAwIG4gCjAwMDAxODQ4NTcgMDAwMDAgbiAKMDAwMDIwMTA2NiAwMDAwMCBuIAowMDAwMjAxMDQzIDAwMDAwIG4gCjAwMDAyMDExNzEgMDAwMDAgbiAKMDAwMDIwMTE5MSAwMDAwMCBuIAowMDAwMjAxODgzIDAwMDAwIG4gCjAwMDAyMDEzNTEgMDAwMDAgbiAKMDAwMDIwMjUyMiAwMDAwMCBuIAowMDAwMjAyNTQzIDAwMDAwIG4gCjAwMDAyMDI4MDUgMDAwMDAgbiAKMDAwMDIxMDkwMiAwMDAwMCBuIAowMDAwMjEwODgwIDAwMDAwIG4gCjAwMDAyMTEwMDAgMDAwMDAgbiAKMDAwMDIxMTAyMCAwMDAwMCBuIAowMDAwMjExNTExIDAwMDAwIG4gCjAwMDAyMTExODQgMDAwMDAgbiAKMDAwMDIxMTkzNCAwMDAwMCBuIAowMDAwMjEyMDg3IDAwMDAwIG4gCjAwMDAyMTI0MjYgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9Sb290IDE4MSAwIFIKICAvSW5mbyAxIDAgUgogIC9JRCBbPDQwMjE2NkJFRTgyNzEzMDJGRDIzNkU5MjkwOTJCNTI5PiA8NDAyMTY2QkVFODI3MTMwMkZEMjM2RTkyOTA5MkI1Mjk+XQogIC9TaXplIDE4Mwo+PgpzdGFydHhyZWYKMjEyNTY2CiUlRU9GCg==
JVBERi0xLjQKJaqrrK0KMSAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDIuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMi4xKQovQ3JlYXRpb25EYXRlIChEOjIwMTkwODIwMTYxMTI1WikKPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAzIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2ZZ1BUWRaA73uvc6Chu2kyNDlJlNCA5JwkSBYV6G4yLTQ5mJDBERhBRCQpgogCDjg6BBlFRRQDoqCAeRoZBJRxcBRRUVnAH7NVu7VbW7W1f7bPj/e+OufWO+e+ulXvq3oAyJDi2QnJsD4ACbwUvq+zHTMoOISJvQ9wgAxIgAow4ezkRFtvbw+wHCtrwT/E+1EArdzv6fzz+r8MEieBxwEAoi9zLIebzF7mncsczUngrOSnVzg9JTEFANh7men85QGXmbPCEd84Y4WjvnHR6ho/X/tlPgoAjhS1yoRTKxyxytSuFWZH8xMAkO5bXq/CTuQvP196pZfitxlWQ3RlP8woLo/LD0/hcpj/4db+ffxdL3Ty8sv/rzf4H/dZOTvf6K3l6pmAGBV/5baWAcB6DQBS8ldO5TAAlN0AdPT8lYs4DkBnCQCSz9ip/LRvOdTq7IAAKIAOpIA8UAYaQAcYAlNgAWyAI3ADXsAPBIPNgA2iQQLgg3SQA3aBfFAISsBBUAVqQQNoAq3gDOgE58FlcA3cAnfBCHgMBGASvAJz4D1YhCAIC5EhGiQFKUCqkDZkCLEgK8gR8oB8oWAoDIqCeFAqlAPthgqhUqgKqoOaoJ+gc9Bl6AY0BD2ExqEZ6E/oE4zAJJgOy8FqsB7Mgm1hd9gP3gRHwUlwFpwH74Mr4Hr4FNwBX4ZvwSOwAH4FzyMAISIMRBHRQViIPeKFhCCRCB/ZjhQg5Ug90op0I/3IPUSAzCIfURgUDcVE6aAsUC4ofxQblYTajipCVaFOojpQfah7qHHUHOormoyWRWujzdGu6CB0FDodnY8uRzei29FX0SPoSfR7DAbDwKhjTDEumGBMLCYbU4Q5jGnDXMIMYSYw81gsVgqrjbXEemHDsSnYfGwl9hT2InYYO4n9gCPiFHCGOCdc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IG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZGU8L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDE5LTA4LTIwVDE2OjExOjI1WjwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwvcGRmOlByb2R1Y2VyPgo8cGRmOlBERlZlcnNpb24+MS40PC9wZGY6UERGVmVyc2lvbj4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+Cjx4bXA6Q3JlYXRvclRvb2w+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwveG1wOkNyZWF0b3JUb29sPgo8eG1wOk1ldGFkYXRhRGF0ZT4yMDE5LTA4LTIwVDE2OjExOjI1WjwveG1wOk1ldGFkYXRhRGF0ZT4KPHhtcDpDcmVhdGVEYXRlPjIwMTktMDgtMjBUMTY6MTE6MjVaPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+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becqk7tGdzrBuEgcZzlovwDLflGctA9ny3Jc7SLSQwaZPN91h+jf/7ByDP4KZW5kc3RyZWFtCmVuZG9iago0NSAwIG9iago5NTYKZW5kb2JqCjQ2IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDQ0IDAgUgo+PgplbmRvYmoKNDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NzkuNjI5IDExOC42IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMxLjY4OSA2NzkuNjI5IDUzOS45OTkgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY2Ny42MjkgMTYyLjg0IDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NjcuNjI5IDUzOS45OTggNjc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDcwMC44IG51bGxdCj4+CmVuZG9iago1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2NTUuNjI5IDE4Mi44OTEgNjY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MyAwIFIKL0ggL0kKCj4+CmVuZG9iago1NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDY1NS42MjkgNTM5Ljk5NyA2NjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI1IDAgUiAvWFlaIDcyLjAgNjQ1LjgxOSBudWxsXQo+PgplbmRvYmoKNTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjQzLjYyOSAyMDAuMTEzIDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyA2NDMuNjI5IDUzOS45OTcgNjUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NiAwIFIKL0ggL0kKCj4+CmVuZG9iago1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDU5MC44MzggbnVsbF0KPj4KZW5kb2JqCjYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYzMS42MjkgMTczLjMyOSA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNjMxLjYyOSA1MzkuOTk3IDY0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCA1MzUuODU3IG51bGxdCj4+CmVuZG9iago2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MTkuNjI5IDE4NS43MiA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNjE5LjYyOSA1MzkuOTk3IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCA0ODAuODc2IG51bGxdCj4+CmVuZG9iago2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MDcuNjI5IDMwNy4zNjQgNjE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NSAwIFIKL0ggL0kKCj4+CmVuZG9iago2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYwNy42MjkgNTM5Ljk5OCA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI1IDAgUiAvWFlaIDcyLjAgNDAxLjg5NSBudWxsXQo+PgplbmRvYmoKNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTk1LjYyOSAzNzkuMyA2MDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzNC4yMDQgNTk1LjYyOSA1NDAuNTY0IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCAzNTguOTE0IG51bGxdCj4+CmVuZG9iago3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1ODMuNjI5IDI1MS42MzkgNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU4My42MjkgNTM5Ljk5OCA1OTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI1IDAgUiAvWFlaIDcyLjAgMzAzLjkzMyBudWxsXQo+PgplbmRvYmoKNzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTcxLjYyOSAyNTEuOTc1IDU4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1NzEuNjI5IDUzOS45OTggNTgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDIzNi45NTIgbnVsbF0KPj4KZW5kb2JqCjc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU1OS42MjkgMTg4LjU3OSA1NjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTU5LjYyOSA1MzkuOTk4IDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKODAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCAxODEuOTcxIG51bGxdCj4+CmVuZG9iago4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NDcuNjI5IDI4Ny40MjQgNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU0Ny42MjkgNTM5Ljk5OCA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI1IDAgUiAvWFlaIDcyLjAgMTI2Ljk5IG51bGxdCj4+CmVuZG9iago4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MzUuNjI5IDM1NC44ODMgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDUzNS42MjkgNTM5Ljk5OCA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUyMy42MjkgMjE2LjE0OSA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTIzLjYyOSA1MzkuOTk4IDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA2ODMuNiBudWxsXQo+PgplbmRvYmoKOTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTExLjYyOSAzNTIuMTc1IDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1MTEuNjI5IDUzOS45OTggNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDYyOS4yIG51bGxdCj4+CmVuZG9iago5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0OTkuNjI5IDIyNC4yNTggNTA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODA3IDQ5OS42MjkgNTQwLjE2NyA1MDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDg3LjYyOSAyMDQuNDM1IDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0ODcuNjI5IDUzOS45OTggNDk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago5OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMSAwIFIgL1hZWiA3Mi4wIDcwMC44IG51bGxdCj4+CmVuZG9iago5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NzUuNjI5IDE3My40MDggNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NzUuNjI5IDUzOS45OTggNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA2MjYuNCBudWxsXQo+PgplbmRvYmoKMTAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ2My42MjkgMTUxLjUzNSA0NzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyA0NjMuNjI5IDUzOS45OTcgNDczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNTU4LjAgbnVsbF0KPj4KZW5kb2JqCjEwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NTEuNjI5IDE5NS42MSA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NTEuNjI5IDUzOS45OTggNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNDg5LjYgbnVsbF0KPj4KZW5kb2JqCjEwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MzkuNjI5IDIyMS43OTQgNDQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDM5LjYyOSA1MzkuOTk4IDQ0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA0MjcuNjI5IDE0OS4zOSA0MzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0MjcuNjI5IDUzOS45OTggNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM3IDAgUiAvWFlaIDcyLjAgNjQ0LjggbnVsbF0KPj4KZW5kb2JqCjExNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MTUuNjI5IDE5OS4wMDYgNDI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDE1LjYyOSA1MzkuOTk4IDQyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNyAwIFIgL1hZWiA3Mi4wIDU1Ni40IG51bGxdCj4+CmVuZG9iagoxMTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDAzLjYyOSAxOTMuNzc4IDQxMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDQwMy42MjkgNTM5Ljk5NyA0MTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgMzkxLjYyOSAxNjMuMjY4IDQwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM5MS42MjkgNTM5Ljk5OCA0MDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA2NjYuOCBudWxsXQo+PgplbmRvYmoKMTIzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM3OS42MjkgMjg5LjQxIDM4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM3OS42MjkgNTM5Ljk5OCAzODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA1ODguNCBudWxsXQo+PgplbmRvYmoKMTI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM2Ny42MjkgMjQwLjAyNyAzNzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzNjcuNjI5IDUzOS45OTggMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNTQ2LjAgbnVsbF0KPj4KZW5kb2JqCjEyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNTUuNjI5IDI0Ny4xNDIgMzY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzU1LjYyOSA1MzkuOTk4IDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAzNDMuNjI5IDE2MC44NjggMzUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzQzLjYyOSA1MzkuOTk4IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAzMzEuNjI5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MSAwIFIKNTIgMCBSCjU0IDAgUgo1NSAwIFIKNTcgMCBSCjU4IDAgUgo2MCAwIFIKNjEgMCBSCjYzIDAgUgo2NCAwIFIKNjYgMCBSCjY3IDAgUgo2OSAwIFIKNzAgMCBSCjcyIDAgUgo3MyAwIFIKNzUgMCBSCjc2IDAgUgo3OCAwIFIKNzkgMCBSCjgxIDAgUgo4MiAwIFIKODQgMCBSCjg1IDAgUgo4NyAwIFIKODggMCBSCjkwIDAgUgo5MSAwIFIKOTMgMCBSCjk0IDAgUgo5NiAwIFIKOTcgMCBSCjk5IDAgUgoxMDAgMCBSCjEwMiAwIFIKMTAzIDAgUgoxMDUgMCBSCjEwNiAwIFIKMTA4IDAgUgoxMDkgMCBSCjExMSAwIFIKMTEyIDAgUgoxMTQgMCBSCjExNSAwIFIKMTE3IDAgUgoxMTggMCBSCjEyMCAwIFIKMTIxIDAgUgoxMjMgMCBSCjEyNCAwIFIKMTI2IDAgUgoxMjcgMCBSCjEyOSAwIFIKMTMwIDAgUgoxMzIgMCBSCjEzMyAwIFIKMTM1IDAgUgoxMzYgMCBSCl0KZW5kb2JqCjE0MCAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgMTM5IDAgUgogIC9Db250ZW50cyAxMzcgMCBSCj4+CmVuZG9iagoxNDEgMCBvYmoKPDwKICAvVHlwZSAvRm9udERlc2NyaXB0b3IKICAvRm9udE5hbWUgL0VBQUFBQStEZWphVnVTYW5zLUJvbGQKICAvRm9udEJCb3ggWy0xMDY5IC00MTUgMTk3NSAxMTc0XQogIC9GbGFncyAzMwogIC9DYXBIZWlnaHQgNzI5CiAgL0FzY2VudCAxMTc0CiAgL0Rlc2NlbnQgLTQxNQogIC9JdGFsaWNBbmdsZSAwCiAgL1N0ZW1WIDAKICAvTWlzc2luZ1dpZHRoIDUwMAogIC9Gb250RmlsZTIgMTQyIDAgUgogIC9DSURTZXQgMTQzIDAgUgo+PgplbmRvYmoKMTQyIDAgb2JqCjw8CiAgL0xlbmd0aDEgMzAzMDgKICAvTGVuZ3RoIDE0NCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJztvQt8FNUVMH7v3JnZ2dlHdpPN5p1MEpYQCEkIL8NDNpAEAiGJISAISDbJ5gFJNmY3IAICtT5QKVgFAVEeUkRMEYH6QEREbBWkYAWtT7RCtTWi9aNUQzL5zr2zmxdgrdrH///7Ms7snTv3nnvOuec9Q4swQsiIliGCnIVT0jK+nvjAwwilLYPeaeXzfcq1zw2SoP06QlxJZUNV3Uxu3lcIEQX6mqtqF1Y2pFZ0IMR/hFD/zdVuV8W3v3zldzD/j/B8WDV0mJ/U/QahdAvc96mu891ccUfUArgfghC21HrKXUj4LbQJwMe2OtfNDeIKcSBCg7JhvFLvqnM3xj50Fu4rEBo9tMHj9XUsRzcgVL+RPm9odDcsdm39FO4PIKR7DFfiwbgSHUB/AWij0VbUSuIQB0cl9NLfZlyCWuB5GYxczt+OS+C3jt+GOHi+lD8OMDk8GJWhm6Dl4LfhA2g/Ogezl+OVwgThBjoa0T8K66LwMv5KyOQy0XS+jh/N7+GX83tgRBNfyS9Hu+Gayb3Bb+QX8Sf4RWg6xQzn05PigTbgiTgRbeA24GwcgbO54+glwLkSj8Eb8EjhmHAMnUancRGMbEYLOBn/Dn+N0/B0vAdmXUQXcRzcDeWG4vP4U8B4HXqDTBdktAGtwsFwdwAdB7zPoa+RlweoaJVwmhsgnEYvo4/R29CP0FzMwTWGDBROw/EV2oHmAmc+xpxwWrTp4vlK7hvUgm/jtnPf4ETMwRGM44CbN5LjfCn/O34FPAXuYI4MJnFkLFxn0RHCabwBsPhYrMQLYRw9FsE6LdzL3LNA40H0AdAFq3OzuEXcBvQB3oX3A8YI3Y538aW6Mj4KbRA38NPRecob9AZ3HPhRxPhxD7pHHIQu8iL6iuTjUn4H5RhyCC9hhON1E8VgtBZP1N0GlCAyHC1CNnj6GkbCS9oBoyQxBq3lk8gjgDvHLQnwDS9Ex7lMUoY2suN+/Cy6Hz2LvAhAkL7P6ESBJxxGKYplN+fIq9jtvG668uqM+IEpvW4Vi07ZjYp2mxYqz3Z0FE3no4QZu4Xo3cQh7eYdiR9f7eHHA1MmFU1XnsX9crL9YHNKs6FzynRo0jvohv6cbPaMrrpbcMB/eaW7lfJq5W7L3Ykj7ra4RwxE2l++/1wMEsXDuRoEtg+c+4AzD4CuOuF8FSEBnovwTAT90o1CSLoZIT3onX4zQnI/OKcjZIgG4/A+QqZwOGG+GexCEPRZfHDCOGsRnAAruBmhELATIaCHNoBrO4JQ6AQ42xCygy0IA3sRTk9oRwAOkelwwm804BkLqMYCjDiwK8o2hOJr4WxBKAFwT4D7xGvgBPuQCM/73IVQXxjfF8b0BbyTTiLUD9bpB/f9PkMoGdZIBrjJ0N8fcOv/ANV+dS1fKWwDC6dDcQcQjykEEfd9GkvCCo5HaUdOtQxCllMtp1rSQ6zxVke8Nb6SR21eEtV2Tl2rM3/zdaOYTDmLkQcf4D7hzgCs4Ge4J9BOHiPecuoITL8Ak2Gih/O138udUT/Q7ATwQ8wEzZNQGEp1hqJD+pX4kF3i7DISBlpSkV1Pwi1tLW0t1kz4G4TSWgDOnqIIjGdj6+CMYUOH9E3E8QofZg8OtXE6kU/G3Oi7W7795ov2v+O1YMAmL6iprKy5Wd0Nx1x+T9tNfz3z4Wc40eVzq9889rj6D7fPRfGY3vGJkAS6aAA8BjpDxC3BaIvxaPC6cP3YoHwyNnSkhgXQcfZCi+V8+tPDQ8ZEjA8hgEaCGGqza6iA2bdaUDy7ci8tWLJkQdPixU04Hueoz6tn1A/V5/B4suiJLVueoCdG6qtqCxyv4muwDY5rNB4CLvxQwCUCDXdGotfxKd78uumUvMXKbwk7al0XqRtrQraRkZa2IxkBhNQL5y1/P5++b07U0iiOsiYVJwbwGm4140QNsQw7PzTv/sK1jz22tuRBZ8mvr1ffUHfiaTht+hP8aPX9jPQnH374yYxB6ntxcXg4DoVjeJyG02bgj8iXAk4jnVFBBGHje7aTYesseG+wyKGQIJN1PGdCFkAKNijDGky36mzGhbNs39L3lUYto3iB9MAuAVphsZhyDIQpfihgl9B3M67mzFb7+NSGZbhS3XDdb+oOH8P7uOaGmeoXqXcuiErs27yeS760eWvZ7PMUn52gk/uARw5U40yOCg3W8zqkiLrwoPeUk4nkaOze6BAdsgUbJZM4wWYKnhAXZYqx9LW0TdodVDL9ORSDnNfMaBtFtzRTQ3bUqLMXRp0F1DPhCMtMx86guKT0pKKkhqRlSauTnkzSzcbXAtL2UED6WkzlLkHUQZs1aGd8KHvO789+vuGlo+o6jHMLKj2cus5ZXNUAt9Vjn6jy7SHbq+vOf9I+jZtgio5cMG/HpvZ3uQn75z3+cPs7fOm2OaUNml5QeZR5aqWj0DhnPAr9I9a/Lp0SNhnx2+Gbgo8a10VHhXJSqAllc6agkdGM70cYKVQgzjKJOA+cT4sZE0MlIjSesbybMChI0IgQ5LbnTRvvvemLJUvVpepJ9Uk8CSdgCY9WVy8orf6ZhRtceeut47LVlvRBeCgOAz82Qj18f+WSpnpNNsC2CcGAaxga6gw3gUOV3ws+GXrUsteMQSbGW02mIAtVn4wLLZTRZ7ukImJZBJPW+KHAxiRNZrs4KQSr60yW0AkgE+oGXHnd0/WHX+N2tk/z4Ifuq49MTPr1esYzJhEUjyiw39uER1AIqnNGmgUpiGyx4r3SFiRLBj2n55HJEmwusWlCMGm3pWTmpN1WegkumQkyYaYyMepI26gjR4KZqTnScmEUFQgqDOFj0JgQGtaQIEuQtYgrIkWhpVwp0c9GFH84bPaR0EjoO9SaaB1s5Qbjm9RV1856Vj1+6qk9e4RH1MMdSHUUDO9AT53C74G3vTawz/wrwDsZJPlhZ3+9iCLiDOgPYSfETeaTVuX1uGPRmxJB6Y0oMYyEm/Qmw+g4YrKNBFFuOQKaRtFjunahDczAn89fPJ8ZTCU63ZmfljRaGR0/JmmyMjl+tjI7vl6pj79VuTW+Iele5d74h5WH43+t/Dr+BeWF+NCM2PS4cbHOuCmxRXHlsaVxt8cui7s/dnXc1tjNcXtid8dZZnezc6OxI6C1Q4f0iR8cUAXYM4XntjbcNPM69924Rn1wwr7lu97BQTjhzTt+4f3tVO9nPgjKTPib/InZk++rS76zffn2ytnHtr7ybPTUwtRUbI2O+ZLxBOSJCxZtzB8lO83iB2gv/ygnYBAti2Rpgz3x+wGnvkhfqm/QL9PzYFvi2TbEN1P7QU++9NJm0aa+z2QD/Ax/DPyMHg1wWvlD4kHuEFopCVhH7IjIVDipk0q7QME+bTEUGRoMpAumNf4AH9TeyFW1r1eXCqfVD9S/qh+03wm4yuC/kgCuDlqq04liREEXI4qCHCPJgijoaZuL4QmGU4ohPJFj9DLPE4fMo10Sv1LkZL2kE3gIoPQiMVhO7YmDdY+EMZN09lQL7CTEOTqL9IXOInyh0/6jra6eGQnYuSxcTpOnyZXyUrQUL5WW6n3y3fIm+UU4TsBxRrYES9H6OKND6q9XjHl8rjBemqCfTmbw04TrxWpSAwFAlVhq9KFF+Ba+SVgk+fQr+DuEO6QV+vX8WmGNtEH/tPSc/hh6Bb/CHdMdlo7r30Fv4be4d3SnpXf1aVQN4kk8Zgfhc9u3z1GXcMn4GJesLmnfgde/ji3qV8Lp1gGcgyvWbFylelqshNg6CDS3zBlpsu9Cll26jWidOdosY1NIxEB5eMhAfkB0IACwUut2hDlgEPAUyYhiIoyWmCSUFjPNOMVUaSw1LTAuMDWYTDrjDMMM0wzb9PC5hhrTzUYJBFjotHtWiBQAzwSOCXTw0CEcWRWrrlIr8XpchefhNW8fxQPV+9RPdh8+uO+pw4ej8DpcC/0b1Wr1vjb1gVnqbpFX21q+6sD85y0QQ2IqB8JcJgeDQWKpcPH4GpCtawTJcmrSbhnsjZlZGYFaGRZJgLBlpOM9Tn2XnMlCqWoFG2yhMnapgN/TZV9BH3rb10evbF9b/rl9tf4T+7r+/oB9FW3tOzQDC3lwx1iuBWgkKOQZDgjkECZpR6j5sVx4PR0SuETO/GH73z4QTn9bF8B7IeAto3udNkngCNmLHtWLAuZFCUOwYNDUzspkveUsOF1naQSJ4COECHGkLo/k6W4gs8Xpujk6D6kSlpL5/Hxxke4ucjt/p3CPbhNZI6wVH9I9RyLtnF0YIWVz44WJ0jRutlTFlXJuYQHXwM0XFkt3cncJ90i/5B4UHpJCZzNm43g97D+zFXgj3tz+AVegFqiT1A2ire0p/FC72r4Vv6kOBBogdtbFQNxjxD9zThRjdKCrMbwgSTp5iEHmBV4/RBB4AwgQJw/Ry4RwXAzhjDA8BhIDhwxEiwSdMUhGA+i5likZdOCI/DJhoO7HyAQDUcF4XVN8sOthfsUPqLpf3XvdU93/c6isyJDrCunyeNkJxxy5Vl4q7+bgEOCQD3GHhDfkk/JH3EfCl3KYnbMRGx8sWEQLgAnW22S7oS/uAwlwsthfGqDvY3AY08xD0VA8hBspjBBH6IZL1xjHmMdzeSSXn0Ath3EGmcZPk2bqSwwzjHPMlVwpXyaUiqW6UqlCLjU0cQ28V2gQG3QNkk9uMNyJ7xJ/DpbkDsM9xlXmB6SHjKvN27nHyXb+ceFX0uP67YadxqfxcyJYGONv8RFylH9NPM29Q97m3xXOSX/R/9nwV+NMsDAh8VGY/ofjDTh+Ap514AU8AM5Z6jvqwhcOqJBRt7URvp3n2i5tJlybqsmg35fEPoMe5ajY8Ramfcx9CKVCg7BM8LsP5jpE27ctmn2aBTGYGeZaUDS6xhkVtgWdNFu3CCeldeaj+FHgITJxzsixhpExWtTL3BKNbixnIRQvjC2N1ZTP7y2p8QGtI1rSwrwp2Y6r1XUT9zSdUC9i+YRv71bvwoXexoULyQFu+rctW8tn4TxM4Mib3fbajs2bd9BTw03NFcz8QsCsH5rk7BsNIXno6/ZTEZuCY7YYT+qPmvYmbgl+F50kfY3IZHaGKmPFkcmBmIHGC2c1TNW/n4doAWxFYf/S/oCug2E6dAjFNGxoPLWXCX2TrFq4TrqnOtsB7ePqBWw83rRnIpDxhHqg5kj5jftm7t7W4ll8s7dh8eKDZbPwuNZLOGtW+fY2q/q1+okSj8OGDd2wjYjb1m7YtG3N2m3U3wOfbwQ+GzQ+i0BAENoSui7oaNSj4ScjyNhgZ7hRb4q0UD5naFaOok/jnU4+O7qzlZo3ym4IUZJCgf8EUb56Fy1aNHFf0wksqxdPNO2bSI3ep5Sjj2/a9Dh3umy2+owKqq8+M7tsq2jTYsq5EJ+VQXyWhN53Ok1GzmwYFhsXK4g6SS/w8rC4uFiHbIiN40NZnmZ7PfRU+CYrv8kBIVu/WNkQF6VDU6KKzTZdUcLkfpT/p1rOUoZnZgYyt7/TzC04oO7mLyD58P/MSNgjGSDRdd6o1+tlvcFgNJj0QUJipDHSFGkOD0qRUvWpcqoh1ZhqSlYypZH6kfJIwwjjCNMk/UR5omGicQLzh/ul/fr98n7DfuN+k8MsmnVmyaw3yybDcNOY5DnJWggbSBjjMG8PtfHddn1I3zScCgnPMJrchHnfmlNZPsk1BoccVL9RWz1fLJn3sa9mbl7dmC8PXWgrfxfyyK/S0wcPHZBq0CdufmLvvsREbBkyZERmeppJit36qz3NsZSvb4AQZ+LbQC+tz6AdHIYcslMvqSq+QRUD36Yu0Xwri7FEdJsziYD55bkYzAn0B3EiEqmtFR0cQS9BxAUGVuCRznJq3yoUhzh/KNWScUVzSs1nCuIsnALGktdhiYThcBLOhwlxkiKNR+PxBDKBzxEmitfj6WSVZGVGiPqOeBnfhu/F9+Db2t9WhwqnL+3hC1oHdOZDpAVkxgr5u91q1os6RA4ZHjAf1e/VyaIJSZZgmoOE0ERU6jh0zYwjLKIFfWwDZ0iDd9w7FQojLWmz0+5eQ0U2Z++S4P79SJo99Klftbfxpc/Wu4lA190KMe4ZiKfC0T3OZET5FIbt4THAKIcQjsyrgwzNwRt59CQXHiogs2QPxVFmEmF5f9JuE0WFMFTaTgUirTQaULC7HqKpca0vF9bf3j+MEGQOE8LDwsLCE1BCWEI4uI2woeFj0UQhNyw3PIiFhUAG7sqYWZoQahN1XAF336WXufi83JVNN7x1y8/UW7ARJ996FEep53AU/njsrdk1yybn4wkDBra8ecubTzHefgoxBQ+yIKN+zlCyi+d2CSt1aJdeChcjCQoXMITQR1qOaJLE8KfiJLCalTX+K1yiPopn4npccqkFy+SVCViccGmoepHZ1KVghxKF82CH+sDOxYWgZrvYHG1ca1pjaU7YGL3OYdRHRhBHSGREWFwfBw1Kz1rOH2F6TJOv829BVNq9GuRXKh2zRqE2f10oPsPOnXPDX6XbjefP2VHUfMgydsPMczhC/S1o1AfqS7gJ51Qd5j6+zf/HHVdbBg548cCgQeqFd75Sz+AVuAY34scU0B7Ia4QVrH5mRQoqcjqC0XNBB8XnIlfqnwsXkY4ExxqD9OFRPCQ6sUZ7qEVnjyDxLPCiextGxc0aHKisXWiBGEyPEiwJaQlFCeAVMSNkALaGBBo4FoN5SAa3xnaRBM+88caZp//ka/I1/YmbsPgu9X31rfbl3Fg8HIdVkvuLCiZfpx5p95aVu1zqQi6iz+GVfzwlnD5wom494/k5uBRAfEVzvWinmdsBud4OCBE5HoX0yPUCIfI5mlnSky9Vl6jbwUAwOGWwd2kg+7R+l+gM0TcHkebQjUHrwpHdGCbag2296nfYQqXRaqFbhQMlO7iSXTWLF8+du3jRXLxcPaS+C6HFIezESbgvdnItOPzcOfUz9dxnn+FwdaVah+/HXuzD96t1FIe5NF4A+QnX5EcX0SyjtXgN32yX45otG+3rHNEOXWRIGEqINDH5OdLWdlbD6AjzAyA/wzWjOzzghv2IJfTF3fzb8Vk7ipsPWbM33HBO/RRnYh3ug53q3er+mkN4qbsSBKuyMh7bBoDMZGRgw7t/wwnqfHWd+gt1Rhx3/rbbfvbzn//sttuAbwQtAZyDGd8SURoa7+wXbkxqRiIY6d0DwVrErksPD9UbSZ/IoP6RoX31kVFJJDKob3yfdEvb2RYa9VjOB2d2KztRInpqgYP6jj6atOiY8MQrfcCbhAQGAE3ca7U+X+28xkZ18V1340iQsiAcec9d6x4C9n8IKvH2Q1+Xz7qhrOyGWeXcxvn19U1N9Z6mpck7l77w21cOLt2Z3P+F1R9+8smHq1/AU2eUls6YMafUn/Nzo1m+kvIMeonDkOnz3Yo/gZhbczr4aYvgFIoEwiLBA7D7S2m2SuHEgY5FgIyK6M3e/of08D9nevifTd/P/yymb8sszAelc05uGlfJLeNWc5u53f4DwnfuJBwfseMrOCIEBJEskSHqCMHRJJLvi/rgASSZH4aG4EySyadLuSgXQwbFl0o3ixB+kzuFu8S1II3ryXp+jbBB3EEg4CZ9uvxZHKRC4C5wlTpeXQCBdCsRL23W/Nks8Cu5QL8erXBGSjGQ6xCaCDmkLWgv2SJIBPEYiTKQHCcGiUDy67Qq5dfbTqo1arNncNN0NVylbiE3X/dz3f06CZEgyYKBAQQic8Fi6EuSpTRDpjTGMFGaY/iF9Ij0FHlBOkROSCfJGekT0iJFMKxDqWMZiuObyBvte7iCNjtX0H6ML21t39CBWrlKbf/Fm5ivWO4MYfkneimQfoIs9Ew/acLlnGYX7KLFOIqM1OWTSbqZZLowmyWfVWKpWK0rNS4lN+uW6hqMt/N3iDt1YUlcBjdSGstNkkq4GcJ0aY5UylUKdVIDd7OwSFoq3S2slJ6QQnomnSBb3AD8YvsgEqHGtu+ictZ+hotvH912nstv36fZs2Z1mnAjxBA09xjpjOnKPY6a1+EPyd4YyDucLAPpFhVbzp7tnX44OmMIfzwc0k01uWAaT3QLibdBiOyFUHlr+z5R3tYtICbDaYzMsg+tlvYx8NWA0gGFQC3tkIwFPSunGTXGHgn4lPSnLaYiU4OpR0GtW0mN23bpvUBRTd1J3wxpOieDzBnwQmeuHGNABn2MpEf0R4aASpRidDqRj6EKBwIp0h+ewDzQTIwceki6eR6fkXWshQUdNhgDOXeQv+Q7abeNGQEDNQJHQBDCuiThe6be74Lw6i0kTq+QNP1gMko/juTri8ksfRmp1XvJLfrlZBlZqV+lfxCtJqvJg+JG/Sb9ZvKkfjehx4t6ehwiINz6E/qTBARcf0b/EfmIfKn/Uv8P9BX5h9ihzyCckTdKRA7hovloKUSOM0Gyzg+Q+siQoPMjpSFyuimbm8RPkrJlj+kOtIxbxa8QV0nL5AfRGm4Dv17cIK2VHxN3cy/yL0q0HnCCPwH79TY6yZ3h/yiekU7Kn6KPuC/5z8QvpY/kb9FFcQTomJ4l23qWbePfqbV40bnP8CL43aHe3vatejs3mktU9+H89jPtL+Ey9RG6b6MRku4H2TDiul71kmFavWQYrZcMo/WSYVetl7x0xXqJvoTu38yfpmjyOpFDwebaBDA5skNW4BjBjeFGCGOEwXI6HE523MjdKLjkZ7mn5N1wRAqcLOglvV4wiEY7F07C+AghVLLpIw2RxiSuH0ni+wkOqb8xzTyMG0Yy+AwhXUzXpUsZ+iFA/xizVkDJ0U800MD4Bu4GMpWfKhSLxbpi6Qb9VMNsowd5sIerJ9V8tc4tVevnyfWGGqPHuIAskG7WzzfcbLxLd7u0wvgMt588zT8rPCUdNE4KWHFmyOEyGt+EOYwgNkHwW69uVrPVv6kX1GzIU17mR9OzdQDvuXQfs+8dLaBrZ1gMucbZr7d/k5BE90Zi+ZXI6fgRgh2N0OkDO2KimxHENkPnL20Gf7+MywGsoh6viCsFLyfLENiH4kjiwP3JUDyCpMuFskemjCJ+w2m14V/hEji2t/+OWc0Wzta2uf0erknzU/dDLDMQYpkk9JizP3LwtnCrlpvjl/nQl8N3Wfldjo1deXlUBKTlEQn9LO/TrPxIz6z8nOVcZ3Cc7ixpSMaZMZmxmXGZysTYiXETleny7JhZsTfG3ajcED832hPjifXEVSsepT7eZ/AZfabFcYuVxfFrDQ8aH4rdELdR2RC/3bDduN20M2Zn7M64ncrO+H6zcY+0WwuNEvokWe1897S7T3wGzx9b9Nfqu38+o2nbt39Q31Pf/IX6p1WrsGHxrXfMvGvNRyewgs2LMC9sV48Mvya/aNS48PiM1w/842/DhuKc/MklBbn5sfHpf9hz5isH41Ml8KkV+BSDJjkdEZF2o0WP7MRkiXwu2r6LWHbpN5J10bFREYOMg1FayEBxQCytb0Fy2ll9h+MVjTeUPXvmxGHwNCIfeMvMhzG6uFBbMHvlmGiNF1pXq0d/pd6j5uMD+GdrsHXhkn8s/vO3X30wqir5c266JzcXb8FuyGseuWa4emx8rtrx5ReqGmTBCfRDHIxWdHzCnwec+6F85wAU2hyiXys/ZWoWlbVxT0U3h+xO3CiuS7aHRNiQJcLe12IncbY4RR+bDGEqJIP0PYqW5Vholu0vu9B0zc/1bsWOAXhoZ1zala2S/Q8+rDar+72f3lR7umr9o489umHrfb+4+9bZB29s/KgWJ+L4u4kj6aU1H37qcODkYcPnllfWfDNz9rQb+yfjSEV58dBtj2l1O9C1waBrHDKhcU4Fx5uICcUTYnJAQKLbJWBwF9goo0hR4o02s6Xt1Kgj9B0krQ+cAhMXeB/E+7VJT9+6WAdTFsPBfa3egLc7cfPp0+oD7XP5de2ryK62YvUv6lfYgid2dGjvG8VBwX3B7SGLDo1F+5lMPAIywQFeMWi0M4HXxayJbNZZ1lrX2Jp1e0zck2ilaV0sSUA4DHIZZIm1vA9cPWI571eXP1N2qmcBuRB/uKGwhLc7Xyk73yEvtM9PmZEOAX66+hv13aXfLrrlPde9W7bcO+VALYQA5z41mtQvL3ytnh+UgdNyc1c0zb9rwED2rqjjE/auiOZ3Gc4QcVcw2mXcSL/PGBg0nAwMHdArv3MaUERYiCUiLWJMhEBfXmrCyN71dPtIg1TuPnx491OHDz+Fq/E6tRqSpPVqFV7Pv6O2tXyutmnvd3CYWqGuUdeqFXgjnktfBDGeJUECtVK0oRB0nTPaImCjtEXEm9CjZnGvzIXokE4vmEw5QQabVmIJvAFi8caolq73zGcz2gDljGD2ollYplsmcbNxKPArBmuhUqJ1MC2/kZW/zR+FM9Tfqxv27Hn9LdH2+fDsgg7UtpmUYlTwzJMI9pd9p8H2V0TISvf3FOAq7bMoMZxuwKBO/Z8FvKTfckQGlD+iU/UjQwYakTig5/clRwIKn74vLWpOlL9SHCho9NR3YdbcPy9hqr4PNy3589x5J72/b2n5vffkvOLh1zA1r8RbqJrnZavffPap+k12HsMrQs0VgiHmC8LDnOOCYlAQRApGEzHTClZvtxQEo8AtBTnMMmcRkLxJepegvZYgs0Ev0RxMzyNLIODrFuuxeIGlZJazEDJb6cvyq8YMYZk6iTmsbV0pGnVXbs7H3QFJ2gMsTdvXLU075U/TwnmsJ4IA0alOkOw4VAgVQ3V9hD5iHx19r3INGSYO02WaM4NyUA6eSCbyOUKOWMW5xTu4O4Q7xLtMd5kf5NYKa8X1pvXmHdxOspN/3Px40G/wAfIsv1u/W37R8JzpOfOr3DHTMfNrQW9x57jMzlTOjDUTNgZHAKMHQgxQqSaPf+GhEw0zp4RBTN0ucd9cGvb8ms9HTIpjfF8B8fx5Vl/NcYYJERCb8REQmTkEUHsCrCcY8tn3tSird0a3R0dohdqgI5FCXzKU5BJBy81w/Are3b5fXcEltQ8STr9zief3I67jgJrL3scYUBBYmggDh3SbBPMHaK/wrvFRiyCJJmwywtax0o/2bpFV+s/TMqRTX2QttTZYl1m1FzY20W+s/e/9/3j8qWsr8/3v/vd9/MXns+4UEf0AQPvODLEYJxrd6cyIiuSiI2LsYfbwmLAwuyPCLoegXXpxl3FlmGwPCSeW6AgR8SZIZ8Isep3dQGK0nAYkJizTnyjQ4mJmcGZmd4ZoVfvwaMqTuKjwqIjIyKioyOhhocPsOaE59mmh0+xFse5Qt700NqizuBbBxVs76yNhIfEElIk7s7CmZuFWdSmXj5NwyKrVhUucb6iVTw+/6UYy5oaqyunqcvVi+zHh9G/feuDgwOCly9Xp2NtQrH3rAPr9MtBqRYOdYVaDxPFIOGRep0crgyW7nElz3+BOa0m1AMLmp50hDSGbQrQUTcsPrfF+MwkJ68IVdy/Ey9XD6n71efWwcLpt+XObNj1HlrYtV19Wj+JheLTmW4QkZnt4v+05yGyPPjaKaLaH66xXymA1Bzntxl06wy60Uh9i0mHJMpA3SICcTStPBr74Y0XcPSgUU9wom/h48HadX/8d4JbiGDxIPaF+oqpL8fLTDbfc0gDB4V8/b29v5Q+qc+oqKmo7vwGheauAwpwG7RW9nSAigqHTXin5i4w0QWcp6aUCSEbZPOEiy3evdYZwh6SDPFopiyAbgh53prusUDnqwij6WUpoEAnig4QgMUgXJBWZSiH33WSSe2W/sMg1tMrU/iqLZX/HZbYO4Ba23wmoAi/ZOw/dPOClmfFynBCMm5CyT7SagZfO0NXmTdYG81Kr01xoVcxpVos5zirP1nj8ijCSjBQHsZrqLPo1wt949JUEphUHI8lyqo19zUk/bUpH3d5Cs7Q4BKzkC6AkTiBbYi8nrMOvmYFpukX7Ow5p/WBFaX/I4NBEB5yvfP45vufzz8VBFy9eRFzbKwLqGClc9Nd0TTz6m8j1Xp7GMunYP7/ND0C4SAH0+sP8Gu4A7BmNm9bDbaz2S95GlVwwkGuQCBF5juM/Rakdf0B/75D7lLKPUYsqcyqQgpSODtGm2vAGXR3+pBTSHSRpcCmvSm4JWTV085ygUX9HcVr3a6tDYgO//2hs2xV0XO9mRGsz2FVXp4LvscT/o/HbjKDj/v6uv2z+OOD2GuBYjDziNnRAWIqm8wfRdGEP2ixNQzuFOtZuJm+iKKESTecOomZhAToAeyaLMFdoQjJ9ztHMrBg16yrQBDZmP5rlP5v5l9FcIqM36BzyNTy7D22F81M4l4oR6AAZjM5BuwzOuXAu4VoBj+Eojt+BZomDob1fW1NIBsrfRKOFYx0twsvofvE+WP8+tALOWRQ3+H2E4kQWoSSKv3AGng9HEXQMd7DjgJgMeC/VaBQ+gF9YW9yj0QJm4BWE2l5hHMomBWgAuhkZQUItIGDAUeELLh5+YRiKxNd28nEdzujktQF/4m9ziMff+tsEgS/2t8HRc1P8bQEZuVv9bREFcU/42xKycmf8bQP9qt/fNgU/3O9Of9uMhoxc5W9bkGHk+/62FfEjv4YVMa8HhNLZ6rSNkR0f87c5SJK/9LcJUrDqb/NI4Qb52wIK5yr8bRHFcvf42xJK4J73tw1oBPc3f9vkGEEm+dtmVD3S4W9bkH3kEX/biqSRn6FxyIMa0ELUiGpQFapGPpD6fqgcJcNvBkqHYzC0ymCEAja5Bp574WxEbuRCdSgFevNQPYxPhVYWqoVDQcWdsLzszg2/bpgzH64VMFL+HqsO61y1BFaaD2vNhTn1MJri4YI5/9qK2dCaC/OmIbCEsFI1tCk0N5vhYhQpAKUerg0wpgzg1sA4BeZ7YHUXewaWdZynYWFjTVW1T+lXnqxkpKcPVsoWKmNrfF5fo9tVl6Lk1ZenKlm1tUoxHeVVit1ed+N8d0WqfNnUYXRqiWt+3VxPfZUy1lV9lYnZ7rmuaU1KebWrvsrtVVyNbqWmXmloKqutKVcqPHWumnrArCeJUxiBXujWJk9x1cPNWCCmFkhCYz21FVebonQN6zZZ+cFTprG98AIHPYy/GbAjg+FA09yN3hpPvZKROnhwT8gBuAN7w6VgB14Jk0oGXBMAn188A7hUeuqBnz7YHsSExAdbPAKlwVHhhzEfYKTCXA/8NsK2uxm8RiYgqQDXDXNQtc/XMCItrQKAzm9K9XqaGsvdlZ7GKndqvRse53bDICBQAaG+XHXoMyqkbibobqDRgxbAWCrWP42wUkjj4clCGFPNZtbAswZGl48pBuVaI5tBVYlCnd+Lk73p6FLGph7KeDVqZDiuRLsmEi5odefa5WZBBgn44Yf8vUzNT2/grrzfXTTXwBOZtXysh0phHeP1POjzwA78M1woZUUMXh2D1qVcNQynavbM7aeriq1S79/1FP++a7ulrabJmCbvKQwvD9v9eja/wa/A2goegOrzy1iNXwpcDIbGadkP08ew6C1P5WwclUMNegACHa3hrsmym+m/JnsJ3aQkge0cnVvBfr0Mr3KY4/LTJzMtKAcJrWNQfOxJgD+V0Kr1a1K/Thy7VqA2jeLvA/nVpJ+u2MUT2tPAtKYCVihnswPYVDAKfEzWyuCpjz3V1pC/Y4UUvzaXA2ZNDIrGkwVMBqqZVfL5OVPH+rpTFKChsYdUatg2MR6mdNsd2q5j+6nttdzNgnhhdspV6EjppDONWRCFQdb0QYNd4+dqz93/bqoDnNOwbeiUaB/Dq0vquihawPhR971WCGhDJbPq9X4K3d1WrGBXukYK+6WcmAsjyhk8bUxg/yqZJ9IsW2CHytnaFQzjGj+mI5h2lvixcwFED7MMXXvQ3RZ1ceByS1AP431+bfD2GBvQlS6OdbcB3ecpjGYXw1xmtrmnrGnc0HyJ6zv208O8oOLf+zr222U/vs9e+Jgnop7V5acotQenvmsu5clCv2/RVqc8r2Q4VvglqZbJaWNnj4Yp5WlFtz3vLnUBD+piHrGG2Yxadid3UlTBMKX7Vd+NG1U9/Kq2UsCGupj0aLIbWKM3f7z/lKYAlrKfgi4Jc7E9+v4Y9FynNz+uhFuKf79r2byaq1hzuXN3GpmddTG70gU30OPtlMiAvvT2Hm6/nXMzKgIrLWBUVbD5CVfwhwmddPeeIcOzgLdN6CZlms7k9/IvZUzfPd1wbfLrQUBO5sPTmitwzA0pqc/vY+joBjg07+ViFtXdOaP7vms4B3rkK2pKNbPwCvv1+nF0M0m6mpwEbN2VbHcF8wT1bN+78+tKXJW7ca77Hv5QXfX643fFT0lA2wKaRCOH2s7Yo9E/oyfEBibR8+Ba5d8xzR9SqZI7req/01Jdnaoyv474/P6wspNTE1AOW6cQFcAdXacQ7krQ9RBHFrNnedCnQBxXDE+mwV029GazfcliT+jzBKaN10ObQixEUxksDUYxXCnsGdBDYSvsnt5NgvEFAIvOzUHT2Ro5AG0KYFYIbQp7MvTmw2+OfxydMQ56psI9bY9HNArV1iuAWSVMd+g8iouGaQn0d63aE6s8tmIAs8lwVwzwJ/ifZgHsPAaP4p/C4iPaLvDjqXGumEGnPKKQKcxxgFE+u6O9U+G3CMZNYfzMYjRr2BYwGnLhuUZLDsNA2wkNo3HwWwRr0xHjAa8SxgW6Uol/ZArbR0pPNptPV53ERmmYFfp3mba7oKT6eanhQfk/rXPlKYz+fDgURn8J9JSwvckC+AG4AdkZzyBQvGXGjamMvizGh0K2wlg2jnKR8jO/U+KKu+3KOMYvum8U82y2UhbjyJQrUhKA1n13riQdcucK4xl9OYxT+Wz0FOBjDozP6+zR5DGP0TrOz2sNpib3mkzkd+PuOEYj3dnrYNUcv0xlMd71pILu0/UM/y4qtB3I8l/HdeNZ1+4X+Hc3gE8JW7nkCly5nuliDhuVxfZ6SqeO5DL9nezHfGqnhHXZgKl++SzsxKwnfwN6FBj3fWyHBiuwds8dzGbylO/HcEonN7QR8nfA1WxXDvi1cpbn+Drtdk/P3T1q7IpGu8edKd1sbfdIQLPC49nYul7junq1bEnzWV25TvfY7UoZdiA71mL5QNTbFX1otlvLibpHvRUsPtdiQG9nVOJhcaCnMzJZwJ52+fQGf+3E0yPPoyu7mO9P6Vwr4Iu6YGlxpYtFC3Q17xW4eXUPJV+WGTYwf6+tsoC1ff7IhNLX5B9L+2/plQ0H6j+X74FyxT0I0HKlyKE7/xvZfjf4c6kaxmEaT6b64TaiQF7WxRPKAa3uVtdr17ukj0IbgXpXFSgPqrphXsF4LSOthkfXlJm9CtS4/vtVp5+6wP2/VA+Se9SDekde/756kHzFepDyH64Hyd+rHtQzki/vhlNXrSMw8vtVUK9UYZH/a3Ul5bK6kvz/6krd6kpdFYb/b9aV5B4e9r9XV5KvkK39L9SV5CvWlboo+s/UleTvqBf8Z+pKMvpX60pdb51+yrpSl771rCtdzftevbqk5edaJPG/Vl2SUc/q0pWrG/+Z6pL8HdxVunHwf7vKJDMZuzya+c9XmeT/4SqT3KvK1JXr/ierTPI/rTIp/7Eqk/wvVJmUf1uVSWY8mAZQJzJsNW5nwfP/XO1IvuKe/7dqR/JltSPlv1Y7kq9aO+qqAf37a0fyv1A7+i64/97aUcCyXt2jXF7xkX9Axad7leanrPjIP6ric3nO9sMqPnK3is931R1+igqN7zL4TtRVaZDZOvQuFaFc9oEW/a6NfhnX+TGd0s/rditl7lrPguRU5Xt8BZeqjK9d2FDtVWrqGjyNPneFUtnoqVOyGt3z/R+BBdZgX901aV/ddV9GlrtWn+ZudCkaap2f7skDv/NPvvwjv+/9faDSa+Uar+xSfI2uCnedq3Ge4qnsDUWWi9yNdTVe9g1djVepdje6Ya2qRlc9kJ4CtANZMA041ljlTlF8HsVVv1BpcDd6YYKnzAccqwEWuJRyQFqGkb5qd4BP5eWeugYYTgf4qgE6cNld7wXuJTCWJCQDsArF5fV6ymtcsJ5c4SlvqnPX+1w+ik9lTS1sUj8KkU1QpngqfQuA/QnJDJNGd0Ojp6Kp3M3AVNQAYTVlTT43xUHuMSEFtrm8tqmCYrKgxlftafIBMnU1/oXoCo0aKwFskxfGU3JSlDo3pVpmAuKtTum2RgpdM83TqHjdsA8wugZQ9ZPfa2mKHIBtoIz2yRrr2EILqkGwLptAt6GyqbEeFnSziRUexetJUbxNZXPd5T7aQ+mr9NSCsFGCyj31FTWUDu8IWS4BcK4yz3w3o0CTIoZApxDUe3ywDV6tl+5KQ5cEaM8Ub7WrtlYuc/u5BmiAlrh60OmpB7loVOo8je4rkq34Fja4K12wUKqGVM+nda6FoC0wvaKmsoYKmqvWB6IHDQDqqqhglGusowrqagS8mmpdjTJdqMLtramqZ2hUaboKk6iEusoBiJfOCODj7b0SBSnDAoxhrtorA/DPCeDRBQ3Qq69dqNR0E3OZktPopv9b+GwsbXgpI+m+BNTDDTLnbmSTFngaK7xKQqceJtC1Aw/kBKq2CYxlsDP5fn0pc4MmUahNsAeUJ/M9NZ2IuW/2gcYoroYGUC9XWa2bPtBoB8i0IXdtSrXLp1S7vADRXd+DJ1TquqS7Qmmqr/Aj3IWqzJDTKPyuXfV6aqlWs22jm+RSaqn1AF0JDGxwlc9zVQFhoIf1HpmK6r8mVD2WAoMFKLprKylSE3KU3MKCEmVKYW7J9VnFOUreFKWouHBaXnZOtpKQNQXuE1KU6/NKJhROLVFgRHFWQckMpTBXySqYoUzKK8hOUXKmFxXnTJkiFxYreZOL8vNyoC+vYFz+1Oy8gvHKWJhXUFii5OdNzisBoCWFbKofVF7OFApsck7xuAlwmzU2Lz+vZEaKnJtXUgAwAbliJUspyiouyRs3NT+rWCmaWlxUOCUHYGQD2IK8gtxiWCVncg4QAYDGFRbNKM4bP6EkBSaVQGeKXFKclZ0zOat4UooCwAqB5GKFDUkFLAGGkjONTp4yISs/XxmbVzKlpDgnazIdS7kzvqBwco6cWzi1IDurJK+wQBmbA6Rkjc3P0XADUsblZ+VNTlGysyZnjafkBBahwzRyutgh0wnjcwpyirPyU5QpRTnj8mgD+JhXnDOuhI0E3gMn8hm64woLpuRcNxU6YFxgiRT5+gk5bAkgIAv+G8cwY+QXALkUTklhcUknKtfnTclJUbKK86bQHcktLgR06X4W5jIJmAr8pJtX4MeX7hHtu1w6YBSd7ScwOycrHwBOoWhAh9xjLEhXzs3l7gYflW2/cmumkZlRzXamMKnVjACI8Ph6UFytjzXBLYFmMa+jWbcuh03dcYpmepn5AOkGT6SZ3or5brCAXmpKPI2yhxqTBTVepungAus8ms9TvK5aWAxmUS1io8BWumphmrcTzR4KJQecYUNjDUxZ0FjjA2OiuJqgt7HmFr8bbvS7KUaB0kUBXaXLOGj4N7q9DeClaua7axemwthG6ssYJjX1lZ7GOj/pjH3lvhGBUMGnVDHgFR6f7GmsSlVkmUVcPzp0+r7/PuKniYNkLQ5SfkgcJHfFQcoPjIPky+Mgv5EvZ5C8AZ9xhQC1K2CRf0yspARiJfl/I1aStX34t8VKsqawPypWkn/CWEnuipWUHxgryT3igh8QK8lXi5WU7x8ryd1ipe7q2yNcAn8ORuKnCpdkf7ik/KhwSe6BLssbf+qQSa73KD86ZJJ/0pBJ9odMyg8PmeTeIZPyQ0Im+Yohk/KvhExySda0yRMLKdpZE35QdCR3Uf5joiM5EB0pPyY6krtHR8oPio7kK0ZHyo+Jjqiw9lCUzsBHvmrgo/wLgY/83YGP8j0CH5kFPj1jh38e0PgC450saJBT4Sf1x/ybwTRWt5sHZxqrnVWwt3qp7P1qA/T1fFv43f/CMG1BzbyatBowVjenNlQ3pPkt5g/6h5/sXyKzv45b6f/n2+V/WT/nluG+SEUEO5AVrn1wPDBAwH1QK9wlIjtcE/x9CWwcbROssOdx6Hm4xsKKBMewp9EoAq5RKBaukawngl3D2TWMXe3sGoptyAxQQ9kdbRMcwtrB7BqEzWgJPA9id7RNsAkb0b3QZ2J9JnQI8diIDWgG9NEnBNP/Hz4eG7CM+kIffULg6oQ+2kOwns2U2FWHjOxKZ4h7HkwVskKwyOgS2JVnowijiGM9mF2Rs2MJ6biWqCppu5QitKnkUgppVcm334wXvl1CvhlP/tFKLqrk7yq5oJL/8zz5WiV/U8lXKvkylpxXyRctsvCFSlpk0uLkP/+rLHyeQf4qk7+0ks/uswufqeTTVvLnVnIObs6p5KxKPlHJn1TysUo+UskZlXzYSj54P1z4oIK8H07e2xwrvFdB3n3HIbzbSt5xkD++4RD+2ErefssmvG0nb522CG/ZyGkLOfWmQTilkDcN5A8w4g+t5A2A/4aDnHzAKJxMJCd+bxNO9CW/Px4s/N5GjgeT1+Hx6zHkmI0cfe154ahKXnt1tvDa8+S1Zfyrzo7fOYRXZ5NXnfzvHOS3KnmlghxZbRGOqOTlaHJYJS+p5NCLI4RDreTFX0cJL44gB1+IFA5mkBcOWIUXIsmB54OEA1by/H6j8HwQ2W8kz8Fiz6nkWZU8E0qeDia/Uck+lexVyZ4w8lQE2W0nTwKcJ1vJLvjZ1Up+DeN/HUWa4ad5CXlCJTv7ksdVskMlj6lku0p+JZNtKnl0q1l4VCVbzWSrk98CjNrSSjbDlM2xZBP8bGoljwDxj0STh1Wy8aHnhY0qeWjDbOGh58lDy/gNqxzChtlkg5Nfr5J1IB3rVPJgKlkLE9fGOjvIGpi6RiEPGMn90HX/JPJL+PmlSu4DPtxnJ6stZJWD/EIlK1Vyr0ruUcndKlmhkrvudAh3qeROB7lDJber5OcZ5La15GcqWa6SZRFkqUxuVckSlSxWyaJWcksrWaiSBfO3CwtUMn87afJFCU2txBdFvK2kcQm5SSUNnhTBk0LqW0ldK6ltJfNUMlclNSqpLjcK1RmkSiWVGcRdIQtulVTIpMLJl5fJQrmRlMnEVRoquNaSUmwVSkPJHJncqJLZKpkF97NUMvOGKGGmSm6AuxuiyAyVTG8l16tkGtw7O6apZKpKSmLJFBspvi5CKG4l18GD6yJIUWGEUNRKCgusQmEEKbCSybEkf5JNyA8lkyZahUk2MjHPLEy0kjwzmdBKxufahPGhJNdGclpJ9jizkB1ExpnJ2CyHMLaVZAHMLAdxjgkSnCoZc61ZGBNErjWT0aNMwmg7GWUiIyvICJVk2sg1KhkeQoYNjRSGOcjQITZhaCQZeogfIpuEITYyZBk/OMMoDLaRwU4+w0gGpW8XBqkkHeCnbydpRpIaQgamjBAGtpKUUIeQMoIMqCD9K0iySvqFkqQwq5AUS/oqxBFL+iQCAwb0iSWJVpKATEJCK4kPIvFOXrGROJnExpKY6AghxkGig0KE6AgS/SzYjPv4KBOJjJgkRC4hEbBoxCQSrpIwK7HDavZWEgp9oQ5iqyAhVhKsEivcW1ViqSBBZosQFEKCDvFmCzEv403wxNRKjBnEAKQZ7MSwjJdNRHbyepVIKtGpRBRkQVSJIBPByfOthFQQDmZxKlgvk4CtBJkIfhZX3L4SD/j/xx/6byPwb/yLQf8XsQOiGAplbmRzdHJlYW0KZW5kb2JqCjE0NCAwIG9iagoxNDcwNwplbmRvYmoKMTQzIDAgb2JqCjw8IC9MZW5ndGggMTQ1IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJybwPD/D/9v+xf8/7//YQACJghuAgCKmghECmVuZHN0cmVhbQplbmRvYmoKMTQ1IDAgb2JqCjI3CmVuZG9iagoxNDYgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMAogIC9CYXNlRm9udCAvRUFBQUFBK0RlamFWdVNhbnMtQm9sZAogIC9FbmNvZGluZyAvSWRlbnRpdHktSAogIC9Ub1VuaWNvZGUgMTQ3IDAgUgogIC9EZXNjZW5kYW50Rm9udHMgWzE0OCAwIFJdCj4+CmVuZG9iagoxNDggMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL0Jhc2VGb250IC9FQUFBQUErRGVqYVZ1U2Fucy1Cb2xkIAovQ0lEVG9HSURNYXAgL0lkZW50aXR5IAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoVUNTKSAvU3VwcGxlbWVudCAwID4+Ci9Gb250RGVzY3JpcHRvciAxNDEgMCBSCi9EVyAwCi9XIFsgMCBbNjAwIDM0OCA0MTUgODMwIDY4NyA1OTIgNzExIDEwNDEgNjc4IDcxMSA0NzggNjc0IDM0MiA2ODMgNzczIDg1MCA2ODIgNzExIDM2NSA2NjUgOTIzIDM0MiA3MTUgNzE1IDcxNSA1OTUgMzc5IDc3MyA0OTMgNjk1IDY5NSA2OTUgNzYyIDM5OSA2OTUgNjk1IDY5NSAzNzIgNjUxIDU4MiA3NzQgNzE1IDY4MyA2NDUgMTEwMyA3MjQgNzIwIDgyMCA2OTUgNjk1IDY3NCA2OTUgODUwIDQzNSA3MTEgNzMzIDY1MSA2OTUgMzQyIDc3MCA4MTIgNjg3IDczMiA2MzcgODM2IDc3MyBdIF0KPj4KZW5kb2JqCjE0NyAwIG9iago8PCAvTGVuZ3RoIDE0OSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnicXZTbjpswEEDf8xV+3D6swB4Du9IqUpWqUh56UdN+AGCTIjWACHnI3xd8ZlOpSHs5eMbDmZGdHY6fjkO/mOz7PLanuJiuH8Icr+NtbqNp4rkfdtaZ0LeLUvrdXuppl63Jp/t1iZfj0I1GiAq3SSONyX6s/1yX+W6ePoaxiR9MiN32/tsc4twPZ/P063B6vD3dpulPvMRhMXl6F4eQ/maHL/X0tb5Ek6V9no9hDeqX+/Oa/i/i532KxiW2fEM7hnid6jbO9XCOu7d8ffbm7fP67Lfd/1svPWlN1/6u50d4tz77RHalPHc55KAASSLvIZ+o1LwCEqhMVBVQxZru8gLp2isUoZo8rdCwZqEWeoUC31JCEdLILlEB2RxiT4tf+QKpHw4Wv7KB8KsqSP1aCL9S91Q/jVQ/B+FX0ReLn8PW4lfgYPGrNA8/UcJP1Ag/Ic/h54l0+EkN4SdM0+EndNDhJ3TC4ed1TeenFfCrdE/8PF1y6qcV8PPM1uFXaQX8Crrk8Cu0Hn4FXXL4eSIFh0ivRR2oIDh45ic6I75acOiYmODgqSA4VFQXHETr4VBiKzojuivqoNVx6LSeOtAJUQeqe50RnfDMqPXpgOpJtO/n8nGOJX8fukGcaNa3k73dUI9ro73N83pjpAsqXRXbJdEP8XHTTeO0ZaWfv7XYOKYKZW5kc3RyZWFtCmVuZG9iagoxNDkgMCBvYmoKNTExCmVuZG9iagoxNTAgMCBvYmoKPDwKICAvVHlwZSAvRm9udERlc2NyaXB0b3IKICAvRm9udE5hbWUgL0VBQUFBQitEZWphVnVTYW5zCiAgL0ZvbnRCQm94IFstMTAyMCAtNDE1IDE2ODAgMTE2Nl0KICAvRmxhZ3MgMzMKICAvQ2FwSGVpZ2h0IDcyOQogIC9Bc2NlbnQgMTE2NgogIC9EZXNjZW50IC00MTUKICAvSXRhbGljQW5nbGUgMAogIC9TdGVtViAwCiAgL01pc3NpbmdXaWR0aCA1MDAKICAvRm9udEZpbGUyIDE1MSAwIFIKICAvQ0lEU2V0IDE1MiAwIFIKPj4KZW5kb2JqCjE1MSAwIG9iago8PAogIC9MZW5ndGgxIDMyMzg0CiAgL0xlbmd0aCAxNTMgMCBSCiAgL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnic7X0LXFRV/vg599x7586d9zCDvLmACCgCgaio5YCiogiISGpZjDAIJgwx4Nv1tYqmpaZomSmVtqZmZm5h2dsyM9tHuq2/6tdWlrWZuft3t1K4/r/n3BkePtq22sf/8/k73Zl7zz3ne77v1718QhghZESLEEGuwvGp6d/F1PdFKOsEjJaWz2xQUHVkFpy/hRBWK+um1dzZb+Z0hDi4RrunzZhTqQ6si0WIP4xQprXK4674ZvNrZxAalAz3+1fBgLFVfASuK+C6Z1VNw+ylNyS0wfUKgDdqhrfcjaRLJQiR2XCdX+OeXce/KN6J0ODfwnyl1l3jib5j7Da4Po/QjVKd19dweTGajNDsb+n9unpP3WDdX+B0TghCQhXORK3oGHxeRrvQFvwoXFXCzTthpIXbj5ahRhh5FR/DK7m+MPYoOo/egZlN6BjZxSM8GmXAKEKnBA5dwCXoAMDIwg6cpRN5xBfwB/hivpU/wx9HA3gff5wv4304gzwslAqPwpFFXuPs6CiKRq34Q+RDz5IvSAY5xA/nzehDcpzsQp/CLjzAP4bWoO1oHuDiwF60kJvHFcPIEeE42gwfL9w/jrfidwC7Z/FSdBLdR3huFNqKTwJdx9Df0VJSwi0EnmVwlYD/EYB1HNZvRj4eCSexjFSuD4wB9rDXVPYdSfoKJ9nnPFoIO5eg7WKr6NDFwS6UY4/iV/FZcT1qQe+QW8md5D28jI/jd/Kj0BqNA6QMrQHYm+kasRLPAdrpZx6Fzs3iy/Au9AVfppsKsF+jFMGeB7hioKgSHYJjlmgFmgbjZWQlYErvRqLjutF8KqwHCLoFQDVCXpKJpsPZPLQX7Ud9yUa0BiAxesUBwt9h5Rb+I6B5Db6b+zs6ToajJFTJnwNeIwdCGxF6RicKPOEwSlas+7j4vIp9rnETlTcmxfRNvuJSseqUfahon2mO0nr5ctFEPlyYtE+I2EfipX18fNxH17v5Ud/kMUUTlX3tucP9UHPLhsPY+IlwSq9gGMZzh7N7dNN9Qjz8l1e2TymvUu6y3hU36C6rZxCYmPZvuP+oA/0vguMC8BNshQf7EEBXBLAjMRGO++A4C5yCebrPEZL+iJAexmWYJ4PtGeC+cQNCpjI4XkLIAjAtpxGy/gkhO3A4CMYdE+FoQcg5Cg4YD34DoR6/hAPsMaQfHPAbegihMLgfBvfDwSYjrHC4QFxVCEXBbzTgpKTBMR+hGGB6LMyLmwEH4NQT1savRagXkNML4CYATokwlgTrehvhGAhHK0J9AFafPQglS3DAWDKMJYN9992HUIqCUCrgmAr2nQa/N8C6G4b7D4B5A9CaDvSkw74ZixDqB+szecShSnUjXylsBy+mQ2EuI38JiZewJCzkeJR6+MTZG5D1xNkTZ9OCbDG2+BhbTCWP2nwkvO1TdaPO/O1f68UkhFEF/pBbyC0FGLan0RaOx4i3vv8WW5oWFOOMqeDC2z/llm4HMSEr9TfCSSSiZ1wJvE0QBWLjiEh/eAL3ORvGKIfw+AkkgkoiQcA664nDPbJuQKln07PSQGN0VuErnVXyH8JXk2L3F0kYT3FNRaQ3GcmPFCaTBWQp0YlIx0m8XnRiBxfGhwm9US/ci0vik4R4UZEGogycwQ3hhwgDxFEoF+dyeXyeMFKchErFSq6arxbmopl4JjeHnyM0iouk+9AmMWkKmhKDM/Q4A3Oj219/B5/C//P79iPCyUs9+C8u9gF+3nn5E74R7NuAeqDRriDxoB0dNLbaV4fo7ZZxxO7MDbG2nb1A+Xr6wlnruTRX3NDQeWieuFC3UFqoXygvNMwzLjQtNC+0LLQutM2zt4SeD7XhKThWdDqCM9L7Z/brlZCObFYUF0u/Od+GPbub1+/Zs/48tqvnzv9F/RrbyIdnjh498/kbR77Yor6hnlW/Uo+ANwoCfwRSBx4/Cz5wNOBoQ2kuh2jQIZuBNJlb9Yd0sighaYTd2nb4bDowHFA8fOItmz0r7UBR0LYgDvBIwXGAii3OluG8CWekB/cgo6Pzkrf86uDBQc8uC0qJIAfstmMvtO/ny/ZWlgsC268UbDCTL0NG/KUrT5ggCnpZz0+Q9WSCbJC5CZgzGGTRppN0go0XJEnH2QhnhNk2sM0cWQD1IOhFg2Q0yHpJc1SAs8l6Ysw+uWTMPlvJLWP22elXEP0ylNwy8SBs6xo4CY/ZZ4QJJjps1YYvvzRw0ltMmYacTU/vcU196vjVTifFYtdlgQvmgoVYOVPO4/KEEbJLvoW7RZggF8m1XK1QKc8BA5gjLBSauPu5+4QN8iHukPA2d4T8RogUOD0ReYMgSwY9/BidXCgJBm0Ml8L1DoPTGI/icRyXQGL4eCFWjNXFSwn6nnKMIc6YRfrz/aUsY5p5BDeKjOBdfI7gEl06lzRcP1webnCZXeZSVIpLuSJ+nFAsFuuKpPH6EnmCoRxs0sNNJx5+ujBdnK6r1bsN04xecyNqxHO4BWQ2v0CYKy4U5+oW6mZLc/QL9fPkmYYFxiZuhbDGvAltwhu49WQL/4Bwn3if7n7JlbrRuM38KMS77dx2spvfLTwmPqbbLW03PmH+NfckeZ5/TmjVv2g+zL1K3uLfFOaAnQRlhGP6H44z4LjS1s8+PfXZp63qe6f+8tdTfFnbRjKdHpdayMa26aAjA8B//1XYioLQQFeoWZAs5DFkw4ekJtkg6cEZSVa7eYTD2jbkMPyXnsXcwYUhoKa2rKy0/U84wf6xDXyNzRE8GDvjYntl2uIyM2x4Fp6nLhvje/75kw83NQlb1VfWtLesLNi87fdc2Rp8E2L6+R587UUq9V/PoKUcDkUhPFgp3SJtQIYz7r133lFVmHcU9DgafJcRvejqR6jCgrfi/AoLOo1tsqzPkXUckQh6QjIIegl0VZDFCP4mOQLxJgDadtamqR9F/dr6B/6szkz9WSnRWSSLnpOdnEMXJPfieukUXS9ZkfvpMuVqbj43TzdHXsQt0S2R13LBPDaQIBxO4nAySZAS9f3wEFIqTdJ7pOn6mSDjxfhu0owfIA4qmxg9jgEjxnHYFncU98UL8ELc9zV14TF14WHhZJtEvr3YR4huQzy6+BHjEXzzk4F2GblczhzSwnMtwmIdatFL0WIEQdHYQO3RUgJGhqntnT2sMTD9Ag0fQCWY0QELsfDclAExNiEzPoNKS8Wj1fux5008um37Lt43qnXUxZO72H7Aaz4O9tNDGLSLzTzXjBbzj0sQDQhwUgZOpp84zJSAetH9FgMwjMYapgNxR8nk9jquqH3fm8LJXeqoXe1UvdBe8M0Twe8FQdoz2BVB9IiYsdhktq2W8SFHq9GklxyGAk5CI5zUSWdpPvB0+oXDZ212kNUBr/MlJzjBIFuGTXPGcBKXaQaX2AvvbZ0/v/nx1tZhTza+/Ab+DX6We7TdvW3bC9u5eZda9lSWnyc7/b6Xr2A49HeFdmLQajwkgyqhAsDBQPWcMo6qyemOzcucv6Gbg8Bs/Xp1d8J8Bd18z8GDOU81vvw6t739Vm7rtq0vbG9vAjfsqfjav+8W0QHyO+RKkmjc1dm0qCvwnE0Q+BwJHC05hDbpRQHzooSBDQaNzTbNX54OqCvvd5P04Km6Wo1UXW/nOVkK5hK4JKGPVMpVctMkHzdLWMKtFO6R1nMbhU3SI5xdL+hFzkBkXSJJ4BOFPmIfnctYRcqMK8kyfqVwt7hGt5ls0u0ivxKe1r2m+4PuG3KefMOf58Om3Emdio2GX6q2zx7k4r9s38vdcb79yEHR0VaNP2m/0L6Hi2v/AGT9MjB7DtBL85o+LrP4Av8kOsQJWOLRCAnciCbbtrNpLoNV79IX6cv0dXoB0w0oW+NeboV/fNmlFtHxBZWb9/In5AjILQGdcQ0xGTmzYXx0FHgmnTw+OjoqRzZERfNOtByv5B3LnStDDtr4g/GtttWJUbIhOlyHisMls05yxOYm0th64uxpCKpZ1IuxNED92znr387ZA/w1fwWeQce+gbkogTK3JkKOMEQYU/TJcrIh2ThYP1gebBhsNChIwT25RDnR0Dso1ZHq7B2cGJUYnaQkxfRMWC4vNyw3LjfZqUVxnCiLBmIkJmImFmIloSSMhJMIPlKfkJo0NOn2pIVJi5LWJrUknU8KARdxJ3Zqsd4RHI2jsNMhgpYnZEZhLQlJhUwgs19/UD6yqmDn5JUrp24YenjHN3+c/OqMytfdS1Z7drt23/entysP8EP3JiaWlLjyYsy971+55em4uBcyMyeNG1MUb+nZvGTrnijNB3fKK/YZtImj2tfhg10mq+ASioQyoU44L4iakEBAouO7s8ifcy0E2ThQOKpz9UROrF8urRCcj2HhoBE/F3LQ3mpcHRHu5CSnhMZwdktuBEvCDoMQNAmctp6Dz4VzNNVxJQ2NrItsifxt5PlIYSgaiodyQ51Dw4VkXaqUCuz3Ii/2cl6nN1wPTJqCnTGMJwOc4AcUmpNlpCMdY52OX9i233j8melHppb/9g71AqRhSW0fY10rt2PF5oNm7rbJLxzp129v72Q8EMuQnw1TPzi86cDerZSmQJ7MgcW+4sqGWIgClgphhsjIxiECVmQTeJEO6m1EluiNHER0zZgsBjuTdCKr6vSCbAjk0ENOnzhr7ww7QtdMp9OqadazX2FWnWPBFs5CAxGaiGZCvbUa6XVY4kSi54NxKFeKJ3JFxmm4ipsNyfJ8Us/PgpSiCa/gFhnv4+4nG/keoE0QbmgmQGJIHHdIPcfFq/M+5bJ+v6L99hUnBXN7KNl7sQ9eqC5GlHaf+q1wCipuA1S7xa7eNitnwUaT0YxNJmOOJcooNttRc8g6+2pTlCncYiT60PAMEuq0RmnxNSuLOizrYZZgZ3UhFg5qUTjWLyX4DsJxCQG5xdBvjiS8r7Zj8v77GKuXh2L5wgcxcVb1NbUJz4FCfBCe/TshX21VP1U/U1vxKByGw/Goi79RP/ia4/AO7MZT8Q71FnWr2qbeE4hjq0COBpTicvrjmNTMPy4LWM9CmVHzsSyW+YNZtKlrMIPjKNnXHsYdac/ivm27iUa0EbvaP9Hi5GCAPwdyawMe5hoh2EQQuY3wOvoDmsJhqK4gXbbBTNmmlzH9MciQuehtkLdArsJjXkIvCpz/jJNEYyCxtvjzZpZiQ1wXaVwfs89BY7xIE+nDEBoCufT1UukrUxvsuk/meTmMd8q95Bv5G+QJ/M26iXKlPBPP5WfqGuS7+SXy/fw2fpPuXnmt/Ch+jH+C36F7RG6RI2TCC1A7GMKIU3DqwwxJpJcQr+9tUEyDcBYZIPTT9ddnGdJMeWSEkKsfbXCZoJbDk7hJ5GahVJykK5VK9ZMMRSavaTZeaHoAb9Dtxtt1+0y/MX1oumxKpWrKxUFw0dMQw1eod+Bdp9Rn1WdP4afU+lM4CSfxZe0ftr+MW9VR3GguWL0Tr6H6+qxaym8H/2NFEegmV3jYQWR2HBSkVvNq/Dw5FGmzG0b2gAyWGxFJZZ2uVX+naWS3HoYKUF8WtSiqJepPUTyeEt8R1Kku0rxCi/Us3cA+qLKenPcWunz5rXlPcgN/de+9v6LHzva9oryrwq0eUr+FzyE3/vLYmTPH4NB860bQkdFgTxFosyshNCychESAciAW9a0P2TaYWhzreNQCTkfmsBzRw0pEwHTMPicoQTCVv4PJn2gyP/vSS8xvstzuwtkuroTFK+xKn8CXCqW6ufxcYWZ4U6iOR3woH8aHCxENaKbYGOYLb4hYgpaHLglbEr4kYifaGW4D1seDnmf2RwNugrBCSdZlUi7wEHegjscruZfb8n347gz32F8tv/2d2XNPTPwcO3JvCVUv7Nq1axZeN6hmU96sjTnD3roh/fNXbt1RF6l+yWgfjpDuUZqz43lQe4ZptWcY1J5htPYM+0G15xPXqD3/6SJyP2I5/V9FTgRrA68u2+VEoSdk8zdxNwn95DQ5nxsr5EBlOYmbzt0hTJPL5HlQVc6HqnKRvJFrFiJ1SM9BZcGLAhKQiHVgr2DISM/LshGZwSp4pxRqtJoVPkZQREWnSHFQScYbFLNiHsINIpl8hpAmURsZSmtKNAKP5lx8LsTWHDFHlyO5JBfUlWONtK6cyEHtYCwyQxZH3PxUoUws05VJFfoKucIwC83E87jZZBbfIMwR5+hmSXXSbONC40Lzcq6JrIAsbpn+LgPUkfw28xPmW1gtqNe6JtS8hr8FbjTrE/p1XF2pgm99RRVOXrLz5+gBdYf14nkqu8ttoLdnQHYS2uBK9GeqmBPoD4FcWaJCknI4EJDI6XiXEIFcOr31xOm20/bvbxchmYpiiMA5uEwujUsDrozgXJxLcEnjuHHCOMnD/ZJbz1mDcRiJlnvhJDIADyQuGaIcmU3q5G2yCYgijCIwWP4U3oofONV+/phwsn0zV9n2V/DURzTba4Lc5GGwvQT0C3/eyEX5E0euM3HEyPmQY0NIs41vRhvi13XmjbHhoea+ulBHbKL1/cMQ3LrmjachWPz9nPV1W/e80RpIHC1JQOXT0UmpSYVJZMqV6Rwfc3U615PWEqN8b92+46lZj879+F31A/XM9K8XzTtb//ihps3zPn4T9/hb9f8I218b0H/RzHJPdGifU0+f+lNa6m9zR6z4Re386JC+L+1+/XQvf9zD60F2BKU8g57gMEQ6nvoUa0mgO6PldthlSvMnd2uEbYLIcrujb0LddrEPheO7/ImwCvgXibJcChLCcTMJb5bsD9n2OpvN66TVURyKsPXjM0JCDVr8P912WMvpaF594hxtD8TbYjJjbCLvD/PpfA/KC/9Ff/5V9WnO3qh+1qI+rDbiVfi2e7HOW9e2Sj2nfgVZmf2OnSfxukfbF46fgO/HNbgW3z9qxLu3l6lvq79Tf6++HY8COehkyF9pDBjoCg3EgNXmVryJMO8/EuJAbiRLPNNp8XE2EACe1vw/obVdoJ7kWIYSjAM9P5Acebi1ddCT849dRpePzX+y/Qh4/p07wfuTp7nbvju7s8KNh2Oo2vBwt+oMuH+MtgBePuBfImTGKcgZJC/XRy9Xglqcphb9ejGiRVkft05c7XwkKTgiCBFHaEQvxRpBHNF6MYmKK7gk4P31zPuD+79AOxhUA88yFfzsHMudWeqMXfqKKHe0W6mI4dGUa6hZH5zZQU+ngydD1z2i/lb9/LYj00veqHnhyMEde59u3vrIfeNfqPcdnfQZNt5D4qMPr/3gr/Hxr96QvnHNL5sfnVXnm9ez1wFF+d3++bsp/2nvfzvLl01osSsSm4gJ8mMTZMMGXYtA82FslFGEKPFGs/V92iZkjUEgzEgJO6G1kmhNeAKceiBp5I+CxzhKg1pvA+qNRqFJqBrNQnchXTDug3rhPqQ/LsCFxkJTKa7EjXguWYZNWrpLMmgZCd4hJpOIKofVTPXkyaPttwnxbZ+Q420ZO9UWXPYq6ugJgO4EoX7dewKbrt0TOBvoCewv0/peXTsCtn/QERAd7VtpS+DyZTQPdKOvaLX3Qn0RsomoqBgh5YCjb6JB18flXJjoTSzqe3uiq29hYlrfoYmoryVRnnID1XXIdyazHnciGu2KCzVG6u3Lg4IPWsjBXnGtCYf0By3Ph0X2CkWScaRotyu5SbTo9av94dOa4qsnqcpkgfb3XtS7pTfV/i6pTg8r16k4N2K/Sdhpwzkzgzy8o3nDjh0bmne0qupF955x47YW//pA1v75b7e1vT1/f1Yrd+Mb77//xpH33/9S/Vj9IjLqqeTez794S/lUCDkE83jQ1PJdlO9bgf4K0JlIdJsrjg/T2ZZbI8NadI4W60oT14IWm1brtkf1iMAy5OmyVQT3grtahJUqjr/nZaUeDYwD7JkldxeYYaiHNbtguTxL6pwO1M0gqB18QELbW5InJl/EPdUT6te3vVo1+aU7Hn/zzcfHPVRCk/17LRb13J//ov5NUY7dkPb0li1P9+yl1UngG7U6qQeKcwWxssi4jj5rCLWwgiiEFUQdzxq6Fj4JnSUP6lbyvE9rHHWF+rpW81xd7Gxn5c029Ra8HYodKHcYLs8CL7eDDhs0/0cOGi36gyHO1ZbW8E2hyG4fGWIUpbAuGbDf/73ezf91TXa7JMEJYEgZ5NNAvtt+T2cWPOjgQS7V7+644i45cMVOwAajVEDuW2Zbk1wRghUbpcdE3IQ2mcVDMhekQzq9IJkshnwH9XYyFaVBK3PM7JyKmLWcD9tZz/l0ehtwMp0qLn7a5SxytjhpaAWsIzHrPNKuM+2LcN/uKx+LU9XfHdy3b+/zouP+oqryNW2p5HdrCp7bDXhBvCBnwIZC0VBXOFqOV/Dm5aYVMu0b9Wi1rQ7T2U1olCM3zNp2Oj0gQfUCbROluQyWcGv4ovC14S3hAu4S2ANdiFgtsgWTMwUPFj31+utPFT1YMHbHlHb1D7gvFic8zGfu6dPnk+PHP+nTZ1fPnsBoM7bjQXGI+gTWI2U+waj5hHkIhRzgwkNk8AkmV3hhSFr40BAUbgkRwRewOC9MZ33hr12J1+8roicCbUVIBLq3FdOv21aUCE3T7nVwmOf0UjCXKCRKA7j+Qj9pJDdCGCZN4KZxM7lZwlL61ELawD0gneGcIqEdxnASqhNkIutCCO0x9tb15/sL/cVMXZoxm7Cclz5HMU4lZXyVME03S6gzriKrhHvENbo1xs3kQfFB3dPk17rXyGu6d8kfdJ+TL/jPhT+L35Bvhe/EZNqJvJO2ImkbnXbQ3+S2Yr49nISpf2/PgNylfSU3q31U2yfcb9pvQMw+1gBfNzJb7YkmunoGici03IhagsWWiOAd1hbjyth1EavjjbH6iNCooAgSEx0eD1wCp3lay/XaTneGWZfjGDqGj3PHyXH+mHBMBC+1P4qb0v0poaYWHAm4nUC+E8xtX7Ft2wo4sD7/gfw33rEM3n/HR1hQz3+stqvncBEOz3+ADH724Yeee+6hh5/l5rT27KX+Vf365inq119+pv4Z343nUKv39+0gdukiQY9j0WRXL9GuD7EgMVLnNDZFKqQ1/FCoVYdsFkkSi2ySpSgiBFxAHJV+W1vbWa2KHDLktPYchwY0V1Baz6KedT3X9myBz4s9P+x5uace6GIxzdk1zl3VAk/KfWnJEy8crG9c8+jB+ll3P3rw4NB9c+buJivnz/zbxzT8PbSFhj9u68MPvPgIa4xPmzpfkw2Lg0CDjOLRIaiQow099Gb0WA/xoNmmLI9+NuJgHJhkDyPqQUJoLI4mkiO3F5Dx1glwZjbmGA6fvtB2gbozEFGWjXadXLVpkWlRadFpSlpMWuzQBFekK8oV7VJcMa7YosiiqKLoIqUopii2KKEuYVlkU1RTdJPSFLMsdm1CS8L5hKjA0sCiwIKyqLLoMqUspi6qLrpOqYtZFLUoepGyKCakq/xvxAMCDyaoM4rpmnEFcy98uGex9/6Dra1DD63Yc6z9EuZ+tans6RLPC5P/z3kuo3LeVN+pA0n57Yt3Vbpffvj5l+wLV6Wk7Eqgrx9h8BE53H6W1/d1ORDUz5gLI4jkcNvQYp5DmKQeZslhl8aA1veB2o+TdrV/u0s4+V2Npjs0fiWATYSi/q4w00PmvXKzDT+E9vLNPdZRFxhqQmkOaxjVl7MdOT2UPGkHLOHR4Zzf9QXy+M4GLCi5kFB5ZsllpJ7HVoyWnKmc/tUv1cfVuXg5Hr/8K2HqydtvU4+of1RPqUduu/2dUaPwNgy1Hd42kuF1I+Q3C/kyZMGrXMN0Eqe3IQttmyFkMdssyGKyGU2I/phNskE22gwGOcdk0FuRQWgiz5sNh6xmk1HWiwRJFt5isAYaahJLGwxd2mgGLalmXTTraYiLft25XkNB+KpHOs1Gz4tIkEQ9MQXLPUxWU5wp05QnF8oFpsn6yfJ0ucm0yLTeZJcRIGEQjAazwdIDOzkrbxV6yA6DwxhmDrMkoJ64J6fwipAkJerj5Z6GnsYEU29zb4tiG4AyMVTGfJowUO5v6G8caMoyZ1nSbNnIhaFOBg/q8j+JztHnyiNNeeY8i8tWgsbhcdwEUsQXCaXiBF2pdLP+ZnmCYYJxknmSpchWiSu5KrnaXG0ps82TZptnW1aiu/TLDMuMK00rzSst9+ubDc3GzebNlu2G7cbd5t2Wfbbf2D60XbZ5IKcWzFgrH4Zi1kvg1hdsmL9+Rn5JRow6+FV8G4bE6Y25m0ctL+EL2jaQGZqO7YTcWnvfpNwVItg4wrHQlCNAfkcEmg0iUWdte+uwZsZXqS1N+CY+j3TIBcAgXQCB2QYMnOSyT+SwSMKELGGUMI3sQ/tEHXuu6sRxOGYnean943ew2p4hnCy9uFjow/zM5ffUUvaMw4AsaLgrwsDpkPkFo65JeB4dMj5playCWGjCkhGNsLInVKez7P4666xVS5ZdBqvNZSuyldnqbNrDKofor6m0h1aP/HrEDdX57MnV6j+8tMV9v5j4BexN0CrwcatY/ImDnGiYKz4Eok+C2BLVt8W+Lmp1wiNpIcaevSOcPSMs+ghneBSJsMSEp7G8HbI05tU6cbGeo/lPl2ATH+ge0HYdK/viYnuC5wnqUr9yq9bu2LF27aM71B1L1qHL//uhum7xvY+o33zzjfrN9lHrli5Zv37J0nXca5ubmjY/sLxpc6myf9FTv/3tU4v2K7Gvrzn1+een1ryO3Q1LljTAwfz2YqCpCWgKYTE1Thcdipej0BZ5B9+CVgZHt1jXBa+O10VExARFodjYCBMLqUBAIJ/6jD530yJq8OHQV8JeCn8p4qXIV6IOR+t22Q/Zv7BDajdlAMvV7UEsr8rshzI0FxPbCwcIAy58lL9lDETSQftn/Em9hK0fQ5lhU59UP83fgm/yR9toiKPYhO2lt2LLl5/hYNWnLqdZdBS3KRBrac/rIujrF6CvOqiszCJ76o1dUH+4BIl1tpiOpqdhlqw+jySmlxKSAnoZhPTRyIqtXLSOPtes02/T66cQLTWNEfmv288daz8HVcXFk1QrOdafWtOlhmixoxathoiwgBI4w694Xwn76zA7ZObdXkRateXBB+G/Bx+8hPXqN5cuqd9gvVCkHlffguM4uP8M3A9ntDCym1QfSyPm4rspDjSHhEoHcvQI9KQrUy/piCzaCE8EG8+THJFHTsI7m/WOZtNiAy+IxKZHEcFmQQ4N5W1DHXKEkWd1BSgreFIb64+lDqEvHtiz7Fc8ANJaY64o9mhrbhAWkIAFTiQ63onoe2LBpAdP38iJ53qRBLGXrpfUS69E9cf9uRF4BFclNPKNwqygFeIKHX0zJnoKa3P0CIojKeCdKI8VagPY5ld7cnf2vJuOn3px9KrZ77+J38CobWn7SvXe5uZ7uUPBa3+hVuGFG6e2rxRO/uGPdz/LFbafa1q6dBmLQaAHNAaJ6JIr4crep4hE2vsUae/zRfoKHYcFHum0OBPor9EQQ3v4He89/YOX6LDrnlHcdI72nJdzi7h13HZOohvpiZ7xJoyE8b0QbYYm8YqUCRFiEBnEp0m0j5xH8vgRwijRJdH3kSaRSXyRVIkqcTWp5qcJVWKZ1Iga8DwyD7g3V1yGluGVZCW/UlgubkQb8SZuM7mPv0/YJO4UfiXuk16SPpQuSzcF+sY47kbNvau3XuTL2krInkstzLfvh/whCfTGhlyuYImzGZDQbF6tR4vtUoQ8ECqNbHtny5FywF8MszibxUq46KA1QduCCPOkgTc6tLJ4/7G9r76y95j6IdS+n6ofCifbGs+/8855sqrtVvV9qKR6454Uh4ngXN8DOenRg64wSYsvOkmXIz2GDpHHBChhEI9FOdByMmpP0rTOQVBJ4Kna4XR//Dl7VQBy5dB3z3pxI7k8nWCQLIYQEi71kRRDf5IlpRloPM5l8XiYdDOZJN1uKMNlXCXUNWXCVGmhYZHhCUO4PzLRJyw45k4yvT2fO9C2gDvQ7uHLdra9t34niae1H3t3kdV+vFb70ReED5DoMD3UfnpXdGFYWvTQMJ71gOhzzbtZbz4IDXKF4GYratYvtltlieOREGoaakMRep41rQKvPLE3gaB4dUY7hzpvdz7hFFjHUzOU+BjaCuSpDeH16t2bN9+tDsRvXKIdiUvqm0Jq+2/ubVp+76OfvPfBx+07IZ7R/c+y/W1IgXgWF4qaZX2zfTFulh+PthkkLig0WkDmiGAhNCIF/IWdj9GQOcH6l1kdz1uz0vZbYrXXxzRUOk4Apy4BLQavx8MfefDBR9RDuM+Gdes2qAaOP3Nx0fzmHer5S+2fc0fbP2hatXoZV6ne5K2/s+7Rl55c+bBDOXbfG//jfw5M62QBxbuMmluPIIMQL9IqjzYWgDX6NF2RbhFZxPMstNMHv29y77bdLpykb0VptfZg9iw52eWQmrnHebRYFnUkQhiox4FHyW3szZYhtFGRtr+IPUkGULSxbIthler/vvlmeyytUbdwFRf70KfKVPbsfQNdAcg+CGSvQ+P4Q7gRpC/bTQKVfpp9qAnZLSYq/YDP3ufnf4rLSYUPOiBxVplKP50K384ihy0rq0Oz95cFMUb7Y2i81n5Kwnj9BZyJo9WP1GNqDuTi+/FGtUotUt1C6qVZOASn4GTc41F1k7pI/YW6EWm9Ozt+FanAz1CXkWxFS0XC0xf3KD9P0HeP29i7eyQu6Pw72xcXq3vUlzANlbcC3tHsvbK1rnBmqsxocyQQCWkGe0U4h0eawepLqD+9pfNx9+nrGqmLPkEP0SVxvXQDdaO4kbpRkl4gBgkZgkmYZDWkGjLBXIcaRpLRUqFhAhhqJamWvIZZZDYY6TZDcDcT9fHNbUXkyKUbyb62acLJzZe8uzbz6xjd+9S/cvNEOzKhAS6LeB/aZDbpELGLKEhmfW3mU+QunUmZ+pfT6We1/A24gkXO6bD3iOvFZfazD+DmLV+ydFnLxuYNm0T7Z+pNZ86ogz/9Er/+pw/x4bM0P1C36O4UHgady0fNrvQQI9E/FuoMJ4/lW/plWPakPTbAuafnYwOGjc3oFxWGEu1iiDExrE9UYp69T+/EvOQbx1rfB69rVdvVIa9rSSx9L/wwHfrqxOvW186lWw+zhzRI47ex46WDoMCT5+fR2MsvAelj4ePSshy9pSC6ILVgaAFYStdnJLij5GWNYht7mJzQqyctfjWyg3naJesh0gQ1QWNBf0hc+R5g5FYkcBfvmT/v7rVz56zhYoY8MG3Pu3/cPW3L4DX37hjqqlJP7pv3cdmDT/pqqrHjwcXfVU1eoJ6676DaumjR8hW/WIyLnz+B75g3plB9Rf2cC13zyPZ7Vu/Yro4am/fdG29cHJO/tF0J/vDJOw4VLV2V7apUf/3yNvXP06tqbh7ndU9bumABznv+aTx6wcKmvS1TP5unfqf+VqTy3g7y9jJ5R7ssOipvHUYGOx8kIZD3kAudcg3KCLY7HZwurr89sx+3HUTavLFl2dKlov2sOuTDP6mDvvwUv3bmDH4l8H6lkMHsYI4rSmejdTx9eSRHRx+nSoKIdVwE31/nf9eyTduGduuyunTrWJcumr566Urrz2mKX81V6hZxOsgbRMgZRMgNxJvxRNGDq8U54jJ8l9iMN4vbDFam8PSBF2ugQcK68bB6vn36YeHkpWj+o4t9+I8uRYP+vUZ2cV+wfoMO5bgsAv4lOD0JkkCQFS/R8G4vYboCqs5RtW97n8b4C0NokuyypHW829eif1GvY89K2Iuv3l1cz13gBE9yfejBep8sn2A+MMvvA8+BD4w4gEMdNALaikJvd7hCCx1KaKrDGhrtkPy+8Dww9FU+juEYAVn7Uv5RtJQTMOFRSMe7htRp0JeJaZ0GiQR9pZiPU6ksIMP5HVnGx4CN2Z/RHyFG8VZktPr/9iINM2XWXr/DGY//Yv7uPQsW7OEuzt+9e/6CPXvo/ushB9kHOTyBOsjj6tMzSi/ycmQQjxzLg1ZYm3usA2wiw0x6gZejsCkijI8A3FCvsKB46jGM1EsEMQdHgyOr9MBOte7cub/TpvNxGOpB06U5+rnyXIVMiQciguLAzobi7u9rUEQtYIU6M3bipmPHXntx4OTJWRlLZxQ+5b7t5WmtH46aPDE1QRJFVcXrNnuWlE7KvO2GSbUjhh3KGvjKtvyVpaWpmaHOIf0YX0/hMuE98rCfrya0hRO38JKAeRRH2Xo4veOvU8Bt0s8psF+VHuThned3ac9lO55VsXdzAs8lWi2rw58PPRTJnkqMRHZ7lyezgXdzXr/i3ZyrHI3/IS11NHE4NfA8lvN1PqUd1Nra8XSifW+XR7QVu777O8PvXWEESRKtjMZ7acX3No+OS7gCCRWg3u+3MTWgKkQdpOx/aHl13df1Tx3M9KuHNo05TolOD0yzwLTQa8Jw2WjqWCaUiXW4jqsT6kRpCgZBU2Fztx07ps45dky0vvnmm4B327uC+XKScIrhvcNl4tHbIteB9gnNCE/40TZrf6VxbbTNAbSvi7HtuhgD7JCSayy6BiW4gxTVT4pw6tixY6j7P8yb8VrIKahvvB8uo7Rf8i6q5OxAtkEkROI5yPtQyuXfo/bLcs+yJLqwqDK3ApBTLl8WHaoDb9bV4E/KoJz/8LIGl8q6ZG7awM0nb7cM+RuKltjw0bVB/QO/3/yhba+pXj8BLiX/Cvatq1EjETJ9/M0fLo4z1fvHO/8V88cBt1UA/hNUIcxBVv5TdCcZjZ4VV6FSEocGwL33xDPoqNADfcRvhl872gvHs/zD6FkuC73M90Fe9nsW3UnXi/nIJ5jRUf4QGiw40LOwbqPuCzSc/+RyG1w3cbeio2IGzHHA/B5oCxwVDN4ZNM8/tpXBgLXc71AqXwljdM+hDIc1umPaXG4/cHkj8sE+N8L4Ti7r8nvwuwqOxbDXRfhtEtYwPG4U3kP7+Qw0kdLGvwNwFsB4I+DBwznFOQkdBTq3CvPQrSQa7QMGNsHvdqENHSV70Wt0PePRfnSeb8UZ/FC0XjyATlF8odR5F6G2dxlni0kJ6oOqkJG9gXs/lQTv5ILhl/79aRi+qYP/9+H0DhkZ8Cf+cw6Kve/85wQZYKV2zsP5IP+5gIxcmf9cRDK31H8OmTTgp50bUCQJ6IDJ/mDiZP+5GfUbPNV/bkWGwU/4z22IH/wa7Ih5PSxLY7vTc4yC8TH/OYck/LX/nMC46j/nUTAX6z8XUAg3wn8uIgdX4z+XUCx3j//cgAZxh/3npvhBJMp/bkZVg771n1tR8OBN/nMbkgY/h4YhL6pDc1A9qkbTgMMNULUlonKUBL/pKA0+GXA2FWYoKAfmNCAfHPXIg9yoBiXDaB6qhfkpcJaNZsBHQcUdsHzsygO/HlgzE74rYKb8A3bt37FrCew0E/aif0lbC7MpHm5Y88/tOBzOpsO6UtQIM8phrptB87AVbkaRAlBq4bsO5kwFuNUwT4H1Xtjdze7JCA3z1s2pr55W1aAklicp6WlpGcrUOUpOdYOvod7jrklW8mrLU5TsGTOUYjrLpxR7fJ76mZ6KFPmqpf3p0hL3zJrp3tppSo676joLh3umu0sblfIqd+00j09x13uU6lqlrnHqjOpypcJb466uldEVJI5nBPpgWFs83l0LFzlAjBfdASde7x0/bMkPmVPKuO0DHnkZB9OB5xnwQaWeel+1t1ZJT8nI6A7qCkDX2quSQdNk2uDXuMC+ld5aYFEDcBwxuTeA1AahVPhU+GHMBBgpsNYLv/UgSQ+DV89kngJwPbAGVTU01A1KTa0AoDMbU3zexvpyT6W3fponpdYDt0d0wSCgIwE9vdoa6D2qdx6mux7QIC+aBXOppv48+kchjYQ7c2BOFVtZDffqGF0NTNcp1+rZCmodFOrMKzh5JR2d9tXYzb6uRw19R/ZatGs64Iazrly72tJl1PcnfOQf5D1+fp91bXl30lwNd2R21sBGqBbWMF7fAWNekMA/woVSVsTg1TBondZUzXCqYvc8frqmsV1q/VJP9stdk5a2m6Zjmr4nM7y8TPq1bH2d32K1HbwAtcGvY9V+LXAzGBqnZT/MBobFlfpUzuZRPdSgByDQ2Rrumi57mMFruhfbRUtimeTo2gr262N4lcMat58+mVlBOWhoDYPSwO4E+FMJZzP8lpTYgWPnDtRrUfwbQH817ac7dvKEjtQxq6mAHcrZ6gA2FYyCBqZrU+FuA7ur7SF/zw7JfmsuB8waGRSNJ7OYDlQxr9Tg50wNG+tKUYCG+m5aqWHbyHiY3EU69LyGyVOTtdzFg/hgdfJ16EjuoDOVeRCFQdbsQYNd7edqd+l/P9UBzmnY1nVodAPDq1PrOimaxfhR84N2CFhDJfPqtX4KPV12rGDfdI9k9ks5MR1mlDN42pyA/Kgez/B7toCEytneFQzjaj+mg5h1lvixcwNEL/MMnTLo6os6OXC1J6iF+Q1+a/B1mxuwlU6OdfUBXdcpjGY3w1xmvrm7rmnc0GKJ+3vk6WVRUPHLvob9dvqPHyKLBhaJaGR1+ylK6cap71tLeTLHH1u03SnPKxmOFX5NmsH0tL5jRMOU8rSii8y7al0ggrpZRKxmPmMGu5I7KKpgmFJ51XbhxrRucVXbKeBD3Ux7NN0N7HElf3z/kKYAlrKfgk4NczMZ/XAMuu9zJT+uhVuyX94z2Lrq63hzuUM69czPuplf6YQbGPF1aGTAXq6MHh6/n/MwKgI7zWJUVbD1sdeIh7EddF+5QoZ7gWgb20XLNJvJvyK+TGX27u2Ca6PfDgJ6MhPuVl+DYx40m/G51m/JdfDRopebeVRPx4quctdwDozI17SUKubhFfbr8+PoYZp0PT0J+Lpr+e4KFglqmdy78utaXJW7cK6rDH+srfqY1wzE6k5rC1gSzRxmdOQe9f4V3SHWMY2+A76n+SWmxUOqVXKHV/1XeqrrUzXVbyMN/nhY2cGpUSiX7VOICuCK7lMIVyXoZsgji9m9PBhTII8rhjulcDUcRoczuWSzO/R+LLPGm+GcQixEExgsDUYxfFPYk2CEwlbYNb0aA/MLABZdm4smsj1yAdp4wKwQzinssTCaD7+5/nl0xTAYmQDX9Hwkolmotl8BrCphtkPXUVw0TEtgvHPX7ljlsR0DmI2Fq2KAP8p/Nxtg5zF4FP9klh/R8wI/nhrnihl0yiMKmcIcBhjlsys6OgF+i2DeeMbPbEazhm0Bo2EE3NdoyWUYaJLQMBoGv0WwN50xEvAqYVygO5X4ZyYzOVJ6hrP1dNcxbJaGWaFfyvS8E0qKn5caHpT/pR07j2f058NHYfSXwEgJk002wA/ADejOSAaB4i0zbkxg9GUzPhSyHXLYPMpFys/8Do0r7iKVYYxfVG4U8+Fsp2zGkfHXpCQArat0rqUdcscOIxl9uYxT+Wz2eOBjLszP6xjR9DGP0TrMz2sNpqb3mk7kd+HuMEYjlew42DXXr1PZjHfdqaByupnh30mFJoFs//ewLjzrlH6BX7oBfErYziXX4MrNzBZz2axsJuvxHTYygtnvWD/mEzo0rNMHTPDrZ2EHZt35G7CjwLwf4js0WIG9u0twONOnfD+G4zu4oc2Qvweu5rtyIa6VszqnocNvd4/cXbPGzmy0a96Z3MXXds0ENC88ks2tuWJe56hWLWkxq7PW6Zq7XavCDlTHWi4fyHo7sw/Nd2s1Udest4Ll51oO6OvISrwsD/R2ZCaz2N3OmF7n7514u9V5dGc3i/3JHXsFYlEnLC2vdLNsge7muwY3rx+h5KsqwzoW77VdZrHzBn9mQulr9M+l43OvqIYD/Z+rZaBcUwYBWq6VOXTlfz2Td52/lqpmHKb5ZIofbj0K1GWdPKEc0PpuNVdIvVP7KLRB6MquAuXBtC6YVzBey0jr4dE9ZeavAj2u/3zX6efuWf839YPkbv2gKzOvf10/SL5mP0j5N/eD5B/UD+qeyZd3wamz1xGY+cM6qNfqsMj/sb6SclVfSf7/faUufaXODsP/m30luVuE/c/1leRrVGv/DX0l+Zp9pU6K/j19Jfl7+gX/nr6SjP7ZvlLnU6efs6/UaW/d+0rXi77X7y5p9bmWSfy3dZdk1L27dO3uxr+nuyR/D3eVLhz87+4yyUzHrs5m/v1dJvm/uMskX9Fl6qx1/51dJvkfdpmUf1uXSf4nukzKv6zLJDMelALU0QxbjdvZcP/f1zuSrynz/1TvSL6qd6T8x3pH8nV7R509oH9970j+J3pH3wf3X9s7CnjW60eUqzs+8o/o+HTt0vycHR/5J3V8rq7ZflzHR+7S8fm+vsPP0aFpuAq+C3V2GmS2D71KQWgEe0GLvqpGX3breD9OSfR5PMpUzwzvrKQU5Qe82JaijJwxp67Kp1TX1HnrGzwVSmW9t0bJrvfM9L8EFtiDvUjXqL1I13UbWe7cvdRT71Y01DrexpP7fu8/+er39n7wK3/KFTtX+2S30lDvrvDUuOvvULyVV0KR5SJPfU21j700V+1Tqjz1HthrWr27FkhPBtqBLFgGHKuf5klWGryKu3aOUuep98EC79QG4Fg1sMCtlAPSMsxsqPIE+FRe7q2pg+l0QkMVQAcue2p9wL1YxpLYJABWobh9Pm95tRv2kyu85Y01ntoGdwPFp7J6BggpkUJkC5Tx3sqGWcD+2CSGSb2nrt5b0VjuYWAqqoGw6qmNDR6Kg9xtQTKIuXxGYwXFZFZ1Q5W3sQGQqan2b0R3qNdYCWAbfTCfkpOs1Hgo1TJTEF9Vcpc9kumeqd56xecBOcDsakDVT/4VW1PkAGwdZXSDrLGObTSrChTrqgVUDJWN9bWwoYctrPAqPm+y4mucOt1T3kBHKH2V3hmgbJSgcm9tRTWlwzdIlksAnHuqd6aHUaBpEUOgQwlqvQ0gBp82SqVS16kB2j3FV+WeMUOe6vFzDdAAK3F3o9NbC3pRr9R46z3XJFtpmFPnqXTDRikaUt3v1rjngLXA8orqymqqaO4ZDaB6cAJA3RUVjHKNddRA3fWAV+MMd71MN6rw+Kqn1TI0pmm2CouohrrLAYiPrgjg47tyJwpShg0Yw9wzrg3AvyaARyc0QK92xhyluouay5Sceg/9Xy2xufTERxlJ5RIwDw/onKeeLZrlra/wKbEddhhL9w7ckGOp2cYyloFk8v32MtUDlkShNoIMKE9meqs7EPPMbgCLUdx1dWBe7qkzPPSGRjtApidyp1Cq3A1KldsHED213XhCta5TuyuUxtoKP8KdqMoMOY3C75OqzzuDWjUTGxWSW5lBvQfYSmBinbv8Dvc0IAzssNYrU1X955Sq21bgsABFz4xKitSoXGVEYUGJMr5wRMnN2cW5St54pai4sDRveO5wJTZ7PFzHJis355WMKpxQosCM4uyCkklK4Qglu2CSMiavYHiykjuxqDh3/Hi5sFjJG1uUn5cLY3kFw/InDM8rGKnkwLqCwhIlP29sXgkALSlkS/2g8nLHU2Bjc4uHjYLL7Jy8/LySScnyiLySAoAJyBUr2UpRdnFJ3rAJ+dnFStGE4qLC8bkAYziALcgrGFEMu+SOzQUiANCwwqJJxXkjR5Ukw6ISGEyWS4qzh+eOzS4ek6wAsEIguVhhU1IAS4Ch5JbSxeNHZefnKzl5JeNLinOzx9K5lDsjCwrH5sojCicUDM8uySssUHJygZTsnPxcDTcgZVh+dt7YZGV49tjskZScwCZ0mkZOJztkumBkbkFucXZ+sjK+KHdYHj0BPuYV5w4rYTOB98CJfIbusMKC8bnjJsAAzAtskSzfPCqXbQEEZMN/wxhmjPwCIJfCKSksLulA5ea88bnJSnZx3ngqkRHFhYAulWfhCKYBE4CfVHgFfnypjOjY1doBs+hqP4HDc7PzAeB4igYMyN3mgnblzi731DVQ3fYbt+YamRvVfGcy01rNCYAKj6wFw9XG2CmEJbAsFnU079YZsGk4TtZcL3MfoN0QiTTXWzHTAx7QR12Jt172Umcyq9rHLB1CYI1Xi3mKzz0DNoNV1IrYLPCV7hmwzNeBZjeDkgPBsK6+GpbMqq9uAGeiuBthtL56rj8M1/vDFKNA6aSA7tLpHDT86z2+OohS1TM9M+akwNx6GssYJtW1ld76Gj/pjH3lDYMCqUKDMo0Br/A2yN76aSmKLLOM6yenTj/0Tx5+njxI1vIg5cfkQXJnHqT8yDxIvjoP8jv5cgbJF4gZ10hQOxMW+afkSkogV5L/O3IlWZPDvyxXkjWD/Um5kvwz5kpyZ66k/MhcSe6WF/yIXEm+Xq6k/PBcSe6SK3U1327pEsRzcBI/V7ok+9Ml5SelS3I3dFnd+HOnTHKtV/nJKZP8s6ZMsj9lUn58yiRfmTIpPyZlkq+ZMin/TMokl2SXjh1dSNHOHvWjsiO5k/Kfkh3JgexI+SnZkdw1O1J+VHYkXzM7Un5KdkSVtZuhdCQ+8nUTH+WfSHzk7098lB+Q+Mgs8emeO/zjhKYhMN/FkgY5BX5SfsrfDKayvt0dcKSy3lkFe6qXwp6v1sFY96eF3/8Xhqmzqu+oTq0GZzU7pa6qLtXvMX/U33IS7Q+gL/+C/v+Er/7Xyi1yXb6kkosO8l08+TadfLOR/N1M/qaSCyr5P/Hkr2byl43kfDz5+q5s4WuVnNtIvtpIzl4kX14kf1bJF4PI5znkjEo+Syefnh4vfLqRnIaJp8eTTz5OFT65SD5OJR+p5E8q+TCd/K+DfLCRvK+S9+zkfxaQU8+RP6rkDzD9DwvIyRMjhZMLyImR5J3fhwvvqOT34eR3KvmtSn6jkrdVcnwjeetYlPCWSo5FkTfTyVGVvL7MJrweQV4LJodV8qpKXlHJyyp5SSUvquQFlTyvkkMqeU4lz9rIweXxwkGVtD7znNCqkmeeniI88xx5ZhH/9K/jhaenuC6Tp138r+PJAZU8tZHsV8mTKtmnkidUsreCPG4me3bHC3sqyO5ddmF3PNllJ48B0o9dJDtV8iuVPKqSHXayXSWPPGwWHkknD5vJQxWkBaa0bCTbVLL1QaOwVSUPGsmWB0KFLRXkgc1W4YFQstlK7pfJfSrZtNEkbFLJRhNphkXNG8mG9WZhQyJZbyb3XiTr1j4nrFPJ2jVThLXPkbWL+DX3xAtrppA1Lv6eeHK3SlavShFWq2RVCrkLyLwrm6xcYRBWOsgKA2mCgaYKshw4tTyeLLORX6pk6RKbsFQlS2xksUoWqWShSlyXf7FggfALlSxYQOZXkHklTmFePJmrkjkqmW0ms4xkpkwaVdJwkfgukvqL5M6LpE4lXpXUqmRGDLlDJdNtOcL08aRaJVULyDS4qFSJRyUVKilXyVSVuAeRsovkNiOZopJbVDJZJZMmysKki2SiTG4ODhVuTielKpkAO0/IISVOMh5bhfEhpNhBxo0OEsappMhAClVSMNYqFKhkrJXkq2QM3BmjktF5VmF0EMmLNAl5VjLKREaqZMRGkruRDFfJMK6vMOwiyXmOZI8hLpUMVclNN9qFmxzkxiEW4UY7GTLYJAxxXbaQwSYySCVZKhk4wCEMvEgG9LcKAxykf6ZB6G8lmQbSL4pkmEj6DQYhXSU3GEhaqkFIM5FUA0npqxdSrKSvniSnkz6944U+FaR3kl3oHU+S7CQxIV5IzCYJ8aRXvEHoZSHxBtJTJXEqibWQGKAzxk6UChJ9kUQBCVEVJNJEIoCDESoJv0jCckgoXISqJKSC9ABO9VBJMCwKDiVOlThUEqQSO0ywq8QGtNpyiHUBsVQQs0pMxmDBpBIjzDYGE4NKZCvRq0SCaZJKdA4iVhAebvKgAU4Co0QlHFxzfQm2EqQS3Iorlt2N+/y/8A/9pxH43n+R/xfvZSYQCmVuZHN0cmVhbQplbmRvYmoKMTUzIDAgb2JqCjE2MzI1CmVuZG9iagoxNTIgMCBvYmoKPDwgL0xlbmd0aCAxNTQgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nJsi+f/P/t//3/D///9HgYGBgQmIgLiJYRRQBTQAAISxCn8KZW5kc3RyZWFtCmVuZG9iagoxNTQgMCBvYmoKMzYKZW5kb2JqCjE1NSAwIG9iago8PAogIC9UeXBlIC9Gb250CiAgL1N1YnR5cGUgL1R5cGUwCiAgL0Jhc2VGb250IC9FQUFBQUIrRGVqYVZ1U2FucwogIC9FbmNvZGluZyAvSWRlbnRpdHktSAogIC9Ub1VuaWNvZGUgMTU2IDAgUgogIC9EZXNjZW5kYW50Rm9udHMgWzE1NyAwIFJdCj4+CmVuZG9iagoxNTcgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL0Jhc2VGb250IC9FQUFBQUIrRGVqYVZ1U2FucyAKL0NJRFRvR0lETWFwIC9JZGVudGl0eSAKL1N1YnR5cGUgL0NJREZvbnRUeXBlMgovQ0lEU3lzdGVtSW5mbyA8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJpbmcgKFVDUykgL1N1cHBsZW1lbnQgMCA+PgovRm9udERlc2NyaXB0b3IgMTUwIDAgUgovRFcgMAovVyBbIDAgWzYwMCAzMTcgMzYwIDY4NCA2MTEgNDExIDgxNyAzOTIgMzE3IDg2MiA2MzYgNTc1IDYzMyA2MzMgNTc5IDI3NyA1MjAgMjc3IDYxNSA2ODQgNzg3IDYzMSA1OTEgNjM0IDYzNiA5ODggNjEwIDYzNCAyOTQgNzc0IDYzNCA2MzYgNjM2IDYzMyA2MTIgNjM0IDYzNiA3ODcgNjM0IDM1MiA1NDkgNjMzIDY1NSA2MzYgOTc0IDYxMiAzMzYgNjk4IDU5MSA2MzYgMjc3IDYzNiA2MzYgNjEwIDYzNiA2OTQgNTkxIDczMSA1MjQgNjExIDYwMyA2ODYgNTU3IDc1MSA2ODQgNzcwIDMxNyA2ODUgMzkwIDEwMDAgMzkwIDc0OCA0NTkgNzMxIDMxNyAzMzYgNTg5IDUzMCA4MzcgNjM0IF0gXQo+PgplbmRvYmoKMTU2IDAgb2JqCjw8IC9MZW5ndGggMTU4IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJxdlMmOm0AQhu9+ij5ODiPohWZGGlmKHEXyIYvi5AFwd+MgxYAwPvjtA/3VEClIXn66tq8KqjgcPx37blbF92kIpzSrtuvjlG7DfQpJndOl63faqNiFWVT+Dtdm3BWL8+lxm9P12LeDsljF+yiWShU/lj+3eXqop49xOKcPKqZ2vf9timnq+ot6+nU4bXdP93H8k66pn1WZ76U+5t/i8KUZvzbXpIoc5/kYF6Nufjwv7v8sfj7GpEzWmhrCENNtbEKamv6Sdm/lcu3V2+fl2q/R/zuvPW7nNvxups28Xa59VnpRZWlKlEFFlM2q8iiXlRe/KqvaoDyqRtUoh3ohZkK9ZuUkQ5OV1agzZ5IvEKVCRbJLlIQ6o1rUa1a6xM+i4PMBBZ8npobPkV3DV4mCz4ml8L2ghI+eafgsndDwVXRCw1dJZfBVUhl8Ts7gc+InfHTQCAPZDQxJzmDw+BkYLFUbYWBiBgZPnQYGT68NDJ7KDAwtPTMwOHptYLDiB4NnmkZmRAcNDEayMyNHBiszgt3CZ2GwMqMGBUMFrYXB0nkLQwWRhaGmMitzoBMWhlpiwtCKJQyVxJQ5SEwYHJ2wwsAcHAyByhwMTpS8R/g5eY/I7piRkSgyI7I7+Ax9cfA5nnkn7xGVOfiiZICvkSgyI8m38pnNDz7LVBx8lvk5+GqdF4lsDPO+P7Z9o9v3lZF9ZaIwWnkAXyQETutaWtfrtvPCfZqWdZe3a95z64br+rSt6XEYV6/8+Qv6yV+mCmVuZHN0cmVhbQplbmRvYmoKMTU4IDAgb2JqCjU3MwplbmRvYmoKMTU5IDAgb2JqCjw8CiAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yCiAgL0ZvbnROYW1lIC9FQUFBQUMrRGVqYVZ1U2Fuc01vbm8KICAvRm9udEJCb3ggWy01NTcgLTM3NCA3MTcgMTA0MV0KICAvRmxhZ3MgMzUKICAvQ2FwSGVpZ2h0IDcyOQogIC9Bc2NlbnQgMTA0MQogIC9EZXNjZW50IC0zNzQKICAvSXRhbGljQW5nbGUgMAogIC9TdGVtViAwCiAgL01pc3NpbmdXaWR0aCA1MDAKICAvRm9udEZpbGUyIDE2MCAwIFIKICAvQ0lEU2V0IDE2MSAwIFIKPj4KZW5kb2JqCjE2MCAwIG9iago8PAogIC9MZW5ndGgxIDE0Nzg4CiAgL0xlbmd0aCAxNjIgMCBSCiAgL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnic3XoLfFTVue9a+9t7Jpm8ZkISEkLCTmJ4aEhCICKIMpNkAgN5mYSXimWSmSQjmUdnJkSk1HgsDyUYPGoQ5VZqqVq0HurxYBSNqNji63p8RFu1h1pRi43WqzxaTBbnW2vvmTxE9Nfe+zu/351h770e3/oe/++x1h5CKCEknnQRINbahqKS7iHPo4SYL8HR5c3rwurxncZ4bL9CiFTcEmj1XiWtPYrtIRx7uLV9fUvBIop92YxMpre5na6v7n6hGNfvwPmL23Agpk+ajP0j2L+gzRu+7jqPOQX7g9h3tfubnYTc2kUIPIj9Nq/zuoDyjDyNEEsd9lWf0+te8+GnW7EfICQnNeAPhc/eSK4ipGQrnw8E3YH5vz1kxD6uN2aSPvKyuPbR2/DZgjR9ZIt0A5Gi3z7yPM5Lgq6Pvkxvpk9i+34yhPebyJfUBL+lc7HVj2tXyjk42kN2i5U98AnpgKfIm+RF8h62PqHzANfSN0kOItBHbh6RAv3Yex7vG6AfVtIp1Ev20keQ4waU6Sc3SPiU6pHzq/LrOPoq2YLf28le4sc21+wm1P8P5DGyjZwgd0nHyZXYfpK8gPowkqjJoAPkFHLaJ10mtSDdC8jtbnI3vYkMkJBMqAkpP1AGpIuQ62NoASFNZLcyoNzF8cDngPIFzhCSZegzpBjz0AqO2/30KTpLqiFv4voNpBGuhh/Ce3STnCd3wnHSIxFYQ64lrykDhhTSY8wjPYYWul5eI74buH1Sp7yG7iPHkWcT/A37OajZbmExIY9J9UqNUoM2t+DYbnHv0e4GM3kVziDut0mMLpYrYSHObJCryF3kPlw5DZEhxA+lKN1PNijbtS/Zh9+ZynboRf4CDTpbuozsllroNtT2FKLphwoyF2VkKZ+TTfQx1JsYN5KQMkBICnncaFBkkCgpUM37pXyHa7/1ipXqkVU5MwvGdVWzUd1P6vYnrFf7zp6tWylnKqv2K5P3Q37Mfjk/74Nvm/xgZsHSupVqH51or9DZ2tdU4GDDSmzyHg7juL1CzHGp+5V8/OdYs19tblNvMd+SN/8Ws3v+TKJ9qvTrJ4RQzAn6R8xFzAUJnzAdrz7MRRUvzD/5MCHKArz+kxDD+2h3DF5zCInB+Zg78DpGSOxjhJiuJiQOczzOhTk8GWOrjfXKbcperAhGMuUpIlMEjRhoygEao9wkyaTo8FuDs4j5rcG3BosnWHIs+TmWnDaZDIUgc+gj1mtM/NuXQcMMri0lLWfL5LmINpB0axwlW2WaLZFskMVqZHLicHEszaM0H5L7hz5TBv7uNdzO1w2c/VA2YExNIx1Wa0K8lBg3cUp2TKxkNE3MnpJdlpWdborLniKnkm30kJyyLfVQerdF7s7vt+yanmWKm5JpJLWZhkSH0ZCSa5+OUgaHBo9ZkufhB4UeOzFoZic/N5/8PHniPBwtRncYzYmfWSbOM4r7qlyaWkjzcg2pKWlTaDZNTTHk5U6dVppNZ5dcXDqnSCqkpXMunl2SBq/W7mnYuOHqx5fcvH3wjYYD17Y+1Xj95pMx9nv/9d2XrrxfnvdYYeEVDUuX5CVO2r3x/oN5ef2lpc2rumZJiVNuv+Fn/5YjMHoefZWJkTmBFFjTYxOBADV0W/rj7zFRyUCWJMQa4ipTzCcGS4YQsaIFgycGUcV5xdSSZ5kzlSuJjdmWy1G3NDnziWt/eOO2vr5ZD4Ye+qV0YHiJdGDnrY8/NLzFkDK8d03zBxgqZANiuxKxTSWTid06laQBNW2L3W5IO4ByE+izGd0T+hN2ZYE02RybZiCOycnmxVkof2jwMIdQA/CY+XP8nvg8eZ4FVUnNQaQQm7mpiTRPJRYzmV2SbBQQGuWVQx8+88jKQ17P81exr9m7VP3i7dN98m1bNz1slq650vD4kUvmPX7RRXQenUDjqZX91wv3/XL/bsRlD+JiMkwhCWSqdUIsAdOB+BfggAIGmRjiqmITMYaGXuH6FKFqFo5IStqlNBU9VWrJKc2Rbrhq1TvHf/Ef7Pf0KO390Y93v/Uc/H0H8l1Jtsvr5U5iIDnWZIMCElHkR+ivjAZpukymGc1DCwa5kScGJ84rnlBKU2kpxa3g66NQD88eYNfcz655nF6GOD7LcUS/xSGOxdZJ6fGx0J0U2526K6k/854Mkpy8KD3eYJhUybEr0Zw3yEPvc6Gr5jqBGuW+S7aYJR5kqehM6N26afMtt2zetHX4w4J7Wl768/GXXbsK+/qkorfffW/grfffla6rX8leZH9lf2EvrGjYzsuaRHDfliuwGYuIFVozYg6Q+MOme8hzBumADFVx1KBUkaUmI+K24NggGsn1KTk2hAoVU0zhVMTMkkNnp+ZRQt+h3iEf9bIP6JS+PnnNUFFPD5RJ5cej8YrxMz5enzt3vB47Z7ymfke8ymseFOE6voZIooYQaWwNobNpHqzvH/r8GV5CEIub0TeLUcc4MpHkWScYupNJd3x/8q702OSkCkhOvTxdBLReDBCAiC9K50ydpvtCspiTpbbuHTu6t+/Ysf346VOfHj91Co6++/bAe+8NvP3ubvYG+xP7gL1JZ1JeJAq5D/rZcrkR5ZoxJmZbJyskZVJ3Ykp3TH/iLvo8PJdlSY5bNBHjVxoVFeZjx6JhkR/FRo+HMXHS+cQThbtcL3/y55dadtEvtmgxsmX78IsGU0/DCvYb9imGxIsr6Ek9TLQa7EV/+VGnXPJz67T05KRY2UiyMg3G1PhuFfozn8swG4klKabaUGOpTqqZnF49yZ5nPrF0f3zj0v2WxqtWPkEmnT10yaqhBUM8z5J5wi1Ary4YLLFg8s9D5xZbFxXLxUqxodhYHFMcW2wqjluYtnDiwvSFGQsnLcxcOHlh1sLsLuiSu5QuQ5exK6YrtsvUFdeT1jOxJ70no2dST2bP5J6snuw8ulokQ1oGHRUs46NG2pvrWbLF/2BpZd2lD85b4pj3wAM5zQur3PD5Yvvr7Ohwp3TjZ6ENHw3fIN34RYA/5TVrFiysRCwoBrD0EZ2FsWQ+QO6TaBbhYcQzAWPIkkePDw3RWew1jht10aPglW5CWssBskeSKac9LHY+TJjUHOqSYodPSzftRb9vwnjLE/E2g/isF5qMZJIan55kJAfSjd3JOdvUZ7K6L+Dxl0DT5YxEkyG+QpUNqZdfiFFweAgDwSIK2eFjJ4Z4KPBgsMxLFpuTNat4SrFanFOcu4fsoXukPaY9cfel7Zm4J31Pxp5JiatpND7mls615JViBcYKOOfiS2mpVoBLBWgTs6nUf9nPfn59+12P0CeeuPTfux565euvTtPNt19z6KqWgyu3vXDZVFWa/cOAO/DmkzOqhm+83/WDZ+87+FzW5vUXz+mbNq2+vuR2LZ5uwniKUX6K+T/Lmp6oxCTBAWKhz8UcMMXExeL5wGBOTkzBInN4aMHhEq0+n1hwmEcLLwIInGVMnbbgce0+ds01Ha998No+NkAvUn7KnusZ3vOjptvvf1la00MvR5noN3kl1oBYcgFm805Z2ol14NcxCp1lhGwyx2RGDIcOC1E8nSdwKfzKOw7+4asl9/A9LysD+9jifcNzCc/TfOT3MPKTiIncZbWRfHSuIkv5imzEy5CvKHJsPphi8KL5JjCRfDz8gqmMgHEn3Q9bY5XYGKNBHB5jlSJTnPl93C1EtRsajBwoYj4zmpXPjNq/Ua2Yz1blPmoESldbJ5lIEp50e4gMNE6SIV6ONRpiNtObpZjVZDWFHFHYciBPahug+9ivT9IXX/cNn2x/XckbluGRMxfRTWwDt6eDfSlfjWd6C8kil1lVkm22JGXuhNSdsb2wy5JtSTfHJ5H05JL4i9NLDKXZ5iFty+RRhgF9WNQfjDdUXck1aKVPK0HGicYJkWKII1KPcVLMmdOnh4ZP37ztyE7zlrt3bdmy6+4tmRLtopvpFtrFuth69i7btbjfBaepg05iH7PHWR/7mGagH+9C3PNQz8nkCusMMjlfMSjpGZNgYma+waCUmS0PJOxM6ZXJTomYTRI1ZU/MNcMFWeYhzJFDh7TaM1hyYvDEKxrEijiz4WNiyarcfL6FXUzmXo6Hs6nRwJfx8GZMpLRDemSo4yBNL3VV3t511ZFA62+d79G4Va5LBvbt2/cCLbz8+p21G28tK39lVsnxp9ccCts+5rF+CvWtxDgx4RkkBXjcKVuNZGdsTJ4hG0gejcNicFjb2lEtLAx4GFZK82fz4KOJdD57hNa9RC8eOrJP7qjqW3JmYB8R8cfrRRXikE4uQH/lGadk7DRN2Wk2PSTjq8ut8s60XvOu/NxsMjUh12iYTCdMyUeXDQ4d03csdNdHWpUo1k6qkjj/JaemSHkquorklKSN3tLg6MJbqw/9pnif73efnfgDG/oSz9wpS+5gf7jxjjtu3Lx1q/LYk/nT2FH2iWstO/3Vl+wU7aC30evp9inD7U/u3fvkr3/1yH4y9kPl1+kOouD7xWxlF3aztSe8Q1qkZDQxzhALMbIkyR+TqWffIH//WiJkOl9Y12J3EStRz541pLAUerfRSz9cQ+jRo0c1vhyfxusfuPedIz9IWnCSTIkRwy/umDAr8vz6lmGq9Mcsw26MvkLcjV6Whf56/etbzqYo/fr4yCcD3zzb+Bs3fwPFawCv5/HagNcevFbi9Sxej+rjnOZmvPrx8qK1x/FyYXsTXjfhhX2Sj1cHXnfhdYrPCakZUjy5iKzFEybGMdnFtVRWUAuiJeNsGk2M6vYDciiqv5mW6W0JX7pW623cqehP9LaM7cf1tkLi6Z/0toEkSgl6O4ZYJKvejiNZ0q16OyH29tS39HYimTPlDeRM5Vjs9QspvE2JSlW9LZEY2qC3Aceb9LaM7Tv1tkLS6RG9bSCT6V/1dgzJlSbr7TgyX6rX2wkTpkoP6+1E0jaljZTj+3yArCdB4iGtpI2EiYpR0oy7qEpKSDF+Z2OrCSlUUoY0YRLCK0jcxInnmgIcdRAf0hdiy0ba8auS+iivkOi58enGNevw7kJKE6nA1rXIYTnpQIpmpHUil1ZBqWKb81eRiw/vAaRpQr4epFNxvR/lOsWciZByf2B90NPaFlanN89QS4qLZ6tN69UyTzgUDrqd3gLV4WsuVG3t7Wo9pwqp9e6QO7jO7So0VbivdS7vwJd8p6/VHVKdQbfq8amBjqZ2T7Pq8nudHh8KGKtpg9CT61iNevj4ryI6mwanL6RW+304UobDfgw+Uub3r/2HOPwDS5YLhEOIi1+gVoI4z8YvWe4Ohjx+n1pSOHv2WM4RvuO4cqbnUqNFkGk+Dev+jyjS4vchtmFEnAi/h9Fr80kRfl06j3XIoxDX+vEZRE+6Bb+g8Hkh8nXjGtIWDgfmFxW5kOm6jsKQvyPY7G7xB1vdhT43TleO0iASI5FY/WZs8jked24Rv26MID/pRFoeqf934o9HsumckjVvOLE1Wudv5pqJzPwnvlz6/0T+nhvtEZs9OoqqmHeKGPAKVNfimB89/126cMvqBD+v4DYS1xrvNjHn1u1qFVJ8Iipdgk+LmHVHpWke1qKtQOjlFxr6xPqAnjuaBD9yDese9oio0Gxp1pGO8AwLLcbmhROpmkWEBHTuEQ6cWtNdiyS3SD0tgnNHRUmu8Bxf6xLPkNCrGdc4dfu0GGzGqPQKLmExE8GnBVvtehxPj+o4IoGXE65/GHNBi3MucQQTPhLAux+ldAg9R7RxCQvCItaacDYsZiMyvl1CgZ5LzahZh+CiYdIpYqBN1ISwjoxXjI22KMI/OCYqNW07BIYFo7zD217hz4ivR/I3hKsLvsWOgqidRaIuqYKzlg8ab4+O6ljvn9/qCHKatoFoRIfHRd2IRZ0CD+/3khDJhhZRU326he5REl3izmUUiCdH4lqkaBb8NJrRcdyuV8mIh5qFbJfQ2KNrOl9kZ6O+yokc/aIyjPhgdC0aQeCblYBvOmE9G0JjaCO5MoLY6Bowep0qbHbqnmqK1u1IrGloaJXceR5/+sUepOq+94rnSP34Pr4Io+UBsa85dYsKxyB1vrUck/VR/b0i+zwilyMVjese1queNqJpyjF1jfL56KiL7F9cioZXB3JxinURi1xCU+4v3yg0WpGOW9OmjwVH1VCniB4tdiMyxuMT+k6bRtc415gIcwofnUuD82syVt54XM6lY4Hu93axznOeqh7UK5Bb6OcdwzcyEopGZiRvxu8ibr3eucd4oFNY5RLrc8+xL+ZG7R6/gtNHdt3cUdGm5U7VuH2mSeS9f5SuHXo+RDyxDmc950DMTa4TOPv0jA7gV9vFnKKyuqMrRvtf0/n8GdMmKr0qniFdR7eIqG+PF826c9VwPtshqMYifC5U1VHIjfbhP5qzIVE9I3v2SNZFMoqfINqjZ5CgvmIsx4CI6LV4b9U9pu2LPoHt+PPH/4uK9e1WNek5Etb3xZYoUouJXcipJTXY43JqsddIVuB5sl7MOXBMxfNcPc4sx14FjlYIv9jEDJ/PFdm4AtucYy1ZJnhpPOrxznmvwhHOWxV93luK9DXIi6+1k5VChh25NQjKesG7Gker8GnX6fiKchxZhn3eXkT4aVSTV4OrGkXu8HVcF03TRhwfkTpWK4eQGNGsGnv1yH+xPmtD3g7Bj+tfIJDi7ZqonpW6pjaBEefMeZajRlWix0eX4bMO6RoEnjZhs6ZtjbChEuc1W+xCA80Tmkbl+KxD2ZxiEerVKLTgkhp1ygJhIbenQqznUpeKUU2zWt3LvD3CpVDHUtOD4788KrlB2F+FX1XY34gjjcI3NuQf4RuJnUWCQ3U0jpYJ+2wCh1ohoUzMcRQ5nlVRyvpRXikXeHG/cc0rhCSbQKThnJZEuI31zrmiIyJhkbDPLpCqEtQNiKMd6R3RES0eHcLWch1bjacW91pMVI1Ct1zYyD17BUq16zFlE9iNtULLEK7/iBWaB2z6vXwUZiPer9G9Wx71da2Ism+iskLkol1Q2YSvG6IoVIr8rdY1XzYqwiJ+XKbHZ21Us7H4RvIoQvd9aofGKyJ7rAcrRDxV6Ro2RNH4br5a7bLjvtYs3nfC0bo9ducefXocOZWOPn8WjKq1o08CWhVeJGi94+hGRrX6rO1ZI+88o89w59q5Im/J2pl+5PQbOX1otVt7Nxp9+nWJc7p2FgxFTyXa/uGPnkw6xezInq69DXoFxej3vZCQq1nWoa8Yz0s7XzrFaYFLC50DzfPtUOPfEANiv9ekdIp2WD+ZcPs6dFo+fv24t+LguLeq7/JBxJbvwj8o/B3Q36k8AmF+nizU+QZJ5P1sBBOOgPbrl3ec10eij3ObT8afQzkGraM0d+ke135J4zJNhFSKH+P475n8N9Hob6Hq9JDbrTa52/2dMwrV7/HrZ6HJNLJ4uTvoVDXO0d9cTTPP+zGZ/vFfZ9Vxkj2oohoOOl1urzO4VvW3jOdiMtW5g15PSPzWidRt7qAbZbUGnb6w21WgtgTReFyGBgdb3QVq2K86fevVgDsYwgX+pjAa7PG1opRmVJpThtvc+u+azuZmvzeA5Jwg3IbcESS3L4QA5wpIcmcgM5fqDIX8zR4nykMEmzu8bl/YGeb6tHjaEePpnKNYoDb4W8KdiHnuDKFJ0B0I+l0dzW7BxuVBwzxNHWG30GHMggL0UnN7h4tr0ukJt/k7wqiM16ML4vRBDUpk2xFCem5Ogep1C6uFf0NtBaNkFHCZRf6gGnKjH5Dag6rq5o8TzZVDtgEOdFiHTgjqbPN7v7mAu6GlI+hDgW6x0OVXQ/4CNdTRdK27OcxHNIzbMSS5Qc1+n8vD7QjNN5kaccrZ5F/nFhZoUSQUiAaBzx9GN4S0Ue6VwEgEaHNqqM2JRjW5ddRQDQxy5xg7/T6Mi6Dq9Qfd5zRbDa8PuFucKKhQU2rsrNe5nvP3+l2eFg8PNGd7GEMPG8jU6XIJyzXoeH45g6hXR7szKAS53CFPq0+o0dq+PtAW4ot4hDqbkUmIr4joExovSYs4lwaYs30Ug3FM9HURXUY4ooq+9vWqZ0yoo0lBN/+7X0HLGyEOJvdNJEXcGHduzYBOf9AVUnOjuZjLZUcm1FyeurkCNvROlZ4zTW7MJs61A/3AjVjn90QVc18XxqxRnYEAppizqd3NJzT7kfM4x7Q5w2qbM4Qc3b6xuKC4kQh3qR0+l65w7ti6kqtZeD7PhvztPLOF67ijnGo7ryCYLxHCgLN5rbMVDcNc9Pmj9eP7B9YYUVi0UEV3ewtXarFdraytaVQbaisbV9jq7aqjQa2rr13uqLBXqLm2BuznFqgrHI2La5c1qkhRb6tpXKXWVqq2mlXqUkdNRYFqX1lXb29oUGvrVUd1XZXDjmOOmvKqZRWOmkVqGa6rqW1UqxzVjkZk2lgrluqsHPYGzqzaXl++GLu2MkeVo3FVgVrpaKzhPCuRqU2ts9U3OsqXVdnq1bpl9XW1DXbkUYFsaxw1lfUoxV5tRyOQUXlt3ap6x6LFjQW4qBEHC9TGeluFvdpWv7SAa1iLJtergqQQtUQeqn05X9yw2FZVpZY5Ghsa6+22ak7L0VlUU1vNMVpWU2FrdNTWqGV2NMVWVmXXdENTyqtsjuoCtcJWbVtkbxgRwsl0c0bg4AsW2Wvs9baqArWhzl7u4A3E0VFvL28UlIg9IlEl1C2vrWmwX7EMB5AuIgIdstguRKABNvxXLjQT5teguZxPY219Y1SVFY4Ge4Fqq3c0cBUq62tRXe5PXMFtXIZ4cufV6PpyH/Gxb0YHUvHVuoEVdlsVMmzganyDFqPLfl2zOxDmsa0nt1YeRSnV6meBiFqtCGAIL/Jh4mpjoonxjJkldh6two0kF9+SC/Tyy8sHRjfuRlr5da1zYxUM8VKC+eHnxaTTExKZjtug16/veyFnOwrDVVEqrJfOdlwWiqo5NqEiG2Ig6MElnUFPGIuJ6uzA0aDnen0rDupb1XgLuJTx+gfdoQDuVJ517vb1hUgb5PuZ0MTja/EHvbrpAr7m8PxIDQ2rrYK5Cw33B1sLVdM/87+iReIUvBavInFydInf4wrFb6MBHBv7O9/5/w+1qNOz1lPkwXJ4XWGgLVCk12T97xzE5+yPyZXRv+kY9XlC6qKpj96xWrFNpqmklwDeu8TfpjNsTxD3ZJKMd4tom8U9idyN90TRTnj0L4sUWz5NIBuxF0/y8R5HSvBuEvxiBVUMScS7UbQNgkYRbVmMgxiRxAi1rmLAGAxvhCEGXzM4UwJ/Pwh/2winT3UrpxmcPiSfOrlKOdUNp7rkkyemKidXwUmrfGIqfPVlkfLVGfiyCP4Pgy8Y/LUEPk+Bz3phEFUcZDDYd/Z161n5L4vg0+Mu5dNeOO6CPzP45ONM5RMGH2fCRwyOrYUPGfzpIHzwxwzlgzPwxww42gv/xeAPDN5/L1V5n8F7qfBuL/z+d6nK7xn8bnuc8rtUeGcjvD0fBrAzMB/eYvDmGyblTQZvmOB1Bv/J4LVbLMprk+F/p8GrDF7phZe35SsvM3iJwYsb4QiD3zL4DYMX7k5QDjN4nsFzDJ5lcAj5HUqBZ+Kh/+mDSj+Dp59arTx9EJ7ukp86mK88tRqessoH8+FJBk/0Ql+PTXmcwQF8HDgD/4G8HmPw7y541AW/ToT9yfBvDB5h1mH4FYOHGTyUDPsY/PLBROWXJfBgIjxwv0V5YDrcb4Ff7J2p/GIj7J0JP2dwH4OfMdhzb4ayxwX3/tSs3JsBPzXD/zLBbgb3oJB7GNydALvuKlR2MbirEHai/J290HvnQaWXwZ0YW3cehDu75Dt25Ct3rIY7rPLtDP6VwW3Yv+0g7MiHHgSjxwa3orW3psD2OOjGgW4XbEPQtuXDLRa4mcFWBlsYbN5kUTYz2GSBnzC4icG/WMqUf2mAGxl0XQc3/HijcgODH2+EjdnwIwYbEuF6Bp0M1jHoCMcrHUnQ0UeJ9V05HA/hQ3IoGUJWOcjghwwCDPy+BsXfCz7vdMXXAN7p0M5gbQlcy8BTAm1noPUgtDBwM3AxaG7KVpoZNBGz0pQNTgZrGPyAwTVXxinXJMJqF1x9BK7CzlUpcGUcYESvTIEVDJYzWJaZoSwrgUYGDQzqGVyxEeoY1KZADYNqOlOpZlB1EJZOhyWOdGXJXHCUJyuOdFhsT1cWM1iEvUUuqMRe5UGwp0MFDlTMhfIyi1KeDOV9ktUaK5fZkpQyC5T1SQR7NmuiYksCWx89hD3rwnjFmgjWPtqFvYXxscrCeFjYR61Wl3w5g8tQhcvOwAIGl06H+QzmIcDzXHDJrEnKJUthLoOLZ6YoFzMoXQpziicpc5bCbHzMZlCChCUMZuH0rElQPAmKsFWUDoWxaUrhQZhZMEGZmQIz+yQutsBsUQomQAFXt1e+6MJ85SIGFyLlhfkwQ5qvzGAwncE0BlOTID+tTMm3wwVJkMcgNylJyWWQo85UcjaCOhOmLIVslJzNIIvBZMR2MoNM9EpmBkxikMEgncFE5DCxEtJSZyppZZCaYlZSZ0KKGSYg3YQUSMb1yQwsaLmlDMwowWwBs4ZdUmK8kpQESRp2iQkmJTEeEjXsEhC7BBMkIHaPyfGxEM9ja64cx8CElpgYxKZBjBmMDAzI2sBASQFA4+AMSDggzQeKCtCZQMxA+6hr03Z60f8/H/I/rcA/+cki/w1MMAMFCmVuZHN0cmVhbQplbmRvYmoKMTYyIDAgb2JqCjc5NzYKZW5kb2JqCjE2MSAwIG9iago8PCAvTGVuZ3RoIDE2MyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnicm8DwxsHDgYORZ+ZnBgAaWgPmCmVuZHN0cmVhbQplbmRvYmoKMTYzIDAgb2JqCjIwCmVuZG9iagoxNjQgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMAogIC9CYXNlRm9udCAvRUFBQUFDK0RlamFWdVNhbnNNb25vCiAgL0VuY29kaW5nIC9JZGVudGl0eS1ICiAgL1RvVW5pY29kZSAxNjUgMCBSCiAgL0Rlc2NlbmRhbnRGb250cyBbMTY2IDAgUl0KPj4KZW5kb2JqCjE2NiAwIG9iago8PCAvVHlwZSAvRm9udAovQmFzZUZvbnQgL0VBQUFBQytEZWphVnVTYW5zTW9ubyAKL0NJRFRvR0lETWFwIC9JZGVudGl0eSAKL1N1YnR5cGUgL0NJREZvbnRUeXBlMgovQ0lEU3lzdGVtSW5mbyA8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJpbmcgKFVDUykgL1N1cHBsZW1lbnQgMCA+PgovRm9udERlc2NyaXB0b3IgMTU5IDAgUgovRFcgMAovVyBbIDAgWzYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiA2MDIgNjAyIDYwMiBdIF0KPj4KZW5kb2JqCjE2NSAwIG9iago8PCAvTGVuZ3RoIDE2NyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnicXZLLasMwEEX3+Qot00Ww5VcSCIGSUvCiD5r2A2xpnBpqWcj2wn9fea7qQAV+HM0dMVcz0aV8Kk07iujd9epKo2haox0N/eQUiZpurdnIROhWjYH4rbrKbiKffJ2HkbrSNL1IodKTDUohog//M4xuFttH3df0IDQ1y/6b0+RacxPbr8t13b1O1v5QR2YUMe+R0fyNLi+Vfa06EhGfsyu1F7XjvPPpd8XnbEkkzBI1qF7TYCtFrjI32pxiv87i9OzXeTn9XzxJkVY36rtyq7zx68wkPcVxEoMSplyBUqZ9CsqYigMoB+WgAhTy9kwpgQ6IJaAj6AiqQEFZo5ZQGSGmQQ1iUMoYhJiEh0KC4GGfgeAhK0DwkAUlPOSB4CFFnTJ4CDF4SAu+4nCX8u9m751QLIs16mmCGvGlN8uMrY1Xk3O+5zxi3Oylza2hdVZtb5csfn4B3GLFeQplbmRzdHJlYW0KZW5kb2JqCjE2NyAwIG9iagozNDUKZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9QYWdlcwovQ291bnQgMTAKL0tpZHMgWzEzIDAgUiAxNDAgMCBSIDIyIDAgUiAyNSAwIFIgMjggMCBSIDMxIDAgUiAzNyAwIFIgNDAgMCBSIDQzIDAgUiA0NiAwIFIgXSA+PgplbmRvYmoKMTY4IDAgb2JqCjw8CiAgL1R5cGUgL0NhdGFsb2cKICAvUGFnZXMgMTUgMCBSCiAgL0xhbmcgKGRlKQogIC9NZXRhZGF0YSA1IDAgUgogIC9QYWdlTGFiZWxzIDE2OSAwIFIKPj4KZW5kb2JqCjE0IDAgb2JqCjw8CiAgL0ZvbnQgPDwKICAvRjE2IDE0NiAwIFIKICAvRjE1IDE1NSAwIFIKICAvRjE5IDE2NCAwIFIKPj4KICAvUHJvY1NldCBbL1BERiAvSW1hZ2VCIC9JbWFnZUMgL1RleHRdCiAgL1hPYmplY3QgPDwKICAvSW0xIDcgMCBSCiAgL0ltMiA5IDAgUgogIC9JbTMgMTYgMCBSCiAgL0ltNCAxOCAwIFIKPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMTY5IDAgb2JqCjw8IC9OdW1zIFswIDw8IC9TIC9EID4+IDEgPDwgL1MgL3IgL1N0IDIgPj4gMiA8PCAvUyAvciAvU3QgMyA+PiAzIDw8IC9TIC9EID4+XSA+PgplbmRvYmoKeHJlZgowIDE3MAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDEzOSAwMDAwMCBuIAowMDAwMDAyNjc3IDAwMDAwIG4gCjAwMDAwMDI2OTcgMDAwMDAgbiAKMDAwMDAwMjczMCAwMDAwMCBuIAowMDAwMDAzNjYyIDAwMDAwIG4gCjAwMDAwMDM2ODEgMDAwMDAgbiAKMDAwMDA1MjIwNiAwMDAwMCBuIAowMDAwMDUyMjI3IDAwMDAwIG4gCjAwMDAxMDU0ODcgMDAwMDAgbiAKMDAwMDEwNTUwOSAwMDAwMCBuIAowMDAwMTA2MDIzIDAwMDAwIG4gCjAwMDAxMDYwNDMgMDAwMDAgbiAKMDAwMDIwNzAwNCAwMDAwMCBuIAowMDAwMjA2NzcwIDAwMDAwIG4gCjAwMDAxMDYyMzcgMDAwMDAgbiAKMDAwMDExMjQwOCAwMDAwMCBuIAowMDAwMTEyNDI5IDAwMDAwIG4gCjAwMDAxMTk2MDkgMDAwMDAgbiAKMDAwMDExOTYzMCAwMDAwMCBuIAowMDAwMTIwNjMxIDAwMDAwIG4gCjAwMDAxMjA2NTEgMDAwMDAgbiAKMDAwMDEyMDg0NSAwMDAwMCBuIAowMDAwMTIzNTc2IDAwMDAwIG4gCjAwMDAxMjM1OTcgMDAwMDAgbiAKMDAwMDEyMzc5MSAwMDAwMCBuIAowMDAwMTI0NzM5IDAwMDAwIG4gCjAwMDAxMjQ3NTkgMDAwMDAgbiAKMDAwMDEyNDk1MyAwMDAwMCBuIAowMDAwMTI1ODMzIDAwMDAwIG4gCjAwMDAxMjU4NTMgMDAwMDAgbiAKMDAwMDEyNjA0NyAwMDAwMCBuIAowMDAwMTI2MTQyIDAwMDAwIG4gCjAwMDAxMjYyNzggMDAwMDAgbiAKMDAwMDEyNzc3NyAwMDAwMCBuIAowMDAwMTI3Nzk4IDAwMDAwIG4gCjAwMDAxMjc4MjUgMDAwMDAgbiAKMDAwMDEyODAzNiAwMDAwMCBuIAowMDAwMTI5MzA3IDAwMDAwIG4gCjAwMDAxMjkzMjggMDAwMDAgbiAKMDAwMDEyOTUyMiAwMDAwMCBuIAowMDAwMTMwMjE2IDAwMDAwIG4gCjAwMDAxMzAyMzYgMDAwMDAgbiAKMDAwMDEzMDQzMCAwMDAwMCBuIAowMDAwMTMxNDYyIDAwMDAwIG4gCjAwMDAxMzE0ODIgMDAwMDAgbiAKMDAwMDEzMTY3NiAwMDAwMCBuIAowMDAwMTMxNzU0IDAwMDAwIG4gCjAwMDAxMzE4ODkgMDAwMDAgbiAKMDAwMDEzMjAyOSAwMDAwMCBuIAowMDAwMTMyMTA3IDAwMDAwIG4gCjAwMDAxMzIyNDMgMDAwMDAgbiAKMDAwMDEzMjM4MyAwMDAwMCBuIAowMDAwMTMyNDYxIDAwMDAwIG4gCjAwMDAxMzI1OTkgMDAwMDAgbiAKMDAwMDEzMjczOSAwMDAwMCBuIAowMDAwMTMyODE5IDAwMDAwIG4gCjAwMDAxMzI5NTcgMDAwMDAgbiAKMDAwMDEzMzA5NyAwMDAwMCBuIAowMDAwMTMzMTc3IDAwMDAwIG4gCjAwMDAxMzMzMTUgMDAwMDAgbiAKMDAwMDEzMzQ1NSAwMDAwMCBuIAowMDAwMTMzNTM1IDAwMDAwIG4gCjAwMDAxMzM2NzIgMDAwMDAgbiAKMDAwMDEzMzgxMiAwMDAwMCBuIAowMDAwMTMzODkyIDAwMDAwIG4gCjAwMDAxMzQwMzAgMDAwMDAgbiAKMDAwMDEzNDE3MCAwMDAwMCBuIAowMDAwMTM0MjUwIDAwMDAwIG4gCjAwMDAxMzQzODYgMDAwMDAgbiAKMDAwMDEzNDUyNiAwMDAwMCBuIAowMDAwMTM0NjA2IDAwMDAwIG4gCjAwMDAxMzQ3NDQgMDAwMDAgbiAKMDAwMDEzNDg4NCAwMDAwMCBuIAowMDAwMTM0OTY0IDAwMDAwIG4gCjAwMDAxMzUxMDIgMDAwMDAgbiAKMDAwMDEzNTI0MiAwMDAwMCBuIAowMDAwMTM1MzIyIDAwMDAwIG4gCjAwMDAxMzU0NjAgMDAwMDAgbiAKMDAwMDEzNTYwMCAwMDAwMCBuIAowMDAwMTM1NjgwIDAwMDAwIG4gCjAwMDAxMzU4MTggMDAwMDAgbiAKMDAwMDEzNTk1OCAwMDAwMCBuIAowMDAwMTM2MDM3IDAwMDAwIG4gCjAwMDAxMzYxNzUgMDAwMDAgbiAKMDAwMDEzNjMxNSAwMDAwMCBuIAowMDAwMTM2MzkzIDAwMDAwIG4gCjAwMDAxMzY1MzEgMDAwMDAgbiAKMDAwMDEzNjY3MSAwMDAwMCBuIAowMDAwMTM2NzQ5IDAwMDAwIG4gCjAwMDAxMzY4ODcgMDAwMDAgbiAKMDAwMDEzNzAyNyAwMDAwMCBuIAowMDAwMTM3MTA1IDAwMDAwIG4gCjAwMDAxMzcyNDMgMDAwMDAgbiAKMDAwMDEzNzM4MyAwMDAwMCBuIAowMDAwMTM3NDYxIDAwMDAwIG4gCjAwMDAxMzc1OTggMDAwMDAgbiAKMDAwMDEzNzczOCAwMDAwMCBuIAowMDAwMTM3ODE2IDAwMDAwIG4gCjAwMDAxMzc5NTQgMDAwMDAgbiAKMDAwMDEzODA5NSAwMDAwMCBuIAowMDAwMTM4MTc0IDAwMDAwIG4gCjAwMDAxMzgzMTQgMDAwMDAgbiAKMDAwMDEzODQ1NiAwMDAwMCBuIAowMDAwMTM4NTM1IDAwMDAwIG4gCjAwMDAxMzg2NzQgMDAwMDAgbiAKMDAwMDEzODgxNiAwMDAwMCBuIAowMDAwMTM4ODk1IDAwMDAwIG4gCjAwMDAxMzkwMzUgMDAwMDAgbiAKMDAwMDEzOTE3NyAwMDAwMCBuIAowMDAwMTM5MjU2IDAwMDAwIG4gCjAwMDAxMzkzOTQgMDAwMDAgbiAKMDAwMDEzOTUzNiAwMDAwMCBuIAowMDAwMTM5NjE1IDAwMDAwIG4gCjAwMDAxMzk3NTUgMDAwMDAgbiAKMDAwMDEzOTg5NyAwMDAwMCBuIAowMDAwMTM5OTc2IDAwMDAwIG4gCjAwMDAxNDAxMTYgMDAwMDAgbiAKMDAwMDE0MDI1OCAwMDAwMCBuIAowMDAwMTQwMzM3IDAwMDAwIG4gCjAwMDAxNDA0NzYgMDAwMDAgbiAKMDAwMDE0MDYxOCAwMDAwMCBuIAowMDAwMTQwNjk3IDAwMDAwIG4gCjAwMDAxNDA4MzYgMDAwMDAgbiAKMDAwMDE0MDk3OCAwMDAwMCBuIAowMDAwMTQxMDU3IDAwMDAwIG4gCjAwMDAxNDExOTcgMDAwMDAgbiAKMDAwMDE0MTMzOSAwMDAwMCBuIAowMDAwMTQxNDE4IDAwMDAwIG4gCjAwMDAxNDE1NTggMDAwMDAgbiAKMDAwMDE0MTcwMCAwMDAwMCBuIAowMDAwMTQxNzc5IDAwMDAwIG4gCjAwMDAxNDE5MTggMDAwMDAgbiAKMDAwMDE0MjA2MCAwMDAwMCBuIAowMDAwMTQyMTM5IDAwMDAwIG4gCjAwMDAxNDIyNzggMDAwMDAgbiAKMDAwMDE0MjQyMCAwMDAwMCBuIAowMDAwMTYxOTUwIDAwMDAwIG4gCjAwMDAxNjE5NzMgMDAwMDAgbiAKMDAwMDE2MjQzOSAwMDAwMCBuIAowMDAwMTYyNjUzIDAwMDAwIG4gCjAwMDAxNjI5MTggMDAwMDAgbiAKMDAwMDE3Nzc0NyAwMDAwMCBuIAowMDAwMTc3NzI0IDAwMDAwIG4gCjAwMDAxNzc4NTIgMDAwMDAgbiAKMDAwMDE3Nzg3MiAwMDAwMCBuIAowMDAwMTc4NTMxIDAwMDAwIG4gCjAwMDAxNzgwMzcgMDAwMDAgbiAKMDAwMDE3OTEyMCAwMDAwMCBuIAowMDAwMTc5MTQxIDAwMDAwIG4gCjAwMDAxNzk0MDEgMDAwMDAgbiAKMDAwMDE5NTg0OCAwMDAwMCBuIAowMDAwMTk1ODI1IDAwMDAwIG4gCjAwMDAxOTU5NjIgMDAwMDAgbiAKMDAwMDE5NTk4MiAwMDAwMCBuIAowMDAwMTk2Njg2IDAwMDAwIG4gCjAwMDAxOTYxNDIgMDAwMDAgbiAKMDAwMDE5NzMzNyAwMDAwMCBuIAowMDAwMTk3MzU4IDAwMDAwIG4gCjAwMDAxOTc2MjAgMDAwMDAgbiAKMDAwMDIwNTcxNyAwMDAwMCBuIAowMDAwMjA1Njk1IDAwMDAwIG4gCjAwMDAyMDU4MTUgMDAwMDAgbiAKMDAwMDIwNTgzNSAwMDAwMCBuIAowMDAwMjA2MzI2IDAwMDAwIG4gCjAwMDAyMDU5OTkgMDAwMDAgbiAKMDAwMDIwNjc0OSAwMDAwMCBuIAowMDAwMjA2ODk1IDAwMDAwIG4gCjAwMDAyMDcyMzQgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9Sb290IDE2OCAwIFIKICAvSW5mbyAxIDAgUgogIC9JRCBbPDA0M0Y3ODZENzBFNDEwNUY0N0NDQUUwQkE1RDc5NEIwPiA8MDQzRjc4NkQ3MEU0MTA1RjQ3Q0NBRTBCQTVENzk0QjA+XQogIC9TaXplIDE3MAo+PgpzdGFydHhyZWYKMjA3MzMzCiUlRU9GCg==
en
de
internal
external
public
Misc
Misc Comment
1
current_timestamp
1
current_timestamp
1
0
Created
1
current_timestamp
1
current_timestamp
1