"""
constants.py from vbe_decoder
Created: 10/18/15

Purpose: Constants used by vbe_decoder
"""

STATE_INIT_COPY = 'STATE_INIT_COPY'
STATE_COPY_INPUT = 'STATE_COPY_INPUT'
STATE_SKIP_ML = 'STATE_SKIP_ML'
STATE_CHECKSUM = 'STATE_CHECKSUM'
STATE_READLEN = 'STATE_READLEN'
STATE_DECODE = 'STATE_DECODE'
STATE_UNESCAPE = 'STATE_UNESCAPE'
STATE_FLUSHING = 'STATE_FLUSHING'
STATE_DBCS = 'STATE_DBCS'
STATE_INIT_READLEN = 'STATE_INIT_READLEN'
STATE_URLENCODE_1 = 'STATE_URLENCODE_1'
STATE_URLENCODE_2 = 'STATE_URLENCODE_2'
STATE_WAIT_FOR_CLOSE = 'STATE_WAIT_FOR_CLOSE'
STATE_WAIT_FOR_OPEN = 'STATE_WAIT_FOR_OPEN'
STATE_HTMLENCODE = 'STATE_HTMLENCODE'

LEN_OUTBUF = 64
LEN_INBUF = 1024

PROLOG_NO_ACTION = 0
PROLOG_CONTINUE = 1
PROLOG_BREAK = 2

RAW_DATA = [
    0x64, 0x37, 0x69, 0x50, 0x7E, 0x2C, 0x22, 0x5A, 0x65, 0x4A, 0x45, 0x72,
    0x61, 0x3A, 0x5B, 0x5E, 0x79, 0x66, 0x5D, 0x59, 0x75, 0x5B, 0x27, 0x4C,
    0x42, 0x76, 0x45, 0x60, 0x63, 0x76, 0x23, 0x62, 0x2A, 0x65, 0x4D, 0x43,
    0x5F, 0x51, 0x33, 0x7E, 0x53, 0x42, 0x4F, 0x52, 0x20, 0x52, 0x20, 0x63,
    0x7A, 0x26, 0x4A, 0x21, 0x54, 0x5A, 0x46, 0x71, 0x38, 0x20, 0x2B, 0x79,
    0x26, 0x66, 0x32, 0x63, 0x2A, 0x57, 0x2A, 0x58, 0x6C, 0x76, 0x7F, 0x2B,
    0x47, 0x7B, 0x46, 0x25, 0x30, 0x52, 0x2C, 0x31, 0x4F, 0x29, 0x6C, 0x3D,
    0x69, 0x49, 0x70, 0x3F, 0x3F, 0x3F, 0x27, 0x78, 0x7B, 0x3F, 0x3F, 0x3F,
    0x67, 0x5F, 0x51, 0x3F, 0x3F, 0x3F, 0x62, 0x29, 0x7A, 0x41, 0x24, 0x7E,
    0x5A, 0x2F, 0x3B, 0x66, 0x39, 0x47, 0x32, 0x33, 0x41, 0x73, 0x6F, 0x77,
    0x4D, 0x21, 0x56, 0x43, 0x75, 0x5F, 0x71, 0x28, 0x26, 0x39, 0x42, 0x78,
    0x7C, 0x46, 0x6E, 0x53, 0x4A, 0x64, 0x48, 0x5C, 0x74, 0x31, 0x48, 0x67,
    0x72, 0x36, 0x7D, 0x6E, 0x4B, 0x68, 0x70, 0x7D, 0x35, 0x49, 0x5D, 0x22,
    0x3F, 0x6A, 0x55, 0x4B, 0x50, 0x3A, 0x6A, 0x69, 0x60, 0x2E, 0x23, 0x6A,
    0x7F, 0x09, 0x71, 0x28, 0x70, 0x6F, 0x35, 0x65, 0x49, 0x7D, 0x74, 0x5C,
    0x24, 0x2C, 0x5D, 0x2D, 0x77, 0x27, 0x54, 0x44, 0x59, 0x37, 0x3F, 0x25,
    0x7B, 0x6D, 0x7C, 0x3D, 0x7C, 0x23, 0x6C, 0x43, 0x6D, 0x34, 0x38, 0x28,
    0x6D, 0x5E, 0x31, 0x4E, 0x5B, 0x39, 0x2B, 0x6E, 0x7F, 0x30, 0x57, 0x36,
    0x6F, 0x4C, 0x54, 0x74, 0x34, 0x34, 0x6B, 0x72, 0x62, 0x4C, 0x25, 0x4E,
    0x33, 0x56, 0x30, 0x56, 0x73, 0x5E, 0x3A, 0x68, 0x73, 0x78, 0x55, 0x09,
    0x57, 0x47, 0x4B, 0x77, 0x32, 0x61, 0x3B, 0x35, 0x24, 0x44, 0x2E, 0x4D,
    0x2F, 0x64, 0x6B, 0x59, 0x4F, 0x44, 0x45, 0x3B, 0x21, 0x5C, 0x2D, 0x37,
    0x68, 0x41, 0x53, 0x36, 0x61, 0x58, 0x58, 0x7A, 0x48, 0x79, 0x22, 0x2E,
    0x09, 0x60, 0x50, 0x75, 0x6B, 0x2D, 0x38, 0x4E, 0x29, 0x55, 0x3D, 0x3F,
    0x51, 0x67, 0x2f]

ENTITY_MAP = {"excl": 33,
              "quot": 34,
              "num": 35,
              "dollar": 36,
              "percent": 37,
              "amp": 38,
              "apos": 39,
              "lpar": 40,
              "rpar": 41,
              "ast": 42,
              "plus": 43,
              "comma": 44,
              "period": 46,
              "colon": 58,
              "semi": 59,
              "lt": 60,
              "equals": 61,
              "gt": 62,
              "quest": 63,
              "commat": 64,
              "lsqb": 91,
              "rsqb": 93,
              "lowbar": 95,
              "lcub": 123,
              "verbar": 124,
              "rcub": 125,
              "tilde": 126,
              None: 0}

MARKER = "#@~^"

PICK_ENCODING = [1, 2, 0, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 0, 2, 0,
                 1, 0, 2, 0, 1, 1, 2, 0, 0, 2, 1, 0, 2, 0, 0, 2,
                 1, 1, 0, 2, 0, 2, 0, 1, 0, 1, 1, 2, 0, 1, 0, 2,
                 1, 0, 2, 0, 1, 1, 2, 0, 0, 1, 1, 2, 0, 1, 0, 2]

VALID_CODEPAGES = [0, 932, 936, 949, 950, 1361]

ESCAPE_MAP = {'#': '\r',
              '&': '\n',
              '!': '<',
              '*': '>',
              '$': '@'}
