#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
//defenir as variaveis que estão no menu ou nele interveêm
struct menu{
int pass;//password
int a;//meu principal
int teste;//confirmação
int b;//menus secundarios
};
struct gerir{
int c;//código do produto
int st;//usado para guardar a quantidade dos produtos antes de estes serem guardados no .txt
int co;//preço unitario
};
int main(){
struct menu m;
struct gerir g;
char file_name[1024];
int i;
//fixeiros txt para guardar as quantidades de cada produto
FILE
*fp0
=fopen("stock0.txt","w+"); FILE
*fp1
=fopen("stock1.txt","w+"); FILE
*fp2
=fopen("stock2.txt","w+"); FILE
*fp3
=fopen("stock3.txt","w+"); FILE
*fp4
=fopen("stock4.txt","w+"); FILE
*fp5
=fopen("stock5.txt","w+"); FILE
*fp6
=fopen("stock6.txt","w+"); FILE
*fp7
=fopen("stock7.txt","w+"); FILE
*fp8
=fopen("stock8.txt","w+"); FILE
*fp9
=fopen("stock9.txt","w+"); FILE
*fpA
=fopen("stockA.txt","w+"); FILE
*fpB
=fopen("stockB.txt","w+"); FILE
*fpC
=fopen("stockC.txt","w+"); FILE
*fpD
=fopen("stockD.txt","w+");
//fixeiros txt para guardar os preços dos produtos
FILE
*ap0
=fopen("preco0.txt","w+"); FILE
*ap1
=fopen("preco1.txt","w+"); FILE
*ap2
=fopen("preco2.txt","w+"); FILE
*ap3
=fopen("preco3.txt","w+"); FILE
*ap4
=fopen("preco4.txt","w+"); FILE
*ap5
=fopen("preco5.txt","w+"); FILE
*ap6
=fopen("preco6.txt","w+"); FILE
*ap7
=fopen("preco7.txt","w+"); FILE
*ap8
=fopen("preco8.txt","w+"); FILE
*ap9
=fopen("preco9.txt","w+"); FILE
*apA
=fopen("precoA.txt","w+"); FILE
*apB
=fopen("precoB.txt","w+"); FILE
*apC
=fopen("precoC.txt","w+"); FILE
*apD
=fopen("precoD.txt","w+");
if(m.pass!=12345)
printf("acesso não autorizado"); else{
printf("Acesso autorizado\nBEM VINDO\n\n"); do{
printf("digite o que pretende fazer:\n[1]-gerir stock\n[2]-registar vendas\n[3]-obter relatorio\n[4]-sair\n"); switch(m.a){
case 1:
do{
printf("digite:\n[1]-adiconar nvo produto\n[2]-excluir produto\n"); if(m.b==1){
do{
printf("digite código do produto (sendo que este tem de ser sequencial e de 1 a 14):"); switch (g.c){
case 1:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 2:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 3:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); case 4:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 5:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 6:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 7:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 8:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 9:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 10:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 11:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 12:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 13:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
case 14:
printf("digite a quantidade de produto que tem em stock:"); printf("\ndigite o preço unitario:"); break;
}
printf("deseja acrescentar mais algum produto?\n[1]-sim\n[2]-não"); }while(m.teste==1);
}else if(m.b==2){
do{
printf("digite o código do produto que deseja excluir"); switch(g.c){
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
case 9:
break;
case 10:
break;
case 11:
break;
case 12:
break;
case 13:
break;
case 14:
break;
}
printf("deseja excluir mais algum produto?\n[1]-sim\n[2]-não"); }while(m.teste==1);
}//if
}while(m.teste==1);
break;
}
}while (m.a==3 || m.a==1 || m.a==2);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGNvbmlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGxvY2FsZS5oPgoKLy9kZWZlbmlyIGFzIHZhcmlhdmVpcyBxdWUgZXN0w6NvIG5vIG1lbnUgb3UgbmVsZSBpbnRlcnZlw6ptCnN0cnVjdCBtZW51ewogICAgaW50IHBhc3M7Ly9wYXNzd29yZAogICAgaW50IGE7Ly9tZXUgcHJpbmNpcGFsCiAgICBpbnQgdGVzdGU7Ly9jb25maXJtYcOnw6NvCiAgICBpbnQgYjsvL21lbnVzIHNlY3VuZGFyaW9zCn07CgpzdHJ1Y3QgZ2VyaXJ7CiAgICBpbnQgYzsvL2PDs2RpZ28gZG8gcHJvZHV0bwogICAgaW50IHN0Oy8vdXNhZG8gcGFyYSBndWFyZGFyIGEgcXVhbnRpZGFkZSBkb3MgcHJvZHV0b3MgYW50ZXMgZGUgZXN0ZXMgc2VyZW0gZ3VhcmRhZG9zIG5vIC50eHQKICAgIGludCBjbzsvL3ByZcOnbyB1bml0YXJpbwp9OwoKaW50IG1haW4oKXsKICAgIHN5c3RlbSAoImNvbG9yIEY5Iik7CiAgICBzZXRsb2NhbGUoTENfQUxMLCJwcm90dWd1ZXNlIik7CiAgICBzdHJ1Y3QgbWVudSBtOwogICAgc3RydWN0IGdlcmlyIGc7CiAgICBjaGFyIGZpbGVfbmFtZVsxMDI0XTsKICAgIGludCBpOwogICAgCiAgICAvL2ZpeGVpcm9zIHR4dCBwYXJhIGd1YXJkYXIgYXMgcXVhbnRpZGFkZXMgZGUgY2FkYSBwcm9kdXRvCiAgICBGSUxFICpmcDA9Zm9wZW4oInN0b2NrMC50eHQiLCJ3KyIpOwogICAgRklMRSAqZnAxPWZvcGVuKCJzdG9jazEudHh0IiwidysiKTsKICAgIEZJTEUgKmZwMj1mb3Blbigic3RvY2syLnR4dCIsIncrIik7CiAgICBGSUxFICpmcDM9Zm9wZW4oInN0b2NrMy50eHQiLCJ3KyIpOwogICAgRklMRSAqZnA0PWZvcGVuKCJzdG9jazQudHh0IiwidysiKTsKICAgIEZJTEUgKmZwNT1mb3Blbigic3RvY2s1LnR4dCIsIncrIik7CiAgICBGSUxFICpmcDY9Zm9wZW4oInN0b2NrNi50eHQiLCJ3KyIpOwogICAgRklMRSAqZnA3PWZvcGVuKCJzdG9jazcudHh0IiwidysiKTsKICAgIEZJTEUgKmZwOD1mb3Blbigic3RvY2s4LnR4dCIsIncrIik7CiAgICBGSUxFICpmcDk9Zm9wZW4oInN0b2NrOS50eHQiLCJ3KyIpOwogICAgRklMRSAqZnBBPWZvcGVuKCJzdG9ja0EudHh0IiwidysiKTsKICAgIEZJTEUgKmZwQj1mb3Blbigic3RvY2tCLnR4dCIsIncrIik7CiAgICBGSUxFICpmcEM9Zm9wZW4oInN0b2NrQy50eHQiLCJ3KyIpOwogICAgRklMRSAqZnBEPWZvcGVuKCJzdG9ja0QudHh0IiwidysiKTsKICAgIAogICAgLy9maXhlaXJvcyB0eHQgcGFyYSBndWFyZGFyIG9zIHByZcOnb3MgZG9zIHByb2R1dG9zCiAgICBGSUxFICphcDA9Zm9wZW4oInByZWNvMC50eHQiLCJ3KyIpOwogICAgRklMRSAqYXAxPWZvcGVuKCJwcmVjbzEudHh0IiwidysiKTsKICAgIEZJTEUgKmFwMj1mb3BlbigicHJlY28yLnR4dCIsIncrIik7CiAgICBGSUxFICphcDM9Zm9wZW4oInByZWNvMy50eHQiLCJ3KyIpOwogICAgRklMRSAqYXA0PWZvcGVuKCJwcmVjbzQudHh0IiwidysiKTsKICAgIEZJTEUgKmFwNT1mb3BlbigicHJlY281LnR4dCIsIncrIik7CiAgICBGSUxFICphcDY9Zm9wZW4oInByZWNvNi50eHQiLCJ3KyIpOwogICAgRklMRSAqYXA3PWZvcGVuKCJwcmVjbzcudHh0IiwidysiKTsKICAgIEZJTEUgKmFwOD1mb3BlbigicHJlY284LnR4dCIsIncrIik7CiAgICBGSUxFICphcDk9Zm9wZW4oInByZWNvOS50eHQiLCJ3KyIpOwogICAgRklMRSAqYXBBPWZvcGVuKCJwcmVjb0EudHh0IiwidysiKTsKICAgIEZJTEUgKmFwQj1mb3BlbigicHJlY29CLnR4dCIsIncrIik7CiAgICBGSUxFICphcEM9Zm9wZW4oInByZWNvQy50eHQiLCJ3KyIpOwogICAgRklMRSAqYXBEPWZvcGVuKCJwcmVjb0QudHh0IiwidysiKTsKCiAgICBwcmludGYoImRpZ2l0ZSBhIHBhc3N3b3JkOiIpOwogICAgc2NhbmYoIiVpIiwmbS5wYXNzKTsKICAgICAKICAgIGlmKG0ucGFzcyE9MTIzNDUpCiAgICAgICAgcHJpbnRmKCJhY2Vzc28gbsOjbyBhdXRvcml6YWRvIik7CiAgICBlbHNlewogICAgICAgIHByaW50ZigiQWNlc3NvIGF1dG9yaXphZG9cbkJFTSBWSU5ET1xuXG4iKTsKICAgICAgICBkb3sKICAgICAgICAgICAgcHJpbnRmKCJkaWdpdGUgbyBxdWUgcHJldGVuZGUgZmF6ZXI6XG5bMV0tZ2VyaXIgc3RvY2tcblsyXS1yZWdpc3RhciB2ZW5kYXNcblszXS1vYnRlciByZWxhdG9yaW9cbls0XS1zYWlyXG4iKTsKICAgICAgICAgICAgc2NhbmYoIiVpIiwmbS5hKTsKICAgICAgICAgICAgc3dpdGNoKG0uYSl7CiAgICAgICAgICAgICAgICBjYXNlIDE6IAogICAgICAgICAgICAgICAgICAgIGRvewogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoImRpZ2l0ZTpcblsxXS1hZGljb25hciBudm8gcHJvZHV0b1xuWzJdLWV4Y2x1aXIgcHJvZHV0b1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJm0uYik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG0uYj09MSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoImRpZ2l0ZSBjw7NkaWdvIGRvIHByb2R1dG8gKHNlbmRvIHF1ZSBlc3RlIHRlbSBkZSBzZXIgc2VxdWVuY2lhbCBlIGRlIDEgYSAxNCk6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbmYoIiVpIiwmZy5jKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGcuYyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiZGlnaXRlIGEgcXVhbnRpZGFkZSBkZSBwcm9kdXRvIHF1ZSB0ZW0gZW0gc3RvY2s6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLCZnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZnAwLCIlaSIsZy5zdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuZGlnaXRlIG8gcHJlw6dvIHVuaXRhcmlvOiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbmYoIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoYXAwLCIlaSIsZy5jbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkaWdpdGUgYSBxdWFudGlkYWRlIGRlIHByb2R1dG8gcXVlIHRlbSBlbSBzdG9jazoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJmcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcDEsIiVpIixnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaWdpdGUgbyBwcmXDp28gdW5pdGFyaW86Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcDEsIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoImRpZ2l0ZSBhIHF1YW50aWRhZGUgZGUgcHJvZHV0byBxdWUgdGVtIGVtIHN0b2NrOiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbmYoIiVpIiwmZy5zdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZwMiwiJWkiLGcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbmRpZ2l0ZSBvIHByZcOnbyB1bml0YXJpbzoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsZy5jbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGFwMiwiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoImRpZ2l0ZSBhIHF1YW50aWRhZGUgZGUgcHJvZHV0byBxdWUgdGVtIGVtIHN0b2NrOiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbmYoIiVpIiwmZy5zdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZwMywiJWkiLGcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbmRpZ2l0ZSBvIHByZcOnbyB1bml0YXJpbzoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsZy5jbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGFwMywiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiZGlnaXRlIGEgcXVhbnRpZGFkZSBkZSBwcm9kdXRvIHF1ZSB0ZW0gZW0gc3RvY2s6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLCZnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZnA0LCIlaSIsZy5zdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuZGlnaXRlIG8gcHJlw6dvIHVuaXRhcmlvOiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbmYoIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoYXA0LCIlaSIsZy5jbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkaWdpdGUgYSBxdWFudGlkYWRlIGRlIHByb2R1dG8gcXVlIHRlbSBlbSBzdG9jazoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJmcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcDUsIiVpIixnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaWdpdGUgbyBwcmXDp28gdW5pdGFyaW86Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcDUsIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoImRpZ2l0ZSBhIHF1YW50aWRhZGUgZGUgcHJvZHV0byBxdWUgdGVtIGVtIHN0b2NrOiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbmYoIiVpIiwmZy5zdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZwNiwiJWkiLGcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbmRpZ2l0ZSBvIHByZcOnbyB1bml0YXJpbzoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsZy5jbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGFwNiwiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiZGlnaXRlIGEgcXVhbnRpZGFkZSBkZSBwcm9kdXRvIHF1ZSB0ZW0gZW0gc3RvY2s6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLCZnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZnA3LCIlaSIsZy5zdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuZGlnaXRlIG8gcHJlw6dvIHVuaXRhcmlvOiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbmYoIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoYXA3LCIlaSIsZy5jbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkaWdpdGUgYSBxdWFudGlkYWRlIGRlIHByb2R1dG8gcXVlIHRlbSBlbSBzdG9jazoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJmcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcDgsIiVpIixnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaWdpdGUgbyBwcmXDp28gdW5pdGFyaW86Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcDksIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkaWdpdGUgYSBxdWFudGlkYWRlIGRlIHByb2R1dG8gcXVlIHRlbSBlbSBzdG9jazoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJmcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcDksIiVpIixnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaWdpdGUgbyBwcmXDp28gdW5pdGFyaW86Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcDksIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkaWdpdGUgYSBxdWFudGlkYWRlIGRlIHByb2R1dG8gcXVlIHRlbSBlbSBzdG9jazoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJmcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcEEsIiVpIixnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaWdpdGUgbyBwcmXDp28gdW5pdGFyaW86Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcEEsIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkaWdpdGUgYSBxdWFudGlkYWRlIGRlIHByb2R1dG8gcXVlIHRlbSBlbSBzdG9jazoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJmcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcEIsIiVpIixnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaWdpdGUgbyBwcmXDp28gdW5pdGFyaW86Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcEIsIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkaWdpdGUgYSBxdWFudGlkYWRlIGRlIHByb2R1dG8gcXVlIHRlbSBlbSBzdG9jazoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJmcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcEMsIiVpIixnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaWdpdGUgbyBwcmXDp28gdW5pdGFyaW86Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcEMsIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkaWdpdGUgYSBxdWFudGlkYWRlIGRlIHByb2R1dG8gcXVlIHRlbSBlbSBzdG9jazoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJmcuc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcEQsIiVpIixnLnN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaWdpdGUgbyBwcmXDp28gdW5pdGFyaW86Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWkiLGcuY28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcEQsIiVpIixnLmNvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoImRlc2VqYSBhY3Jlc2NlbnRhciBtYWlzIGFsZ3VtIHByb2R1dG8/XG5bMV0tc2ltXG5bMl0tbsOjbyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJm0udGVzdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfXdoaWxlKG0udGVzdGU9PTEpOwogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZihtLmI9PTIpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG97CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkaWdpdGUgbyBjw7NkaWdvIGRvIHByb2R1dG8gcXVlIGRlc2VqYSBleGNsdWlyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbmYoIiVpIixnLmMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaChnLmMpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZwMCwiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGFwMCwiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcDEsIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcDEsIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZnAyLCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoYXAyLCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZwMywiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGFwMywiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcDQsIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcDQsIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZnA1LCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoYXA1LCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZwNiwiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGFwNiwiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcDcsIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcDcsIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZnA4LCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoYXA4LCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcDksIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcDksIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZwQSwiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGFwQSwiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZnBCLCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoYXBCLCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmcEMsIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihhcEMsIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZwRCwiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGFwRCwiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkZXNlamEgZXhjbHVpciBtYWlzIGFsZ3VtIHByb2R1dG8/XG5bMV0tc2ltXG5bMl0tbsOjbyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlaSIsJm0udGVzdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfXdoaWxlKG0udGVzdGU9PTEpOwogICAgICAgICAgICAgICAgICAgICAgICB9Ly9pZgogICAgICAgICAgICAgICAgICAgIH13aGlsZShtLnRlc3RlPT0xKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH13aGlsZSAobS5hPT0zIHx8IG0uYT09MSB8fCBtLmE9PTIpOwogICAgfQogICAgIAogICAgcmV0dXJuIDA7Cn0=