# Path: scripts/pyparsing/util.py
# class __config_flags:
# class _UnboundedCache:
# class _FifoCache:
#     def _set(cls, dname, value):
# def col(loc, strg):
# def lineno(loc, strg):
# def line(loc, strg):
#     def __init__(self):
#         def get(self, key):
#         def set(self, key, value):
#         def clear(self):
#         def cache_len(self):
#     def __init__(self, size):
#         def get(self, key):
#         def set(self, key, value):
#         def clear(self):
#         def cache_len(self):
# def _escapeRegexRangeChars(s):
# def _collapseAndEscapeRegexRangeChars(s):
#     def is_consecutive(c):
#     def escape_re_range_char(c):
# def _flatten(L):


import string
import copy
import sys
import warnings
import re
import sre_constants
import traceback
import types
                import pdb
    from collections.abc import Iterable
    from collections import Iterable
from operator import itemgetter
from functools import wraps
from threading import RLock
from .util import (
    _FifoCache,
    _UnboundedCache,
    __config_flags,
    _collapseAndEscapeRegexRangeChars,
    _escapeRegexRangeChars,
    _bslash,
    _flatten,
)
from pyparsing.exceptions import *
from pyparsing.actions import *
from pyparsing.results import ParseResults, _ParseResultsWithOffset
            )
            raise SyntaxError()

        if endQuoteChar is None:
            endQuoteChar = quoteChar
        else:
            endQuoteChar = endQuoteChar.strip()
            if not endQuoteChar:
                warnings.warn(
                    "endQuoteChar cannot be the empty string",
                    SyntaxWarning,
                    stacklevel=2,
                )
                raise SyntaxError()

        self.quoteChar = quoteChar
        self.quoteCharLen = len(quoteChar)
        self.firstQuoteChar = quoteChar[0]
        self.endQuoteChar = endQuoteChar
        self.endQuoteCharLen = len(endQuoteChar)
        self.escChar = escChar
        self.escQuote = escQuote
        self.unquoteResults = unquoteResults
        self.convertWhitespaceEscapes = convertWhitespaceEscapes

        if multiline:
            self.flags = re.MULTILINE | re.DOTALL
            self.pattern = r"%s(?:[^%s%s]" % (
                re.escape(self.quoteChar),
                _escapeRegexRangeChars(self.endQuoteChar[0]),

# Path: scripts/pyparsing/util.py
# class __config_flags:
# class _UnboundedCache:
# class _FifoCache:
#     def _set(cls, dname, value):
# def col(loc, strg):
# def lineno(loc, strg):
# def line(loc, strg):
#     def __init__(self):
#         def get(self, key):
#         def set(self, key, value):
#         def clear(self):
#         def cache_len(self):
#     def __init__(self, size):
#         def get(self, key):
#         def set(self, key, value):
#         def clear(self):
#         def cache_len(self):
# def _escapeRegexRangeChars(s):
# def _collapseAndEscapeRegexRangeChars(s):
#     def is_consecutive(c):
#     def escape_re_range_char(c):
# def _flatten(L):


# Path: scripts/pyparsing/core.py
import string
import copy
import sys
import warnings
import re
import sre_constants
import traceback
import types
                import pdb
    from collections.abc import Iterable
    from collections import Iterable
from operator import itemgetter
from functools import wraps
from threading import RLock
from .util import (
    _FifoCache,
    _UnboundedCache,
    __config_flags,
    _collapseAndEscapeRegexRangeChars,
    _escapeRegexRangeChars,
    _bslash,
    _flatten,
)
from pyparsing.exceptions import *
from pyparsing.actions import *
from pyparsing.results import ParseResults, _ParseResultsWithOffset

            )
            raise SyntaxError()

        if endQuoteChar is None:
            endQuoteChar = quoteChar
        else:
            endQuoteChar = endQuoteChar.strip()
            if not endQuoteChar:
                warnings.warn(
                    "endQuoteChar cannot be the empty string",
                    SyntaxWarning,
                    stacklevel=2,
                )
                raise SyntaxError()

        self.quoteChar = quoteChar
        self.quoteCharLen = len(quoteChar)
        self.firstQuoteChar = quoteChar[0]
        self.endQuoteChar = endQuoteChar
        self.endQuoteCharLen = len(endQuoteChar)
        self.escChar = escChar
        self.escQuote = escQuote
        self.unquoteResults = unquoteResults
        self.convertWhitespaceEscapes = convertWhitespaceEscapes

        if multiline:
            self.flags = re.MULTILINE | re.DOTALL
            self.pattern = r"%s(?:[^%s%s]" % (
                re.escape(self.quoteChar),
                _escapeRegexRangeChars(self.endQuoteChar[0]),

                (escChar is not None and _escapeRegexRangeChars(escChar) or ""),