import sys , os , zipfile , shutil
from os . path import isdir , join , normpath , split
if 64 - 64: i11iIiiIii
OO0o = "Mario"
if 81 - 81: Iii1I1 + OO0O0O % iiiii % ii1I - ooO0OO000o
def ii11i ( ) :
 print "Usage : " + sys . argv [ 0 ] + " ZipName"
 if 66 - 66: iIiI * iIiiiI1IiI1I1 * o0OoOoOO00
 if 27 - 27: OOOo0 / Oo - Ooo00oOo00o . I1IiI
 if 73 - 73: OOooOOo / ii11ii1ii
 if 94 - 94: OoOO + OoOO0ooOOoo0O + o0000oOoOoO0o * o00O0oo
def O0oOO0o0 ( path , zip ) :
 if 9 - 9: o0o - Ooo00oOo00o
 if 62 - 62: Oo - ii1I * ii11ii1ii
 zip = zipfile . ZipFile ( zip , 'r' )
 if 24 - 24: ooO0OO000o % OoOO / Iii1I1
 if not isdir ( path ) :
  os . makedirs ( path )
  if 46 - 46: Iii1I1 * ooO0OO000o / o0000oOoOoO0o * iIiiiI1IiI1I1 * OoOO0ooOOoo0O . ii11ii1ii
 for Oo0oO0ooo in zip . namelist ( ) :
  if 56 - 56: ii11ii1ii - ii1I
  if 64 - 64: o00O0oo + OoOO0ooOOoo0O
  if 10 - 10: i11iIiiIii / I1IiI % ooO0OO000o
  if 75 - 75: i11iIiiIii + o0000oOoOoO0o . Oo * OoOO0ooOOoo0O
  if 59 - 59: OO0O0O
  if 31 - 31: o0000oOoOoO0o % ii1I * OO0O0O / o0000oOoOoO0o % I1IiI + iiiii
  if not Oo0oO0ooo . endswith ( '/' ) :
   O00o0o0000o0o , O0Oo = split ( Oo0oO0ooo )
   oo = normpath ( join ( path , O00o0o0000o0o ) )
   if not isdir ( oo ) :
    os . makedirs ( oo )
   file ( join ( oo , O0Oo ) , 'wb' ) . write ( zip . read ( Oo0oO0ooo ) )
 zip . close ( )
 if 33 - 33: ooO0OO000o * iIiiiI1IiI1I1 - Oo * OO0O0O * iiiii * o0o
 if 27 - 27: o0OoOoOO00
def oOOOo0o0O ( login , fileName ) :
 for OOoOoo00oo in fileName :
  print OOoOoo00oo
  if 41 - 41: OO0O0O / o00O0oo + OOooOOo
  if 91 - 91: Oo / ooO0OO000o . Ooo00oOo00o + OOooOOo
def iI11 ( login , zipFileName ) :
 if zipFileName [ - 4 : ] != ".zip" :
  if 17 - 17: Oo
  print "[" + login + "] : " + zipFileName + " do not end by .zip"
 o00ooooO0oO = zipFileName . split ( '_' )
 if 63 - 63: OOOo0 % ii1I
 if len ( o00ooooO0oO ) is not 2 :
  print "[" + login + "] : incorrect zip name format " + zipFileName
 else :
  if o00ooooO0oO [ 1 ] [ : - 4 ] != OO0o :
   print "[" + login + "] : incorrect zip name format " + zipFileName
   if 66 - 66: OoOO
   if 78 - 78: o0OoOoOO00
def Iii1I111 ( login , loginDir ) :
 OO0O0O00OooO = os . listdir ( loginDir )
 if 77 - 77: ooO0OO000o - ooO0OO000o . iIiI / Oo
 OOoOoo00oo = 0
 for file in OO0O0O00OooO :
  if file == ".svn" :
   del ( OO0O0O00OooO [ OOoOoo00oo ] )
   break
  OOoOoo00oo += 1
  if 14 - 14: ii11ii1ii % Iii1I1
  if 41 - 41: ii1I + o00O0oo + OOooOOo - o0000oOoOoO0o
 if len ( OO0O0O00OooO ) is 0 :
  print "[" + login + "] : empty directory. No more tests."
  return None
 elif len ( OO0O0O00OooO ) > 1 :
  print "[" + login + "] : " + str ( len ( OO0O0O00OooO ) ) + " files in the directory. No more tests."
  return None
 else :
  return OO0O0O00OooO [ 0 ]
  if 77 - 77: iIiiiI1IiI1I1 . o0000oOoOoO0o % o0o
  if 42 - 42: I1IiI - ii1I / i11iIiiIii + OOooOOo + o0OoOoOO00
  if 17 - 17: I1IiI . iIiiiI1IiI1I1 . Ooo00oOo00o
def IIi ( login , dirDir , files ) :
 i1I11 = - 1
 try :
  i1I11 = files . index ( "build.xml" )
 except ValueError :
  if 26 - 26: i11iIiiIii
  print "[" + login + "] : zip do not contains a build.xml file"
 if i1I11 != - 1 :
  OO0O00 = files [ i1I11 ]
  ii1 = open ( os . path . join ( dirDir , OO0O00 ) , 'r' )
  o0oO0o00oo = [ "run" , "default" , "jar" , "clean" , "compile" , "javadoc" ]
  II1i1Ii11Ii11 = ii1 . read ( )
  for iII11i in o0oO0o00oo :
   if II1i1Ii11Ii11 . find ( iII11i ) is - 1 :
    print "[" + login + "] : ant file do not contain " + iII11i
  ii1 . close ( )
  if 97 - 97: ii11ii1ii % ii11ii1ii + ooO0OO000o * OoOO0ooOOoo0O
def o0o00o0 ( login , dirDir , files ) :
 i1I11 = - 1
 try :
  i1I11 = files . index ( "docs" )
 except ValueError :
  if 25 - 25: iIiiiI1IiI1I1 - o0000oOoOoO0o . iiiii
  print "[" + login + "] : zip do not contains a docs directory"
 if i1I11 != - 1 :
  I11ii1 = os . path . join ( dirDir , files [ i1I11 ] )
  I11II1i = os . listdir ( I11ii1 )
  IIIII = [ "user.pdf" , "dev.pdf" ]
  for ooooooO0oo in IIIII :
   if not ooooooO0oo in I11II1i :
    print "[" + login + "] : zip do not contains a " + ooooooO0oo + " file in docs directory"
    if 49 - 49: Oo * OO0O0O / ii1I / i11iIiiIii / Oo
def I1i1I1II ( login , unzipDir , zipName ) :
 OO0O0O00OooO = os . listdir ( unzipDir )
 if len ( OO0O0O00OooO ) is not 1 :
  print "[" + login + "] : zip do not contains a login1login2_project directory as a root. No more tests."
 else :
  i1 = OO0O0O00OooO [ 0 ]
  if zipName [ : - 4 ] != i1 :
   print "[" + login + "] : zip do not contains a login1login2_project directory as a root. "
   if 48 - 48: Iii1I1 + Iii1I1 - Ooo00oOo00o . o0o / OO0O0O
  OoOOO00oOO0 = os . path . join ( unzipDir , i1 )
  OO0O0O00OooO = os . listdir ( OoOOO00oOO0 )
  if 95 - 95: OOooOOo / iiiii
  IIi ( login , OoOOO00oOO0 , OO0O0O00OooO )
  o0o00o0 ( login , OoOOO00oOO0 , OO0O0O00OooO )
  if 18 - 18: i11iIiiIii
def Ii11I ( zipFileName , zipFileDir , login = '!' ) :
 iI11 ( login , zipFileName )
 if 69 - 69: I1IiI % o00O0oo - Oo + o00O0oo - Iii1I1 % iiiii
 Iii111II = "unzipDir"
 O0oOO0o0 ( Iii111II , zipFileDir )
 if 9 - 9: o0OoOoOO00
 I1i1I1II ( login , Iii111II , zipFileName )
 if 33 - 33: o0o . OoOO0ooOOoo0O
 if 58 - 58: OOooOOo * i11iIiiIii / OOOo0 % o00O0oo - Ooo00oOo00o / I1IiI
 shutil . rmtree ( Iii111II )
 if 50 - 50: iIiI
def Ii1i11IIii1I ( dir , login ) :
 OOOoO0O0o = os . path . join ( dir , login )
 if 55 - 55: OOooOOo + o0o . ii1I - Ooo00oOo00o . Iii1I1 - o0o
 if os . path . isdir ( OOOoO0O0o ) :
  o0O = Iii1I111 ( login , OOOoO0O0o )
  if o0O is None :
   return
  O00oO = os . path . join ( OOOoO0O0o , o0O )
  if 39 - 39: o0000oOoOoO0o - ooO0OO000o * o0OoOoOO00 % Oo * ooO0OO000o % ooO0OO000o
  Ii11I ( o0O , O00oO , login )
  if 59 - 59: OO0O0O + iIiI - Oo - iIiI + OOooOOo / Ooo00oOo00o
  if 24 - 24: ii11ii1ii . OoOO0ooOOoo0O % OOooOOo + o0o % OOOo0
def I11III1II ( ) :
 if 16 - 16: iIiI * I1IiI % o0000oOoOoO0o
 if len ( sys . argv ) is not 2 :
  ii11i ( )
  sys . exit ( )
  if 86 - 86: iIiI + OoOO % i11iIiiIii * I1IiI . o0o * ii11ii1ii
 i1I11i1iI = sys . argv [ 1 ]
 if 15 - 15: OoOO - Iii1I1 / I1IiI * ii1I
 print "start..."
 Ii11I ( os . path . basename ( i1I11i1iI ) , i1I11i1iI )
 print "...end"
 if 92 - 92: OOOo0
 if 26 - 26: OoOO0ooOOoo0O . o00O0oo
 if 68 - 68: o0OoOoOO00
 if 35 - 35: o0OoOoOO00 - OoOO0ooOOoo0O / iIiiiI1IiI1I1 / OOOo0
 if 24 - 24: o0o - o0o / ooO0OO000o - Ooo00oOo00o
 if 69 - 69: I1IiI . o00O0oo + OoOO / iIiiiI1IiI1I1 - I1IiI
 if 63 - 63: OOooOOo % I1IiI * I1IiI * o0OoOoOO00 / Ooo00oOo00o
 if 74 - 74: ooO0OO000o
I11III1II ( ) 