# -*- coding: cp1251 -*-
import re
mail_pattern = re.compile(
'[a-zA-Z0-9_][a-zA-Z0-9_.-]{0,15}@(mail\.ru|inbox\.ru|bk\.ru|list\.ru|corp\.mail\.ru)$'
)
password_pattern = re.compile('[\040-\176]{4,}$')
number_pattern = re.compile('\+{0,1}[0-9]+$')
upper_ascii_pattern = re.compile('[\200-\377]+')
invalid_chars = re.compile(
'[\000-\011\013\014\016-\037\202\204-\207\210\211\213\221-\227\230\231\233\271]'
)
RTF_H = '{\\rtf1\\ansi\\ansicpg1251\\deff0\\deflang1049{\\fonttbl{\\f0\\fnil\\fcharset204 Tahoma;}}\r\n{\\colortbl ;\\red0\\green0\\blue0;}\r\n\\viewkind4\\uc1\\pard\\cf1\\f0\\fs18 '
RTF_T = '\\par\r\n}\r\n'
INTRANSTBL = [chr(i) for i in range(0x0,0x09)+range(0x0b,0x0d)+range(0x7f,256)]
OUTTRANSTBL = [hex(ord(i)).replace('0x',"\\'") for i in INTRANSTBL]
INSYMS = ['\\','\r','\n','\t','{','}']
OUTSYMS = ['\\\\','','\\par\r\n','\\tab','\\{','\\}']
'''INSMILES = [
':)',';)',':-))',';-P','8-)','):-D','}:o)','$-)',
":-'",'):-(','8-(',":'(",":''()",'S:-o','(:-o','8-0',
'8-[o]','):-p',':-(','):-$',':-D',':-E',':devil:',':vampire:',
':-][',':-|','B-j',':~o','(_I_)',':heart:',':-*',':sleepy:',
':cool:',':viva:',':ok:',':yo:',':suxx:',':think:',':figu:',':kulak:',':fuck:'
]
OUTSMILES = [
'<###20###img010>','<###20###img011>','<###20###img012>','<###20###img013>',
'<###20###img014>','<###20###img030>','<###20###img016>','<###20###img017>',
'<###20###img018>','<###20###img028>','<###20###img020>','<###20###img021>',
'<###20###img022>','<###20###img023>','<###20###img024>','<###20###img025>',
'<###20###img026>','<###20###img027>','<###20###img019>','<###20###img029>',
'<###20###img015>','<###20###img031>','<###20###img032>','<###20###img033>',
'<###20###img034>','<###20###img035>','<###20###img036>','<###20###img037>',
'<###20###img038>','<###20###img039>','<###20###img040>','<###20###img041>',
'<###20###img000>','<###20###img001>','<###20###img002>','<###20###img003>',
'<###20###img005>','<###20###img006>','<###20###img007>','<###20###img008>',
'<###20###img009>'
]'''
INSMILES = ["0:)", ":-&", ":&", ":-D", ":D", ":-P", ":P", ":-$", ":$", ":'-(", ":'(",
"%-)", "%)", "B-)", "B)", ":-@", ":@", "B-)", "B)", "(B)", ":-O", ":O", "@};-", "(F)",
"(Y)", ":-*", ":*", ":-$", ":$", ":-)", ":)", "(8)", ":-\"", ":\"", ":-$", ":$", ":-D",
":D", "0:)", ":-(", ":(", ":-?", ":?", ":-O", ":O", ">-)", ">)", ":-)", ":)", ":-\"",
":\"", "|-)", "|)", ";-)", ";)", ":-B", "[:]|||[:]", "{:€", ":-)", ":)", ";-)", ";)",
":-))", ":))", ";-P", ";P", "8-)", "8)", ":-D", ":D", "}:o)", "$-)", "$)", ":-'",
":'", ":-(", ":(", "8-(", "8(", ":'(", ":''()", "S:-o", "S:o", "(:-o", "(:o", "8-0",
"8-[o]", "8[o]", "):-p", "):p", "):-(", "):(", "):-$", "):$", "):-D", "):D", ":-E",
":E", "(6)", "8-x", "8x", ":-][", ":][", ":-|", ":|", "B-j", "Bj", ":~o", "(_I_)",
":-x", ":x", ":-*", ":*", "|-)","|)", "(Y)", ":)>-", "(Y)", ":)>-", ":)>-", "(N)", ":-$",
":$", "*figa*", "=;", "[-(", "[(", "0:)", "(Y)(Y)(Y)", "(X)", "(B)", ":-B", ":B", ":-&",
":&", ":'-(", ":'(", "B-)", "B)", ":-@", ":@", "(C)", ":-@", ":@", ":-&", ":&", "@};-",
"(F)", ":-D", ":D", ":-D:'-(", ":D:'-(", ":-D:'(", ":D:'(", "(E)", ":-L", ":L", ":-*",
":*", ":-x", ":x", "({)", ":-&", ":&", "(R)", ":-$", ":$", ":-(", ":(", "(8)", ":-|",
"|-)", "|)", ":-)", ":)", ":-P", ":P", ":)>-", ":-O", ":O", ":-&", ":&", ":-)", ":)",
">:)", ":-))", ":))", "<):)", ":-@", ":@", ":-O", ":O", ":-P", ":P", "*-:)", "*:)", ":-&",
":&", ":-B", ":B", ":-O", ":O", ":-@", ":@", ":-(", ":(", "B-)", "B)", ":-D", ":D", ";-)",
";)", ":-?", ":?", ":-x", ":x", ":-|", ":|", ":'-(", ":'(", ":'-(", ":'(", "(6)", ":-&",
":&", "%-)", "%)",":-*", ":*", ":-$", ":$", "(X)", "0:)", "8-|", "8|", "(C)", ":-$", ":$",
":-$", ":$"]
OUTSMILES = ["id=400 alt=':Ангелочек:'",
"id=401 alt=':Тошнит:'",
"id=401alt=':Тошнит:'",
"id=402 alt=':Улыбка до ушей:'",
"id=402 alt=':Улыбка до ушей:'",
"id=403 alt=':Дразнюсь:'",
"id=403 alt=':Дразнюсь:'",
"id=404 alt=':Смущаюсь:'",
"id=404 alt=':Смущаюсь:'",
"id=405 alt=':Рыдаю:'",
"id=405 alt=':Рыдаю:'",
"id=406 alt=':Сумасшествие:'",
"id=406 alt=':Сумасшествие:'",
"id=407 alt=':Танцую:'",
"id=407 alt=':Танцую:'",
"id=408 alt=':Чертовски злюсь:'",
"id=408 alt=':Чертовски злюсь:'",
"id=409 alt=':Я круче:'",
"id=409 alt=':Я круче:'",
"id=410 alt=':Пиво:'",
"id=411 alt=':Ты что!:'",
"id=411 alt=':Ты что!:'",
"id=412 alt=':Дарю цветочек:'",
"id=412 alt=':Дарю цветочек:'",
"id=413 alt=':Ок!:'",
"id=414 alt=':Целую:'",
"id=414 alt=':Целую:'",
"id=415 alt=':Поцеловали:'",
"id=415 alt=':Поцеловали:'",
"id=416 alt=':Хихикаю:'",
"id=416 alt=':Хихикаю:'",
"id=417 alt=':Слушаю музыку:'",
"id=418 alt=':Не-а:'",
"id=418 alt=':Не-а:'",
"id=419 alt=':Извини:'",
"id=419 alt=':Извини:'",
"id=420 alt=':Лопну от смеха:'",
"id=420 alt=':Лопну от смеха:'",
"id=421 alt=':Мечтаю:'",
"id=422 alt=':В печали:'",
"id=422 alt=':В печали:'",
"id=423 alt=':Надо подумать:'",
"id=423 alt=':Надо подумать:'",
"id=424 alt=':Ой, ё:'",
"id=424 alt=':Ой, ё:'",
"id=425 alt=':Кричу:'",
"id=425 alt=':Кричу:'",
"id=426 alt=':Улыбаюсь:'",
"id=426 alt=':Улыбаюсь:'",
"id=427 alt=':Не знаю:'",
"id=427 alt=':Не знаю:'",
"id=428 alt=':В изнеможении:'",
"id=428 alt=':В изнеможении:'",
"id=429 alt=':Подмигиваю:'",
"id=429 alt=':Подмигиваю:'",
"id=430 alt=':Уррра!:'",
"id=431 alt=':Бойан:'",
"id=432 alt=':Ктулху:'",
"<###20###img010>", "<###20###img010>", "<###20###img011>", "<###20###img011>",
"<###20###img012>", "<###20###img012>", "<###20###img013>", "<###20###img013>",
"<###20###img014>", "<###20###img014>", "<###20###img015>", "<###20###img015>",
"<###20###img016>", "<###20###img017>", "<###20###img017>", "<###20###img018>",
"<###20###img018>", "<###20###img019>", "<###20###img019>", "<###20###img020>",
"<###20###img020>", "<###20###img021>", "<###20###img022>", "<###20###img023>",
"<###20###img023>", "<###20###img024>", "<###20###img024>", "<###20###img025>",
"<###20###img026>", "<###20###img026>", "<###20###img027>", "<###20###img027>",
"<###20###img028>", "<###20###img028>","<###20###img029>", "<###20###img029>",
"<###20###img030>", "<###20###img030>", "<###20###img031>", "<###20###img031>",
"<###20###img032>", "<###20###img033>", "<###20###img033>", "<###20###img034>",
"<###20###img034>", "<###20###img035>", "<###20###img035>", "<###20###img036>",
"<###20###img036>", "<###20###img037>", "<###20###img038>", "<###20###img039>",
"<###20###img039>", "<###20###img040>", "<###20###img040>", "<###20###img041>",
"<###20###img041>", "<###20###img000>", "<###20###img001>", "<###20###img002>",
"<###20###img003>", "<###20###img004>", "<###20###img005>", "<###20###img006>",
"<###20###img006>", "<###20###img007>", "<###20###img008>", "<###20###img009>",
"<###20###img009>", "id=200 alt=':Ангелочек:'",
"id=201 alt=':Аплодисменты:'",
"id=202 alt=':Красотка:'",
"id=203 alt=':Пиво:'",
"id=204 alt=':Читаю:'",
"id=204 alt=':Читаю:'",
"id=205 alt=':Мёрзну:'",
"id=205 alt=':Мёрзну:'",
"id=206 alt=':Рыдаю:'",
"id=206 alt=':Рыдаю:'",
"id=207 alt=':Танцую:'",
"id=207 alt=':Танцую:'",
"id=208 alt=':Чертовски злюсь:'",
"id=208 alt=':Чертовски злюсь:'",
"id=209 alt=':Жую:'",
"id=210 alt=':Побью:'",
"id=210 alt=':Побью:'",
"id=211 alt=':Побили:'",
"id=211 alt=':Побили:'",
"id=212 alt=':Дарю цветочек:'",
"id=212 alt=':Дарю цветочек:'",
"id=213 alt=':Смеюсь:'",
"id=213 alt=':Смеюсь:'",
"id=214 alt=':Смеюсь и плачу:'",
"id=214 alt=':Смеюсь и плачу:'",
"id=214 alt=':Смеюсь и плачу:'",
"id=214 alt=':Смеюсь и плачу:'",
"id=215 alt=':Подарок:'",
"id=216 alt=':Ворчу:'",
"id=216 alt=':Ворчу:'",
"id=217 alt=':Целую:'",
"id=217 alt=':Целую:'",
"id=218 alt=':Люблю:'",
"id=218 alt=':Люблю:'",
"id=219 alt=':Застрелю:'",
"id=220 alt=':Выпей яду:'",
"id=220 alt=':Выпей яду:'",
"id=221 alt=':Лучезарно:'",
"id=222 alt=':Смущаюсь:'",
"id=222 alt=':Смущаюсь:'",
"id=223 alt=':Расстраиваюсь:'",
"id=223 alt=':Расстраиваюсь:'",
"id=224 alt=':Пою:'",
"id=225 alt=':Скучаю:'",
"id=226 alt=':Засыпаю:'",
"id=226 alt=':Засыпаю:'",
"id=227 alt=':Улыбаюсь:'",
"id=227 alt=':Улыбаюсь:'",
"id=228 alt=':Показываю язык:'",
"id=228 alt=':Показываю язык:'",
"id=229 alt=':Peace!:'",
"id=230 alt=':Удивляюсь:'",
"id=230 alt=':Удивляюсь:'",
"id=231 alt=':Тошнит:'",
"id=231 alt=':Тошнит:'",
"id=300 alt=':Улыбаюсь:'",
"id=300 alt=':Улыбаюсь:'",
"id=301 alt=':Злорадствую:'",
"id=302 alt=':Радуюсь:'",
"id=302 alt=':Радуюсь:'",
"id=303 alt=':Старичок:'",
"id=304 alt=':Свирепствую:'",
"id=304 alt=':Свирепствую:'",
"id=305 alt=':Пугаюсь:'",
"id=305 alt=':Пугаюсь:'",
"id=306 alt=':Показываю язык:'",
"id=306 alt=':Показываю язык:'",
"id=307 alt=':Умник:'",
"id=307 alt=':Умник:'",
"id=308 alt=':Алкоголик:'",
"id=308 alt=':Алкоголик:'",
"id=309 alt=':Вояка:'",
"id=309 alt=':Вояка:'",
"id=310 alt=':Удивляюсь:'",
"id=310 alt=':Удивляюсь:'",
"id=311 alt=':Чертовски злюсь:'",
"id=311 alt=':Чертовски злюсь:'",
"id=312 alt=':Расстраиваюсь:'",
"id=312 alt=':Расстраиваюсь:'",
"id=313 alt=':Панк:'",
"id=313 alt=':Панк:'",
"id=314 alt=':Лопну от смеха:'",
"id=314 alt=':Лопну от смеха:'",
"id=315 alt=':Подмигиваю:'",
"id=315 alt=':Подмигиваю:'",
"id=316 alt=':Думаю:'",
"id=316 alt=':Думаю:'",
"id=317 alt=':Люблю:'",
"id=317 alt=':Люблю:'",
"id=318 alt=':Подавлен:'",
"id=318 alt=':Подавлен:'",
"id=319 alt=':Рыдаю:'",
"id=319 alt=':Рыдаю:'",
"id=320 alt=':Сейчас расплачусь:'",
"id=320 alt=':Сейчас расплачусь:'",
"id=321 alt=':Злюсь:'",
"id=322 alt=':Тошнит:'",
"id=322 alt=':Тошнит:'",
"id=323 alt=':Сумасшествие:'",
"id=323 alt=':Сумасшествие:'",
"id=324 alt=':Целую:'",
"id=324 alt=':Целую:'",
"id=325 alt=':Поцеловали:'",
"id=325 alt=':Поцеловали:'",
"id=326 alt=':Красотка:'",
"id=327 alt=':Ангелочек:'",
"id=328 alt=':Подозрительно:'",
"id=328 alt=':Подозрительно:'",
"id=329 alt=':Жую:'",
"id=330 alt=':Смущаюсь:'",
"id=330 alt=':Смущаюсь:'",
"id=331 alt=':Стыдно:'",
"id=331 alt=':Стыдно:'"]
INCHARS = tuple(INSYMS+INTRANSTBL+INSMILES)
OUTCHARS = tuple(OUTSYMS+OUTTRANSTBL+OUTSMILES)
IN_TRANSLIT_TBL = tuple(["'",chr(0xa8),chr(0xb8)] + [chr(i) for i in range(0xc0,256)])
_lat = [
'a','b','v','g','d','e','zh','z','i','jj','k','l','m','n','o','p','r',
's','t','u','f','kh','c','ch','sh','shh','"','y',"'",'eh','yu','ya'
]
OUT_TRANSLIT_TBL = tuple(['*','Jo','jo'] + [x[0].upper()+x[1:] for x in _lat] + _lat)
UPPER_ASCII = tuple([chr(i) for i in range(128,256)])
NULL_ASCII = tuple(['' for i in range(128,256)])