package urn

import (
	"fmt"

	scimschema "github.com/leodido/go-urn/scim/schema"
)

var (
	errPrefix              = "expecting the prefix to be the \"urn\" string (whatever case) [col %d]"
	errIdentifier          = "expecting the identifier to be string (1..31 alnum chars, also containing dashes but not at its beginning) [col %d]"
	errSpecificString      = "expecting the specific string to be a string containing alnum, hex, or others ([()+,-.:=@;$_!*']) chars [col %d]"
	errNoUrnWithinID       = "expecting the identifier to not contain the \"urn\" reserved string [col %d]"
	errHex                 = "expecting the percent encoded chars to be well-formed (%%alnum{2}) [col %d]"
	errSCIMNamespace       = "expecing the SCIM namespace identifier (ietf:params:scim) [col %d]"
	errSCIMType            = "expecting a correct SCIM type (schemas, api, param) [col %d]"
	errSCIMName            = "expecting one or more alnum char in the SCIM name part [col %d]"
	errSCIMOther           = "expecting a well-formed other SCIM part [col %d]"
	errSCIMOtherIncomplete = "expecting a not empty SCIM other part after colon [col %d]"
	err8141InformalID      = "informal URN namespace must be in the form urn-[1-9][0-9] [col %d]"
	err8141SpecificString  = "expecting the specific string to contain alnum, hex, or others ([~&()+,-.:=@;$_!*'] or [/?] not in first position) chars [col %d]"
	err8141Identifier      = "expecting the indentifier to be a string with (length 2 to 32 chars) containing alnum (or dashes) not starting or ending with a dash [col %d]"
	err8141RComponentStart = "expecting only one r-component (starting with the ?+ sequence) [col %d]"
	err8141QComponentStart = "expecting only one q-component (starting with the ?= sequence) [col %d]"
	err8141MalformedRComp  = "expecting a non-empty r-component containing alnum, hex, or others ([~&()+,-.:=@;$_!*'] or [/?] but not at its beginning) [col %d]"
	err8141MalformedQComp  = "expecting a non-empty q-component containing alnum, hex, or others ([~&()+,-.:=@;$_!*'] or [/?] but not at its beginning) [col %d]"
)
var _toStateActions []byte = []byte{
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 33, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0,
}

var _eofActions []byte = []byte{
	0, 1, 1, 1, 1, 4, 6, 6,
	6, 6, 6, 6, 6, 6, 6, 6,
	6, 6, 6, 6, 6, 6, 6, 6,
	6, 6, 6, 6, 6, 6, 6, 6,
	6, 6, 6, 6, 6, 6, 8, 9,
	9, 4, 4, 11, 1, 1, 1, 1,
	12, 12, 12, 12, 12, 12, 12, 12,
	12, 12, 12, 12, 12, 12, 12, 12,
	12, 14, 14, 14, 14, 16, 18, 20,
	20, 14, 14, 14, 14, 14, 14, 14,
	14, 14, 14, 1, 1, 1, 1, 21,
	22, 22, 22, 22, 22, 22, 22, 22,
	22, 22, 22, 22, 22, 22, 22, 22,
	22, 22, 22, 22, 22, 22, 22, 22,
	22, 22, 22, 22, 22, 22, 22, 22,
	23, 24, 24, 25, 25, 0, 26, 28,
	28, 29, 29, 30, 30, 26, 26, 31,
	31, 22, 22, 22, 22, 22, 22, 22,
	22, 22, 22, 22, 22, 22, 22, 22,
	22, 22, 22, 22, 22, 22, 22, 22,
	22, 22, 22, 22, 22, 22, 22, 21,
	21, 22, 22, 22, 34, 34, 35, 37,
	37, 38, 40, 41, 41, 38, 42, 42,
	42, 44, 42, 48, 48, 48, 50, 44,
	50, 0,
}

const start int = 1
const firstFinal int = 172

const enScimOnly int = 44
const enRfc8141Only int = 83
const enFail int = 193
const enMain int = 1

// Machine is the interface representing the FSM
type Machine interface {
	Error() error
	Parse(input []byte) (*URN, error)
	WithParsingMode(ParsingMode)
}

type machine struct {
	data           []byte
	cs             int
	p, pe, eof, pb int
	err            error
	startParsingAt int
	parsingMode    ParsingMode
	parsingModeSet bool
}

// NewMachine creates a new FSM able to parse RFC 2141 strings.
func NewMachine(options ...Option) Machine {
	m := &machine{
		parsingModeSet: false,
	}

	for _, o := range options {
		o(m)
	}
	// Set default parsing mode
	if !m.parsingModeSet {
		m.WithParsingMode(DefaultParsingMode)
	}

	return m
}

// Err returns the error that occurred on the last call to Parse.
//
// If the result is nil, then the line was parsed successfully.
func (m *machine) Error() error {
	return m.err
}

func (m *machine) text() []byte {
	return m.data[m.pb:m.p]
}

// Parse parses the input byte array as a RFC 2141 or RFC7643 string.
func (m *machine) Parse(input []byte) (*URN, error) {
	m.data = input
	m.p = 0
	m.pb = 0
	m.pe = len(input)
	m.eof = len(input)
	m.err = nil
	m.cs = m.startParsingAt
	output := &URN{
		tolower: []int{},
	}
	{
		if (m.p) == (m.pe) {
			goto _testEof
		}
		if m.cs == 0 {
			goto _out
		}
	_resume:
		switch m.cs {
		case 1:
			switch (m.data)[(m.p)] {
			case 85:
				goto tr1
			case 117:
				goto tr1
			}
			goto tr0
		case 0:
			goto _out
		case 2:
			switch (m.data)[(m.p)] {
			case 82:
				goto tr2
			case 114:
				goto tr2
			}
			goto tr0
		case 3:
			switch (m.data)[(m.p)] {
			case 78:
				goto tr3
			case 110:
				goto tr3
			}
			goto tr0
		case 4:
			if (m.data)[(m.p)] == 58 {
				goto tr4
			}
			goto tr0
		case 5:
			switch (m.data)[(m.p)] {
			case 85:
				goto tr7
			case 117:
				goto tr7
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr6
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr6
				}
			default:
				goto tr6
			}
			goto tr5
		case 6:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr9
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr9
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr9
				}
			default:
				goto tr9
			}
			goto tr8
		case 7:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr11
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr11
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr11
				}
			default:
				goto tr11
			}
			goto tr8
		case 8:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr12
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr12
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr12
				}
			default:
				goto tr12
			}
			goto tr8
		case 9:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr13
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr13
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr13
				}
			default:
				goto tr13
			}
			goto tr8
		case 10:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr14
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr14
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr14
				}
			default:
				goto tr14
			}
			goto tr8
		case 11:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr15
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr15
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr15
				}
			default:
				goto tr15
			}
			goto tr8
		case 12:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr16
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr16
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr16
				}
			default:
				goto tr16
			}
			goto tr8
		case 13:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr17
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr17
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr17
				}
			default:
				goto tr17
			}
			goto tr8
		case 14:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr18
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr18
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr18
				}
			default:
				goto tr18
			}
			goto tr8
		case 15:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr19
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr19
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr19
				}
			default:
				goto tr19
			}
			goto tr8
		case 16:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr20
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr20
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr20
				}
			default:
				goto tr20
			}
			goto tr8
		case 17:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr21
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr21
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr21
				}
			default:
				goto tr21
			}
			goto tr8
		case 18:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr22
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr22
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr22
				}
			default:
				goto tr22
			}
			goto tr8
		case 19:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr23
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr23
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr23
				}
			default:
				goto tr23
			}
			goto tr8
		case 20:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr24
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr24
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr24
				}
			default:
				goto tr24
			}
			goto tr8
		case 21:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr25
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr25
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr25
				}
			default:
				goto tr25
			}
			goto tr8
		case 22:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr26
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr26
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr26
				}
			default:
				goto tr26
			}
			goto tr8
		case 23:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr27
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr27
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr27
				}
			default:
				goto tr27
			}
			goto tr8
		case 24:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr28
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr28
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr28
				}
			default:
				goto tr28
			}
			goto tr8
		case 25:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr29
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr29
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr29
				}
			default:
				goto tr29
			}
			goto tr8
		case 26:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr30
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr30
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr30
				}
			default:
				goto tr30
			}
			goto tr8
		case 27:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr31
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr31
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr31
				}
			default:
				goto tr31
			}
			goto tr8
		case 28:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr32
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr32
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr32
				}
			default:
				goto tr32
			}
			goto tr8
		case 29:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr33
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr33
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr33
				}
			default:
				goto tr33
			}
			goto tr8
		case 30:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr34
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr34
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr34
				}
			default:
				goto tr34
			}
			goto tr8
		case 31:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr35
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr35
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr35
				}
			default:
				goto tr35
			}
			goto tr8
		case 32:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr36
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr36
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr36
				}
			default:
				goto tr36
			}
			goto tr8
		case 33:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr37
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr37
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr37
				}
			default:
				goto tr37
			}
			goto tr8
		case 34:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr38
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr38
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr38
				}
			default:
				goto tr38
			}
			goto tr8
		case 35:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr39
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr39
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr39
				}
			default:
				goto tr39
			}
			goto tr8
		case 36:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr40
			case 58:
				goto tr10
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr40
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr40
				}
			default:
				goto tr40
			}
			goto tr8
		case 37:
			if (m.data)[(m.p)] == 58 {
				goto tr10
			}
			goto tr8
		case 38:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr42
			case 36:
				goto tr42
			case 37:
				goto tr43
			case 61:
				goto tr42
			case 95:
				goto tr42
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 39 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr42
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr42
					}
				case (m.data)[(m.p)] >= 64:
					goto tr42
				}
			default:
				goto tr42
			}
			goto tr41
		case 172:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr212
			case 36:
				goto tr212
			case 37:
				goto tr213
			case 61:
				goto tr212
			case 95:
				goto tr212
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 39 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr212
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr212
					}
				case (m.data)[(m.p)] >= 64:
					goto tr212
				}
			default:
				goto tr212
			}
			goto tr41
		case 39:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr45
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr45
				}
			default:
				goto tr46
			}
			goto tr44
		case 40:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr47
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr47
				}
			default:
				goto tr48
			}
			goto tr44
		case 173:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr212
			case 36:
				goto tr212
			case 37:
				goto tr213
			case 61:
				goto tr212
			case 95:
				goto tr212
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 39 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr212
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr212
					}
				case (m.data)[(m.p)] >= 64:
					goto tr212
				}
			default:
				goto tr212
			}
			goto tr44
		case 41:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr9
			case 58:
				goto tr10
			case 82:
				goto tr49
			case 114:
				goto tr49
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr9
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr9
				}
			default:
				goto tr9
			}
			goto tr5
		case 42:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr11
			case 58:
				goto tr10
			case 78:
				goto tr50
			case 110:
				goto tr50
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr11
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr11
				}
			default:
				goto tr11
			}
			goto tr5
		case 43:
			if (m.data)[(m.p)] == 45 {
				goto tr12
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr12
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr12
				}
			default:
				goto tr12
			}
			goto tr51
		case 44:
			switch (m.data)[(m.p)] {
			case 85:
				goto tr52
			case 117:
				goto tr52
			}
			goto tr0
		case 45:
			switch (m.data)[(m.p)] {
			case 82:
				goto tr53
			case 114:
				goto tr53
			}
			goto tr0
		case 46:
			switch (m.data)[(m.p)] {
			case 78:
				goto tr54
			case 110:
				goto tr54
			}
			goto tr0
		case 47:
			if (m.data)[(m.p)] == 58 {
				goto tr55
			}
			goto tr0
		case 48:
			if (m.data)[(m.p)] == 105 {
				goto tr57
			}
			goto tr56
		case 49:
			if (m.data)[(m.p)] == 101 {
				goto tr58
			}
			goto tr56
		case 50:
			if (m.data)[(m.p)] == 116 {
				goto tr59
			}
			goto tr56
		case 51:
			if (m.data)[(m.p)] == 102 {
				goto tr60
			}
			goto tr56
		case 52:
			if (m.data)[(m.p)] == 58 {
				goto tr61
			}
			goto tr56
		case 53:
			if (m.data)[(m.p)] == 112 {
				goto tr62
			}
			goto tr56
		case 54:
			if (m.data)[(m.p)] == 97 {
				goto tr63
			}
			goto tr56
		case 55:
			if (m.data)[(m.p)] == 114 {
				goto tr64
			}
			goto tr56
		case 56:
			if (m.data)[(m.p)] == 97 {
				goto tr65
			}
			goto tr56
		case 57:
			if (m.data)[(m.p)] == 109 {
				goto tr66
			}
			goto tr56
		case 58:
			if (m.data)[(m.p)] == 115 {
				goto tr67
			}
			goto tr56
		case 59:
			if (m.data)[(m.p)] == 58 {
				goto tr68
			}
			goto tr56
		case 60:
			if (m.data)[(m.p)] == 115 {
				goto tr69
			}
			goto tr56
		case 61:
			if (m.data)[(m.p)] == 99 {
				goto tr70
			}
			goto tr56
		case 62:
			if (m.data)[(m.p)] == 105 {
				goto tr71
			}
			goto tr56
		case 63:
			if (m.data)[(m.p)] == 109 {
				goto tr72
			}
			goto tr56
		case 64:
			if (m.data)[(m.p)] == 58 {
				goto tr73
			}
			goto tr56
		case 65:
			switch (m.data)[(m.p)] {
			case 97:
				goto tr75
			case 112:
				goto tr76
			case 115:
				goto tr77
			}
			goto tr74
		case 66:
			if (m.data)[(m.p)] == 112 {
				goto tr78
			}
			goto tr74
		case 67:
			if (m.data)[(m.p)] == 105 {
				goto tr79
			}
			goto tr74
		case 68:
			if (m.data)[(m.p)] == 58 {
				goto tr80
			}
			goto tr74
		case 69:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr82
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr82
				}
			default:
				goto tr82
			}
			goto tr81
		case 174:
			if (m.data)[(m.p)] == 58 {
				goto tr215
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr214
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr214
				}
			default:
				goto tr214
			}
			goto tr81
		case 70:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr84
			case 36:
				goto tr84
			case 37:
				goto tr85
			case 61:
				goto tr84
			case 95:
				goto tr84
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 39 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr84
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr84
					}
				case (m.data)[(m.p)] >= 64:
					goto tr84
				}
			default:
				goto tr84
			}
			goto tr83
		case 175:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr216
			case 36:
				goto tr216
			case 37:
				goto tr217
			case 61:
				goto tr216
			case 95:
				goto tr216
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 39 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr216
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr216
					}
				case (m.data)[(m.p)] >= 64:
					goto tr216
				}
			default:
				goto tr216
			}
			goto tr83
		case 71:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr87
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr87
				}
			default:
				goto tr88
			}
			goto tr86
		case 72:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr89
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr89
				}
			default:
				goto tr90
			}
			goto tr86
		case 176:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr216
			case 36:
				goto tr216
			case 37:
				goto tr217
			case 61:
				goto tr216
			case 95:
				goto tr216
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 39 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr216
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr216
					}
				case (m.data)[(m.p)] >= 64:
					goto tr216
				}
			default:
				goto tr216
			}
			goto tr86
		case 73:
			if (m.data)[(m.p)] == 97 {
				goto tr91
			}
			goto tr74
		case 74:
			if (m.data)[(m.p)] == 114 {
				goto tr92
			}
			goto tr74
		case 75:
			if (m.data)[(m.p)] == 97 {
				goto tr93
			}
			goto tr74
		case 76:
			if (m.data)[(m.p)] == 109 {
				goto tr79
			}
			goto tr74
		case 77:
			if (m.data)[(m.p)] == 99 {
				goto tr94
			}
			goto tr74
		case 78:
			if (m.data)[(m.p)] == 104 {
				goto tr95
			}
			goto tr74
		case 79:
			if (m.data)[(m.p)] == 101 {
				goto tr96
			}
			goto tr74
		case 80:
			if (m.data)[(m.p)] == 109 {
				goto tr97
			}
			goto tr74
		case 81:
			if (m.data)[(m.p)] == 97 {
				goto tr98
			}
			goto tr74
		case 82:
			if (m.data)[(m.p)] == 115 {
				goto tr79
			}
			goto tr74
		case 83:
			switch (m.data)[(m.p)] {
			case 85:
				goto tr99
			case 117:
				goto tr99
			}
			goto tr0
		case 84:
			switch (m.data)[(m.p)] {
			case 82:
				goto tr100
			case 114:
				goto tr100
			}
			goto tr0
		case 85:
			switch (m.data)[(m.p)] {
			case 78:
				goto tr101
			case 110:
				goto tr101
			}
			goto tr0
		case 86:
			if (m.data)[(m.p)] == 58 {
				goto tr102
			}
			goto tr0
		case 87:
			switch (m.data)[(m.p)] {
			case 85:
				goto tr105
			case 117:
				goto tr105
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr104
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr104
				}
			default:
				goto tr104
			}
			goto tr103
		case 88:
			if (m.data)[(m.p)] == 45 {
				goto tr107
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr108
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr108
				}
			default:
				goto tr108
			}
			goto tr106
		case 89:
			if (m.data)[(m.p)] == 45 {
				goto tr109
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr110
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr110
				}
			default:
				goto tr110
			}
			goto tr106
		case 90:
			if (m.data)[(m.p)] == 45 {
				goto tr111
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr112
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr112
				}
			default:
				goto tr112
			}
			goto tr106
		case 91:
			if (m.data)[(m.p)] == 45 {
				goto tr113
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr114
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr114
				}
			default:
				goto tr114
			}
			goto tr106
		case 92:
			if (m.data)[(m.p)] == 45 {
				goto tr115
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr116
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr116
				}
			default:
				goto tr116
			}
			goto tr106
		case 93:
			if (m.data)[(m.p)] == 45 {
				goto tr117
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr118
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr118
				}
			default:
				goto tr118
			}
			goto tr106
		case 94:
			if (m.data)[(m.p)] == 45 {
				goto tr119
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr120
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr120
				}
			default:
				goto tr120
			}
			goto tr106
		case 95:
			if (m.data)[(m.p)] == 45 {
				goto tr121
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr122
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr122
				}
			default:
				goto tr122
			}
			goto tr106
		case 96:
			if (m.data)[(m.p)] == 45 {
				goto tr123
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr124
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr124
				}
			default:
				goto tr124
			}
			goto tr106
		case 97:
			if (m.data)[(m.p)] == 45 {
				goto tr125
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr126
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr126
				}
			default:
				goto tr126
			}
			goto tr106
		case 98:
			if (m.data)[(m.p)] == 45 {
				goto tr127
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr128
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr128
				}
			default:
				goto tr128
			}
			goto tr106
		case 99:
			if (m.data)[(m.p)] == 45 {
				goto tr129
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr130
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr130
				}
			default:
				goto tr130
			}
			goto tr106
		case 100:
			if (m.data)[(m.p)] == 45 {
				goto tr131
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr132
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr132
				}
			default:
				goto tr132
			}
			goto tr106
		case 101:
			if (m.data)[(m.p)] == 45 {
				goto tr133
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr134
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr134
				}
			default:
				goto tr134
			}
			goto tr106
		case 102:
			if (m.data)[(m.p)] == 45 {
				goto tr135
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr136
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr136
				}
			default:
				goto tr136
			}
			goto tr106
		case 103:
			if (m.data)[(m.p)] == 45 {
				goto tr137
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr138
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr138
				}
			default:
				goto tr138
			}
			goto tr106
		case 104:
			if (m.data)[(m.p)] == 45 {
				goto tr139
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr140
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr140
				}
			default:
				goto tr140
			}
			goto tr106
		case 105:
			if (m.data)[(m.p)] == 45 {
				goto tr141
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr142
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr142
				}
			default:
				goto tr142
			}
			goto tr106
		case 106:
			if (m.data)[(m.p)] == 45 {
				goto tr143
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr144
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr144
				}
			default:
				goto tr144
			}
			goto tr106
		case 107:
			if (m.data)[(m.p)] == 45 {
				goto tr145
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr146
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr146
				}
			default:
				goto tr146
			}
			goto tr106
		case 108:
			if (m.data)[(m.p)] == 45 {
				goto tr147
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr148
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr148
				}
			default:
				goto tr148
			}
			goto tr106
		case 109:
			if (m.data)[(m.p)] == 45 {
				goto tr149
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr150
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr150
				}
			default:
				goto tr150
			}
			goto tr106
		case 110:
			if (m.data)[(m.p)] == 45 {
				goto tr151
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr152
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr152
				}
			default:
				goto tr152
			}
			goto tr106
		case 111:
			if (m.data)[(m.p)] == 45 {
				goto tr153
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr154
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr154
				}
			default:
				goto tr154
			}
			goto tr106
		case 112:
			if (m.data)[(m.p)] == 45 {
				goto tr155
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr156
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr156
				}
			default:
				goto tr156
			}
			goto tr106
		case 113:
			if (m.data)[(m.p)] == 45 {
				goto tr157
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr158
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr158
				}
			default:
				goto tr158
			}
			goto tr106
		case 114:
			if (m.data)[(m.p)] == 45 {
				goto tr159
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr160
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr160
				}
			default:
				goto tr160
			}
			goto tr106
		case 115:
			if (m.data)[(m.p)] == 45 {
				goto tr161
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr162
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr162
				}
			default:
				goto tr162
			}
			goto tr106
		case 116:
			if (m.data)[(m.p)] == 45 {
				goto tr163
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr164
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr164
				}
			default:
				goto tr164
			}
			goto tr106
		case 117:
			if (m.data)[(m.p)] == 45 {
				goto tr165
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr166
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr166
				}
			default:
				goto tr166
			}
			goto tr106
		case 118:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr167
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr167
				}
			default:
				goto tr167
			}
			goto tr106
		case 119:
			if (m.data)[(m.p)] == 58 {
				goto tr168
			}
			goto tr106
		case 120:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr170
			case 37:
				goto tr171
			case 61:
				goto tr170
			case 95:
				goto tr170
			case 126:
				goto tr170
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr170
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr170
					}
				case (m.data)[(m.p)] >= 64:
					goto tr170
				}
			default:
				goto tr170
			}
			goto tr169
		case 177:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr218
			case 35:
				goto tr219
			case 37:
				goto tr220
			case 61:
				goto tr218
			case 63:
				goto tr221
			case 95:
				goto tr218
			case 126:
				goto tr218
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr218
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr218
				}
			default:
				goto tr218
			}
			goto tr169
		case 178:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr222
			case 37:
				goto tr223
			case 61:
				goto tr222
			case 95:
				goto tr222
			case 126:
				goto tr222
			}
			switch {
			case (m.data)[(m.p)] < 63:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr222
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr222
				}
			default:
				goto tr222
			}
			goto tr183
		case 179:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr224
			case 37:
				goto tr225
			case 61:
				goto tr224
			case 95:
				goto tr224
			case 126:
				goto tr224
			}
			switch {
			case (m.data)[(m.p)] < 63:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr224
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr224
				}
			default:
				goto tr224
			}
			goto tr183
		case 121:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr173
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr173
				}
			default:
				goto tr174
			}
			goto tr172
		case 122:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr175
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr175
				}
			default:
				goto tr176
			}
			goto tr172
		case 180:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr224
			case 37:
				goto tr225
			case 61:
				goto tr224
			case 95:
				goto tr224
			case 126:
				goto tr224
			}
			switch {
			case (m.data)[(m.p)] < 63:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr224
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr224
				}
			default:
				goto tr224
			}
			goto tr172
		case 123:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr178
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr178
				}
			default:
				goto tr179
			}
			goto tr177
		case 124:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr180
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr180
				}
			default:
				goto tr181
			}
			goto tr177
		case 181:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr218
			case 35:
				goto tr219
			case 37:
				goto tr220
			case 61:
				goto tr218
			case 63:
				goto tr221
			case 95:
				goto tr218
			case 126:
				goto tr218
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr218
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr218
				}
			default:
				goto tr218
			}
			goto tr177
		case 125:
			switch (m.data)[(m.p)] {
			case 43:
				goto tr182
			case 61:
				goto tr184
			}
			goto tr183
		case 126:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr186
			case 37:
				goto tr187
			case 61:
				goto tr186
			case 63:
				goto tr188
			case 95:
				goto tr186
			case 126:
				goto tr186
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr186
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr186
					}
				case (m.data)[(m.p)] >= 64:
					goto tr186
				}
			default:
				goto tr186
			}
			goto tr185
		case 182:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr226
			case 35:
				goto tr227
			case 37:
				goto tr228
			case 61:
				goto tr226
			case 63:
				goto tr229
			case 95:
				goto tr226
			case 126:
				goto tr226
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr226
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr226
				}
			default:
				goto tr226
			}
			goto tr185
		case 127:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr190
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr190
				}
			default:
				goto tr191
			}
			goto tr189
		case 128:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr192
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr192
				}
			default:
				goto tr193
			}
			goto tr189
		case 183:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr226
			case 35:
				goto tr227
			case 37:
				goto tr228
			case 61:
				goto tr226
			case 63:
				goto tr229
			case 95:
				goto tr226
			case 126:
				goto tr226
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr226
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr226
				}
			default:
				goto tr226
			}
			goto tr189
		case 184:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr226
			case 35:
				goto tr227
			case 37:
				goto tr228
			case 43:
				goto tr230
			case 61:
				goto tr231
			case 63:
				goto tr229
			case 95:
				goto tr226
			case 126:
				goto tr226
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr226
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr226
				}
			default:
				goto tr226
			}
			goto tr185
		case 185:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr232
			case 35:
				goto tr233
			case 37:
				goto tr234
			case 47:
				goto tr226
			case 61:
				goto tr232
			case 63:
				goto tr235
			case 95:
				goto tr232
			case 126:
				goto tr232
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr232
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr232
				}
			default:
				goto tr232
			}
			goto tr185
		case 186:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr204
			case 35:
				goto tr227
			case 37:
				goto tr237
			case 47:
				goto tr226
			case 61:
				goto tr204
			case 63:
				goto tr229
			case 95:
				goto tr204
			case 126:
				goto tr204
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr204
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr204
				}
			default:
				goto tr204
			}
			goto tr236
		case 187:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr238
			case 35:
				goto tr239
			case 37:
				goto tr240
			case 61:
				goto tr238
			case 63:
				goto tr241
			case 95:
				goto tr238
			case 126:
				goto tr238
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr238
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr238
				}
			default:
				goto tr238
			}
			goto tr203
		case 129:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr195
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr195
				}
			default:
				goto tr196
			}
			goto tr194
		case 130:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr197
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr197
				}
			default:
				goto tr198
			}
			goto tr194
		case 188:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr238
			case 35:
				goto tr239
			case 37:
				goto tr240
			case 61:
				goto tr238
			case 63:
				goto tr241
			case 95:
				goto tr238
			case 126:
				goto tr238
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr238
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr238
				}
			default:
				goto tr238
			}
			goto tr194
		case 189:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr238
			case 35:
				goto tr239
			case 37:
				goto tr240
			case 61:
				goto tr242
			case 63:
				goto tr241
			case 95:
				goto tr238
			case 126:
				goto tr238
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr238
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr238
				}
			default:
				goto tr238
			}
			goto tr203
		case 190:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr243
			case 35:
				goto tr244
			case 37:
				goto tr245
			case 47:
				goto tr238
			case 61:
				goto tr243
			case 63:
				goto tr246
			case 95:
				goto tr243
			case 126:
				goto tr243
			}
			switch {
			case (m.data)[(m.p)] < 64:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 59 {
					goto tr243
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr243
				}
			default:
				goto tr243
			}
			goto tr203
		case 131:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr200
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr200
				}
			default:
				goto tr201
			}
			goto tr199
		case 132:
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr197
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr197
				}
			default:
				goto tr198
			}
			goto tr199
		case 133:
			if (m.data)[(m.p)] == 43 {
				goto tr202
			}
			goto tr185
		case 191:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr232
			case 35:
				goto tr233
			case 37:
				goto tr234
			case 61:
				goto tr232
			case 63:
				goto tr247
			case 95:
				goto tr232
			case 126:
				goto tr232
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr232
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr232
					}
				case (m.data)[(m.p)] >= 64:
					goto tr232
				}
			default:
				goto tr232
			}
			goto tr185
		case 134:
			switch (m.data)[(m.p)] {
			case 43:
				goto tr202
			case 61:
				goto tr184
			}
			goto tr185
		case 135:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr204
			case 37:
				goto tr205
			case 61:
				goto tr204
			case 63:
				goto tr206
			case 95:
				goto tr204
			case 126:
				goto tr204
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr204
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr204
					}
				case (m.data)[(m.p)] >= 64:
					goto tr204
				}
			default:
				goto tr204
			}
			goto tr203
		case 136:
			if (m.data)[(m.p)] == 61 {
				goto tr207
			}
			goto tr203
		case 192:
			switch (m.data)[(m.p)] {
			case 33:
				goto tr243
			case 35:
				goto tr244
			case 37:
				goto tr245
			case 61:
				goto tr243
			case 63:
				goto tr248
			case 95:
				goto tr243
			case 126:
				goto tr243
			}
			switch {
			case (m.data)[(m.p)] < 48:
				if 36 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 46 {
					goto tr243
				}
			case (m.data)[(m.p)] > 59:
				switch {
				case (m.data)[(m.p)] > 90:
					if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
						goto tr243
					}
				case (m.data)[(m.p)] >= 64:
					goto tr243
				}
			default:
				goto tr243
			}
			goto tr203
		case 137:
			if (m.data)[(m.p)] == 58 {
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr167
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr167
				}
			default:
				goto tr167
			}
			goto tr106
		case 138:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr165
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr166
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr166
				}
			default:
				goto tr166
			}
			goto tr106
		case 139:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr163
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr164
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr164
				}
			default:
				goto tr164
			}
			goto tr106
		case 140:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr161
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr162
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr162
				}
			default:
				goto tr162
			}
			goto tr106
		case 141:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr159
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr160
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr160
				}
			default:
				goto tr160
			}
			goto tr106
		case 142:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr157
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr158
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr158
				}
			default:
				goto tr158
			}
			goto tr106
		case 143:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr155
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr156
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr156
				}
			default:
				goto tr156
			}
			goto tr106
		case 144:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr153
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr154
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr154
				}
			default:
				goto tr154
			}
			goto tr106
		case 145:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr151
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr152
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr152
				}
			default:
				goto tr152
			}
			goto tr106
		case 146:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr149
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr150
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr150
				}
			default:
				goto tr150
			}
			goto tr106
		case 147:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr147
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr148
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr148
				}
			default:
				goto tr148
			}
			goto tr106
		case 148:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr145
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr146
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr146
				}
			default:
				goto tr146
			}
			goto tr106
		case 149:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr143
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr144
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr144
				}
			default:
				goto tr144
			}
			goto tr106
		case 150:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr141
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr142
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr142
				}
			default:
				goto tr142
			}
			goto tr106
		case 151:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr139
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr140
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr140
				}
			default:
				goto tr140
			}
			goto tr106
		case 152:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr137
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr138
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr138
				}
			default:
				goto tr138
			}
			goto tr106
		case 153:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr135
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr136
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr136
				}
			default:
				goto tr136
			}
			goto tr106
		case 154:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr133
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr134
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr134
				}
			default:
				goto tr134
			}
			goto tr106
		case 155:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr131
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr132
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr132
				}
			default:
				goto tr132
			}
			goto tr106
		case 156:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr129
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr130
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr130
				}
			default:
				goto tr130
			}
			goto tr106
		case 157:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr127
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr128
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr128
				}
			default:
				goto tr128
			}
			goto tr106
		case 158:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr125
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr126
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr126
				}
			default:
				goto tr126
			}
			goto tr106
		case 159:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr123
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr124
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr124
				}
			default:
				goto tr124
			}
			goto tr106
		case 160:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr121
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr122
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr122
				}
			default:
				goto tr122
			}
			goto tr106
		case 161:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr119
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr120
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr120
				}
			default:
				goto tr120
			}
			goto tr106
		case 162:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr117
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr118
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr118
				}
			default:
				goto tr118
			}
			goto tr106
		case 163:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr115
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr116
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr116
				}
			default:
				goto tr116
			}
			goto tr106
		case 164:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr113
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr114
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr114
				}
			default:
				goto tr114
			}
			goto tr106
		case 165:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr111
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr112
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr112
				}
			default:
				goto tr112
			}
			goto tr106
		case 166:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr109
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr110
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr110
				}
			default:
				goto tr110
			}
			goto tr106
		case 167:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr107
			case 82:
				goto tr208
			case 114:
				goto tr208
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr108
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr108
				}
			default:
				goto tr108
			}
			goto tr103
		case 168:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr109
			case 58:
				goto tr168
			case 78:
				goto tr209
			case 110:
				goto tr209
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr110
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr110
				}
			default:
				goto tr110
			}
			goto tr103
		case 169:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr210
			case 58:
				goto tr168
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr112
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr112
				}
			default:
				goto tr112
			}
			goto tr106
		case 170:
			switch (m.data)[(m.p)] {
			case 45:
				goto tr113
			case 48:
				goto tr211
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 49 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr114
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr211
				}
			default:
				goto tr211
			}
			goto tr106
		case 171:
			if (m.data)[(m.p)] == 45 {
				goto tr115
			}
			switch {
			case (m.data)[(m.p)] < 65:
				if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
					goto tr116
				}
			case (m.data)[(m.p)] > 90:
				if 97 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 122 {
					goto tr116
				}
			default:
				goto tr116
			}
			goto tr106
		case 193:
			switch (m.data)[(m.p)] {
			case 10:
				goto tr183
			case 13:
				goto tr183
			}
			goto tr249
		}

	tr183:
		m.cs = 0
		goto _again
	tr0:
		m.cs = 0
		goto f0
	tr5:
		m.cs = 0
		goto f3
	tr8:
		m.cs = 0
		goto f5
	tr41:
		m.cs = 0
		goto f7
	tr44:
		m.cs = 0
		goto f8
	tr51:
		m.cs = 0
		goto f10
	tr56:
		m.cs = 0
		goto f11
	tr74:
		m.cs = 0
		goto f13
	tr81:
		m.cs = 0
		goto f15
	tr83:
		m.cs = 0
		goto f17
	tr86:
		m.cs = 0
		goto f19
	tr103:
		m.cs = 0
		goto f20
	tr106:
		m.cs = 0
		goto f21
	tr169:
		m.cs = 0
		goto f22
	tr172:
		m.cs = 0
		goto f23
	tr177:
		m.cs = 0
		goto f24
	tr185:
		m.cs = 0
		goto f25
	tr189:
		m.cs = 0
		goto f27
	tr194:
		m.cs = 0
		goto f28
	tr199:
		m.cs = 0
		goto f29
	tr203:
		m.cs = 0
		goto f30
	tr236:
		m.cs = 0
		goto f46
	tr1:
		m.cs = 2
		goto f1
	tr2:
		m.cs = 3
		goto _again
	tr3:
		m.cs = 4
		goto _again
	tr4:
		m.cs = 5
		goto f2
	tr6:
		m.cs = 6
		goto f4
	tr9:
		m.cs = 7
		goto _again
	tr11:
		m.cs = 8
		goto _again
	tr12:
		m.cs = 9
		goto _again
	tr13:
		m.cs = 10
		goto _again
	tr14:
		m.cs = 11
		goto _again
	tr15:
		m.cs = 12
		goto _again
	tr16:
		m.cs = 13
		goto _again
	tr17:
		m.cs = 14
		goto _again
	tr18:
		m.cs = 15
		goto _again
	tr19:
		m.cs = 16
		goto _again
	tr20:
		m.cs = 17
		goto _again
	tr21:
		m.cs = 18
		goto _again
	tr22:
		m.cs = 19
		goto _again
	tr23:
		m.cs = 20
		goto _again
	tr24:
		m.cs = 21
		goto _again
	tr25:
		m.cs = 22
		goto _again
	tr26:
		m.cs = 23
		goto _again
	tr27:
		m.cs = 24
		goto _again
	tr28:
		m.cs = 25
		goto _again
	tr29:
		m.cs = 26
		goto _again
	tr30:
		m.cs = 27
		goto _again
	tr31:
		m.cs = 28
		goto _again
	tr32:
		m.cs = 29
		goto _again
	tr33:
		m.cs = 30
		goto _again
	tr34:
		m.cs = 31
		goto _again
	tr35:
		m.cs = 32
		goto _again
	tr36:
		m.cs = 33
		goto _again
	tr37:
		m.cs = 34
		goto _again
	tr38:
		m.cs = 35
		goto _again
	tr39:
		m.cs = 36
		goto _again
	tr40:
		m.cs = 37
		goto _again
	tr10:
		m.cs = 38
		goto f6
	tr213:
		m.cs = 39
		goto _again
	tr43:
		m.cs = 39
		goto f4
	tr45:
		m.cs = 40
		goto _again
	tr46:
		m.cs = 40
		goto f9
	tr7:
		m.cs = 41
		goto f1
	tr49:
		m.cs = 42
		goto _again
	tr50:
		m.cs = 43
		goto _again
	tr52:
		m.cs = 45
		goto f1
	tr53:
		m.cs = 46
		goto _again
	tr54:
		m.cs = 47
		goto _again
	tr55:
		m.cs = 48
		goto f2
	tr57:
		m.cs = 49
		goto f4
	tr58:
		m.cs = 50
		goto _again
	tr59:
		m.cs = 51
		goto _again
	tr60:
		m.cs = 52
		goto _again
	tr61:
		m.cs = 53
		goto _again
	tr62:
		m.cs = 54
		goto _again
	tr63:
		m.cs = 55
		goto _again
	tr64:
		m.cs = 56
		goto _again
	tr65:
		m.cs = 57
		goto _again
	tr66:
		m.cs = 58
		goto _again
	tr67:
		m.cs = 59
		goto _again
	tr68:
		m.cs = 60
		goto _again
	tr69:
		m.cs = 61
		goto _again
	tr70:
		m.cs = 62
		goto _again
	tr71:
		m.cs = 63
		goto _again
	tr72:
		m.cs = 64
		goto _again
	tr73:
		m.cs = 65
		goto f12
	tr75:
		m.cs = 66
		goto f4
	tr78:
		m.cs = 67
		goto _again
	tr79:
		m.cs = 68
		goto _again
	tr80:
		m.cs = 69
		goto f14
	tr215:
		m.cs = 70
		goto f35
	tr217:
		m.cs = 71
		goto _again
	tr85:
		m.cs = 71
		goto f18
	tr87:
		m.cs = 72
		goto _again
	tr88:
		m.cs = 72
		goto f9
	tr76:
		m.cs = 73
		goto f4
	tr91:
		m.cs = 74
		goto _again
	tr92:
		m.cs = 75
		goto _again
	tr93:
		m.cs = 76
		goto _again
	tr77:
		m.cs = 77
		goto f4
	tr94:
		m.cs = 78
		goto _again
	tr95:
		m.cs = 79
		goto _again
	tr96:
		m.cs = 80
		goto _again
	tr97:
		m.cs = 81
		goto _again
	tr98:
		m.cs = 82
		goto _again
	tr99:
		m.cs = 84
		goto f1
	tr100:
		m.cs = 85
		goto _again
	tr101:
		m.cs = 86
		goto _again
	tr102:
		m.cs = 87
		goto f2
	tr104:
		m.cs = 88
		goto f4
	tr107:
		m.cs = 89
		goto _again
	tr109:
		m.cs = 90
		goto _again
	tr111:
		m.cs = 91
		goto _again
	tr113:
		m.cs = 92
		goto _again
	tr115:
		m.cs = 93
		goto _again
	tr117:
		m.cs = 94
		goto _again
	tr119:
		m.cs = 95
		goto _again
	tr121:
		m.cs = 96
		goto _again
	tr123:
		m.cs = 97
		goto _again
	tr125:
		m.cs = 98
		goto _again
	tr127:
		m.cs = 99
		goto _again
	tr129:
		m.cs = 100
		goto _again
	tr131:
		m.cs = 101
		goto _again
	tr133:
		m.cs = 102
		goto _again
	tr135:
		m.cs = 103
		goto _again
	tr137:
		m.cs = 104
		goto _again
	tr139:
		m.cs = 105
		goto _again
	tr141:
		m.cs = 106
		goto _again
	tr143:
		m.cs = 107
		goto _again
	tr145:
		m.cs = 108
		goto _again
	tr147:
		m.cs = 109
		goto _again
	tr149:
		m.cs = 110
		goto _again
	tr151:
		m.cs = 111
		goto _again
	tr153:
		m.cs = 112
		goto _again
	tr155:
		m.cs = 113
		goto _again
	tr157:
		m.cs = 114
		goto _again
	tr159:
		m.cs = 115
		goto _again
	tr161:
		m.cs = 116
		goto _again
	tr163:
		m.cs = 117
		goto _again
	tr165:
		m.cs = 118
		goto _again
	tr167:
		m.cs = 119
		goto _again
	tr168:
		m.cs = 120
		goto f6
	tr225:
		m.cs = 121
		goto _again
	tr223:
		m.cs = 121
		goto f4
	tr173:
		m.cs = 122
		goto _again
	tr174:
		m.cs = 122
		goto f9
	tr220:
		m.cs = 123
		goto _again
	tr171:
		m.cs = 123
		goto f4
	tr178:
		m.cs = 124
		goto _again
	tr179:
		m.cs = 124
		goto f9
	tr221:
		m.cs = 125
		goto f38
	tr182:
		m.cs = 126
		goto _again
	tr228:
		m.cs = 127
		goto _again
	tr187:
		m.cs = 127
		goto f26
	tr234:
		m.cs = 127
		goto f44
	tr190:
		m.cs = 128
		goto _again
	tr191:
		m.cs = 128
		goto f9
	tr240:
		m.cs = 129
		goto _again
	tr205:
		m.cs = 129
		goto f31
	tr245:
		m.cs = 129
		goto f50
	tr195:
		m.cs = 130
		goto _again
	tr196:
		m.cs = 130
		goto f9
	tr237:
		m.cs = 131
		goto f31
	tr200:
		m.cs = 132
		goto _again
	tr201:
		m.cs = 132
		goto f9
	tr188:
		m.cs = 133
		goto f26
	tr247:
		m.cs = 134
		goto f45
	tr184:
		m.cs = 135
		goto _again
	tr206:
		m.cs = 136
		goto f31
	tr248:
		m.cs = 136
		goto f50
	tr166:
		m.cs = 137
		goto _again
	tr164:
		m.cs = 138
		goto _again
	tr162:
		m.cs = 139
		goto _again
	tr160:
		m.cs = 140
		goto _again
	tr158:
		m.cs = 141
		goto _again
	tr156:
		m.cs = 142
		goto _again
	tr154:
		m.cs = 143
		goto _again
	tr152:
		m.cs = 144
		goto _again
	tr150:
		m.cs = 145
		goto _again
	tr148:
		m.cs = 146
		goto _again
	tr146:
		m.cs = 147
		goto _again
	tr144:
		m.cs = 148
		goto _again
	tr142:
		m.cs = 149
		goto _again
	tr140:
		m.cs = 150
		goto _again
	tr138:
		m.cs = 151
		goto _again
	tr136:
		m.cs = 152
		goto _again
	tr134:
		m.cs = 153
		goto _again
	tr132:
		m.cs = 154
		goto _again
	tr130:
		m.cs = 155
		goto _again
	tr128:
		m.cs = 156
		goto _again
	tr126:
		m.cs = 157
		goto _again
	tr124:
		m.cs = 158
		goto _again
	tr122:
		m.cs = 159
		goto _again
	tr120:
		m.cs = 160
		goto _again
	tr118:
		m.cs = 161
		goto _again
	tr116:
		m.cs = 162
		goto _again
	tr114:
		m.cs = 163
		goto _again
	tr112:
		m.cs = 164
		goto _again
	tr110:
		m.cs = 165
		goto _again
	tr108:
		m.cs = 166
		goto _again
	tr105:
		m.cs = 167
		goto f1
	tr208:
		m.cs = 168
		goto _again
	tr209:
		m.cs = 169
		goto _again
	tr210:
		m.cs = 170
		goto f2
	tr211:
		m.cs = 171
		goto _again
	tr212:
		m.cs = 172
		goto _again
	tr42:
		m.cs = 172
		goto f4
	tr47:
		m.cs = 173
		goto _again
	tr48:
		m.cs = 173
		goto f9
	tr214:
		m.cs = 174
		goto _again
	tr82:
		m.cs = 174
		goto f16
	tr216:
		m.cs = 175
		goto _again
	tr84:
		m.cs = 175
		goto f18
	tr89:
		m.cs = 176
		goto _again
	tr90:
		m.cs = 176
		goto f9
	tr218:
		m.cs = 177
		goto _again
	tr170:
		m.cs = 177
		goto f4
	tr219:
		m.cs = 178
		goto f38
	tr227:
		m.cs = 178
		goto f42
	tr233:
		m.cs = 178
		goto f45
	tr239:
		m.cs = 178
		goto f48
	tr244:
		m.cs = 178
		goto f51
	tr224:
		m.cs = 179
		goto _again
	tr222:
		m.cs = 179
		goto f4
	tr175:
		m.cs = 180
		goto _again
	tr176:
		m.cs = 180
		goto f9
	tr180:
		m.cs = 181
		goto _again
	tr181:
		m.cs = 181
		goto f9
	tr226:
		m.cs = 182
		goto _again
	tr186:
		m.cs = 182
		goto f26
	tr232:
		m.cs = 182
		goto f44
	tr192:
		m.cs = 183
		goto _again
	tr193:
		m.cs = 183
		goto f9
	tr229:
		m.cs = 184
		goto f42
	tr235:
		m.cs = 184
		goto f45
	tr230:
		m.cs = 185
		goto _again
	tr231:
		m.cs = 186
		goto _again
	tr238:
		m.cs = 187
		goto _again
	tr204:
		m.cs = 187
		goto f31
	tr243:
		m.cs = 187
		goto f50
	tr197:
		m.cs = 188
		goto _again
	tr198:
		m.cs = 188
		goto f9
	tr241:
		m.cs = 189
		goto _again
	tr246:
		m.cs = 189
		goto f50
	tr242:
		m.cs = 190
		goto _again
	tr202:
		m.cs = 191
		goto _again
	tr207:
		m.cs = 192
		goto _again
	tr249:
		m.cs = 193
		goto _again

	f4:

		m.pb = m.p

		goto _again
	f9:

		// List of positions in the buffer to later lowercase
		output.tolower = append(output.tolower, m.p-m.pb)

		goto _again
	f2:

		output.prefix = string(m.text())

		goto _again
	f6:

		output.ID = string(m.text())

		goto _again
	f38:

		output.SS = string(m.text())
		// Iterate upper letters lowering them
		for _, i := range output.tolower {
			m.data[m.pb+i] = m.data[m.pb+i] + 32
		}
		output.norm = string(m.text())
		// Revert the buffer to the original
		for _, i := range output.tolower {
			m.data[m.pb+i] = m.data[m.pb+i] - 32
		}

		goto _again
	f0:

		m.err = fmt.Errorf(errPrefix, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f5:

		m.err = fmt.Errorf(errIdentifier, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f7:

		m.err = fmt.Errorf(errSpecificString, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f23:

		if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
			m.err = fmt.Errorf(errHex, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}

		goto _again
	f11:

		m.err = fmt.Errorf(errSCIMNamespace, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f13:

		m.err = fmt.Errorf(errSCIMType, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f15:

		m.err = fmt.Errorf(errSCIMName, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f17:

		if m.p == m.pe {
			m.err = fmt.Errorf(errSCIMOtherIncomplete, m.p-1)
		} else {
			m.err = fmt.Errorf(errSCIMOther, m.p)
		}
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f14:

		output.scim.Type = scimschema.TypeFromString(string(m.text()))

		goto _again
	f16:

		output.scim.pos = m.p

		goto _again
	f35:

		output.scim.Name = string(m.data[output.scim.pos:m.p])

		goto _again
	f18:

		output.scim.pos = m.p

		goto _again
	f22:

		m.err = fmt.Errorf(err8141SpecificString, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f21:

		m.err = fmt.Errorf(err8141Identifier, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f42:

		output.rComponent = string(m.text())

		goto _again
	f48:

		output.qComponent = string(m.text())

		goto _again
	f44:

		if output.rStart {
			m.err = fmt.Errorf(err8141RComponentStart, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}
		output.rStart = true

		goto _again
	f50:

		if output.qStart {
			m.err = fmt.Errorf(err8141QComponentStart, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}
		output.qStart = true

		goto _again
	f25:

		m.err = fmt.Errorf(err8141MalformedRComp, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f30:

		m.err = fmt.Errorf(err8141MalformedQComp, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f1:

		m.pb = m.p

		if m.parsingMode != RFC8141Only {
			// Throw an error when:
			// - we are entering here matching the the prefix in the namespace identifier part
			// - looking ahead (3 chars) we find a colon
			if pos := m.p + 3; pos < m.pe && m.data[pos] == 58 && output.prefix != "" {
				m.err = fmt.Errorf(errNoUrnWithinID, pos)
				(m.p)--

				m.cs = 193
				goto _again

			}
		}

		goto _again
	f12:

		output.ID = string(m.text())

		output.scim = &SCIM{}

		goto _again
	f3:

		m.err = fmt.Errorf(errIdentifier, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		m.err = fmt.Errorf(errPrefix, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f10:

		m.err = fmt.Errorf(errIdentifier, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		m.err = fmt.Errorf(errNoUrnWithinID, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f8:

		if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
			m.err = fmt.Errorf(errHex, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}

		m.err = fmt.Errorf(errSpecificString, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f19:

		if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
			m.err = fmt.Errorf(errHex, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}

		if m.p == m.pe {
			m.err = fmt.Errorf(errSCIMOtherIncomplete, m.p-1)
		} else {
			m.err = fmt.Errorf(errSCIMOther, m.p)
		}
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f24:

		if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
			m.err = fmt.Errorf(errHex, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}

		m.err = fmt.Errorf(err8141SpecificString, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f27:

		if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
			m.err = fmt.Errorf(errHex, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}

		m.err = fmt.Errorf(err8141MalformedRComp, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f28:

		if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
			m.err = fmt.Errorf(errHex, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}

		m.err = fmt.Errorf(err8141MalformedQComp, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f20:

		m.err = fmt.Errorf(err8141Identifier, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		m.err = fmt.Errorf(errPrefix, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f26:

		if output.rStart {
			m.err = fmt.Errorf(err8141RComponentStart, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}
		output.rStart = true

		m.pb = m.p

		goto _again
	f45:

		if output.rStart {
			m.err = fmt.Errorf(err8141RComponentStart, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}
		output.rStart = true

		output.rComponent = string(m.text())

		goto _again
	f31:

		if output.qStart {
			m.err = fmt.Errorf(err8141QComponentStart, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}
		output.qStart = true

		m.pb = m.p

		goto _again
	f51:

		if output.qStart {
			m.err = fmt.Errorf(err8141QComponentStart, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}
		output.qStart = true

		output.qComponent = string(m.text())

		goto _again
	f46:

		m.err = fmt.Errorf(err8141MalformedRComp, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		m.err = fmt.Errorf(err8141MalformedQComp, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again
	f29:

		if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
			m.err = fmt.Errorf(errHex, m.p)
			(m.p)--

			m.cs = 193
			goto _again

		}

		m.err = fmt.Errorf(err8141MalformedRComp, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		m.err = fmt.Errorf(err8141MalformedQComp, m.p)
		(m.p)--

		m.cs = 193
		goto _again

		goto _again

	_again:
		switch _toStateActions[m.cs] {
		case 33:

			(m.p)--

			m.err = fmt.Errorf(err8141InformalID, m.p)
			m.cs = 193
			goto _again
		}

		if m.cs == 0 {
			goto _out
		}
		if (m.p)++; (m.p) != (m.pe) {
			goto _resume
		}
	_testEof:
		{
		}
		if (m.p) == (m.eof) {
			switch _eofActions[m.cs] {
			case 1:

				m.err = fmt.Errorf(errPrefix, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 6:

				m.err = fmt.Errorf(errIdentifier, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 8:

				m.err = fmt.Errorf(errSpecificString, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 24:

				if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
					m.err = fmt.Errorf(errHex, m.p)
					(m.p)--

					m.cs = 193
					goto _again

				}

			case 12:

				m.err = fmt.Errorf(errSCIMNamespace, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 14:

				m.err = fmt.Errorf(errSCIMType, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 16:

				m.err = fmt.Errorf(errSCIMName, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 18:

				if m.p == m.pe {
					m.err = fmt.Errorf(errSCIMOtherIncomplete, m.p-1)
				} else {
					m.err = fmt.Errorf(errSCIMOther, m.p)
				}
				(m.p)--

				m.cs = 193
				goto _again

			case 23:

				m.err = fmt.Errorf(err8141SpecificString, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 22:

				m.err = fmt.Errorf(err8141Identifier, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 26:

				m.err = fmt.Errorf(err8141MalformedRComp, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 31:

				m.err = fmt.Errorf(err8141MalformedQComp, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 34:

				output.SS = string(m.text())
				// Iterate upper letters lowering them
				for _, i := range output.tolower {
					m.data[m.pb+i] = m.data[m.pb+i] + 32
				}
				output.norm = string(m.text())
				// Revert the buffer to the original
				for _, i := range output.tolower {
					m.data[m.pb+i] = m.data[m.pb+i] - 32
				}

				output.kind = RFC2141

			case 38:

				output.SS = string(m.text())
				// Iterate upper letters lowering them
				for _, i := range output.tolower {
					m.data[m.pb+i] = m.data[m.pb+i] + 32
				}
				output.norm = string(m.text())
				// Revert the buffer to the original
				for _, i := range output.tolower {
					m.data[m.pb+i] = m.data[m.pb+i] - 32
				}

				output.kind = RFC8141

			case 4:

				m.err = fmt.Errorf(errIdentifier, m.p)
				(m.p)--

				m.cs = 193
				goto _again

				m.err = fmt.Errorf(errPrefix, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 11:

				m.err = fmt.Errorf(errIdentifier, m.p)
				(m.p)--

				m.cs = 193
				goto _again

				m.err = fmt.Errorf(errNoUrnWithinID, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 9:

				if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
					m.err = fmt.Errorf(errHex, m.p)
					(m.p)--

					m.cs = 193
					goto _again

				}

				m.err = fmt.Errorf(errSpecificString, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 20:

				if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
					m.err = fmt.Errorf(errHex, m.p)
					(m.p)--

					m.cs = 193
					goto _again

				}

				if m.p == m.pe {
					m.err = fmt.Errorf(errSCIMOtherIncomplete, m.p-1)
				} else {
					m.err = fmt.Errorf(errSCIMOther, m.p)
				}
				(m.p)--

				m.cs = 193
				goto _again

			case 25:

				if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
					m.err = fmt.Errorf(errHex, m.p)
					(m.p)--

					m.cs = 193
					goto _again

				}

				m.err = fmt.Errorf(err8141SpecificString, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 28:

				if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
					m.err = fmt.Errorf(errHex, m.p)
					(m.p)--

					m.cs = 193
					goto _again

				}

				m.err = fmt.Errorf(err8141MalformedRComp, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 29:

				if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
					m.err = fmt.Errorf(errHex, m.p)
					(m.p)--

					m.cs = 193
					goto _again

				}

				m.err = fmt.Errorf(err8141MalformedQComp, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 21:

				m.err = fmt.Errorf(err8141Identifier, m.p)
				(m.p)--

				m.cs = 193
				goto _again

				m.err = fmt.Errorf(errPrefix, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 42:

				output.rComponent = string(m.text())

				output.kind = RFC8141

			case 48:

				output.qComponent = string(m.text())

				output.kind = RFC8141

			case 41:

				output.fComponent = string(m.text())

				output.kind = RFC8141

			case 40:

				m.pb = m.p

				output.fComponent = string(m.text())

				output.kind = RFC8141

			case 30:

				if m.parsingMode == RFC2141Only || m.parsingMode == RFC8141Only {
					m.err = fmt.Errorf(errHex, m.p)
					(m.p)--

					m.cs = 193
					goto _again

				}

				m.err = fmt.Errorf(err8141MalformedRComp, m.p)
				(m.p)--

				m.cs = 193
				goto _again

				m.err = fmt.Errorf(err8141MalformedQComp, m.p)
				(m.p)--

				m.cs = 193
				goto _again

			case 35:

				output.scim.Name = string(m.data[output.scim.pos:m.p])

				output.SS = string(m.text())
				// Iterate upper letters lowering them
				for _, i := range output.tolower {
					m.data[m.pb+i] = m.data[m.pb+i] + 32
				}
				output.norm = string(m.text())
				// Revert the buffer to the original
				for _, i := range output.tolower {
					m.data[m.pb+i] = m.data[m.pb+i] - 32
				}

				output.kind = RFC7643

			case 37:

				output.scim.Other = string(m.data[output.scim.pos:m.p])

				output.SS = string(m.text())
				// Iterate upper letters lowering them
				for _, i := range output.tolower {
					m.data[m.pb+i] = m.data[m.pb+i] + 32
				}
				output.norm = string(m.text())
				// Revert the buffer to the original
				for _, i := range output.tolower {
					m.data[m.pb+i] = m.data[m.pb+i] - 32
				}

				output.kind = RFC7643

			case 44:

				if output.rStart {
					m.err = fmt.Errorf(err8141RComponentStart, m.p)
					(m.p)--

					m.cs = 193
					goto _again

				}
				output.rStart = true

				output.rComponent = string(m.text())

				output.kind = RFC8141

			case 50:

				if output.qStart {
					m.err = fmt.Errorf(err8141QComponentStart, m.p)
					(m.p)--

					m.cs = 193
					goto _again

				}
				output.qStart = true

				output.qComponent = string(m.text())

				output.kind = RFC8141
			}
		}

	_out:
		{
		}
	}

	if m.cs < firstFinal || m.cs == enFail {
		return nil, m.err
	}

	return output, nil
}

func (m *machine) WithParsingMode(x ParsingMode) {
	m.parsingMode = x
	switch m.parsingMode {
	case RFC2141Only:
		m.startParsingAt = enMain
	case RFC8141Only:
		m.startParsingAt = enRfc8141Only
	case RFC7643Only:
		m.startParsingAt = enScimOnly
	}
	m.parsingModeSet = true
}