local g="\092\046"local V="\092\043"local S="\092\063"local I="\092\047"local J="\040\063\061\046\041"local R="\091\094\047\093"local s=("\040\063\058\037\115\124\036\041"):format(I)local j=("\040\063\058\094\124\037\115\041"):format(I)local X=("\037\115\123\049\044\050\125\037\115"):format(g,s)local l=("\040\063\033\037\115\041"):format(g)local m=("\040\063\033\037\115\037\115\041"):format(j,X)local D=("\040\063\033\037\115\123\048\044\049\125\037\115\041"):format(g,s)local H=("\040\063\033\037\115\041"):format(X)local i=("\091\094\046\037\115\093"):format(I)local h=("\037\115\042\063"):format(R)local C={DOT_LITERAL=g;PLUS_LITERAL=V,QMARK_LITERAL=S,SLASH_LITERAL=I,ONE_CHAR=J,QMARK=R;END_ANCHOR=s,DOTS_SLASH=X,NO_DOT=l;NO_DOTS=m,NO_DOT_SLASH=D;NO_DOTS_SLASH=H;QMARK_NO_DOT=i;STAR=h,START_ANCHOR=j}

local DOT_LITERAL = "\\."
local PLUS_LITERAL = "\\+"
local QMARK_LITERAL = "\\?"
local SLASH_LITERAL = "\\/"
local ONE_CHAR = "(?=.)"
local QMARK = "[^/]"
local END_ANCHOR = ("(?:%s|$)"):format(SLASH_LITERAL)
local START_ANCHOR = ("(?:^|%s)"):format(SLASH_LITERAL)
local DOTS_SLASH = ("%s{1,2}%s"):format(DOT_LITERAL, END_ANCHOR)
local NO_DOT = ("(?!%s)"):format(DOT_LITERAL)
local NO_DOTS = ("(?!%s%s)"):format(START_ANCHOR, DOTS_SLASH)
local NO_DOT_SLASH = ("(?!%s{0,1}%s)"):format(DOT_LITERAL, END_ANCHOR)
local NO_DOTS_SLASH = ("(?!%s)"):format(DOTS_SLASH)
local QMARK_NO_DOT = ("[^.%s]"):format(SLASH_LITERAL)
local STAR = ("%s*?"):format(QMARK)
local POSIX_CHARS = {
	DOT_LITERAL = DOT_LITERAL,
	PLUS_LITERAL = PLUS_LITERAL,
	QMARK_LITERAL = QMARK_LITERAL,
	SLASH_LITERAL = SLASH_LITERAL,
	ONE_CHAR = ONE_CHAR,
	QMARK = QMARK,
	END_ANCHOR = END_ANCHOR,
	DOTS_SLASH = DOTS_SLASH,
	NO_DOT = NO_DOT,
	NO_DOTS = NO_DOTS,
	NO_DOT_SLASH = NO_DOT_SLASH,
	NO_DOTS_SLASH = NO_DOTS_SLASH,
	QMARK_NO_DOT = QMARK_NO_DOT,
	STAR = STAR,
	START_ANCHOR = START_ANCHOR,
}