<s> __author__ = '<STR_LIT>' <EOL> import random <EOL> class Cnpj : <EOL> """<STR_LIT>""" <EOL> @ staticmethod <EOL> def validate ( cnpj ) : <EOL> """<STR_LIT>""" <EOL> cnpj = cnpj . replace ( "<STR_LIT:->" , "<STR_LIT>" ) <EOL> cnpj = cnpj . replace ( "<STR_LIT:.>" , "<STR_LIT>" ) <EOL> cnpj = cnpj . replace ( "<STR_LIT:/>" , "<STR_LIT>" ) <EOL> if len ( cnpj ) != <NUM_LIT> : <EOL> return False <EOL> base_cnpj = cnpj [ : - <NUM_LIT:2> ] <EOL> verificadores = cnpj [ - <NUM_LIT:2> : ] <EOL> calculated_digits = Cnpj . calculate_last_digits ( base_cnpj ) <EOL> return bool ( verificadores == calculated_digits [ <NUM_LIT:0> ] + calculated_digits [ <NUM_LIT:1> ] ) <EOL> @ staticmethod <EOL> def calculate_last_digits ( cnpj ) : <EOL> """<STR_LIT>""" <EOL> if len ( cnpj ) != <NUM_LIT:12> : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> lista_validacao_um = [ <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:9> , <NUM_LIT:8> , <NUM_LIT:7> , <NUM_LIT:6> , <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> ] <EOL> lista_validacao_dois = [ <NUM_LIT:6> , <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:9> , <NUM_LIT:8> , <NUM_LIT:7> , <NUM_LIT:6> , <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> ] <EOL> soma = <NUM_LIT:0> <EOL> id = <NUM_LIT:0> <EOL> for numero in cnpj : <EOL> try : <EOL> lista_validacao_um [ id ] <EOL> except : <EOL> break <EOL> soma += int ( numero ) * int ( lista_validacao_um [ id ] ) <EOL> id += <NUM_LIT:1> <EOL> soma %= <NUM_LIT:11> <EOL> if soma < <NUM_LIT:2> : <EOL> digito_um = <NUM_LIT:0> <EOL> else : <EOL> digito_um = <NUM_LIT:11> - soma <EOL> digito_um = str ( digito_um ) <EOL> soma = <NUM_LIT:0> <EOL> id = <NUM_LIT:0> <EOL> cnpj += digito_um <EOL> for numero in cnpj : <EOL> try : <EOL> lista_validacao_dois [ id ] <EOL> except : <EOL> break <EOL> soma += int ( numero ) * int ( lista_validacao_dois [ id ] ) <EOL> id += <NUM_LIT:1> <EOL> soma = soma % <NUM_LIT:11> <EOL> if soma < <NUM_LIT:2> : <EOL> digito_dois = <NUM_LIT:0> <EOL> else : <EOL> digito_dois = <NUM_LIT:11> - soma <EOL> digito_dois = str ( digito_dois ) <EOL> return [ digito_um , digito_dois ] <EOL> @ staticmethod <EOL> def format ( cnpj ) : <EOL> """<STR_LIT>""" <EOL> return "<STR_LIT>" % ( <EOL> cnpj [ <NUM_LIT:0> : <NUM_LIT:2> ] , cnpj [ <NUM_LIT:2> : <NUM_LIT:5> ] , cnpj [ <NUM_LIT:5> : <NUM_LIT:8> ] , cnpj [ <NUM_LIT:8> : <NUM_LIT:12> ] , cnpj [ <NUM_LIT:12> : <NUM_LIT> ] ) </s>
