var a, c;
function O() {
  if (c)
    return a;
  c = 1;
  function t(e) {
    const n = {
      className: "string",
      variants: [
        e.inherit(e.QUOTE_STRING_MODE, { begin: '((u8?|U)|L)?"' }),
        {
          begin: '(u8?|U)?R"',
          end: '"',
          contains: [e.BACKSLASH_ESCAPE]
        },
        {
          begin: "'\\\\?.",
          end: "'",
          illegal: "."
        }
      ]
    }, s = {
      className: "number",
      variants: [
        { begin: "\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)" },
        { begin: e.C_NUMBER_RE }
      ],
      relevance: 0
    }, r = {
      className: "meta",
      begin: "#",
      end: "$",
      keywords: { keyword: "if else elif endif define undef ifdef ifndef" },
      contains: [
        {
          begin: /\\\n/,
          relevance: 0
        },
        {
          beginKeywords: "include",
          end: "$",
          keywords: { keyword: "include" },
          contains: [
            e.inherit(n, { className: "string" }),
            {
              className: "string",
              begin: "<",
              end: ">",
              illegal: "\\n"
            }
          ]
        },
        n,
        e.C_LINE_COMMENT_MODE,
        e.C_BLOCK_COMMENT_MODE
      ]
    }, i = {
      className: "variable",
      begin: /&[a-z\d_]*\b/
    }, o = {
      className: "keyword",
      begin: "/[a-z][a-z\\d-]*/"
    }, E = {
      className: "symbol",
      begin: "^\\s*[a-zA-Z_][a-zA-Z\\d_]*:"
    }, d = {
      className: "params",
      relevance: 0,
      begin: "<",
      end: ">",
      contains: [
        s,
        i
      ]
    }, _ = {
      className: "title.class",
      begin: /[a-zA-Z_][a-zA-Z\d_@-]*(?=\s\{)/,
      relevance: 0.2
    }, l = {
      className: "title.class",
      begin: /^\/(?=\s*\{)/,
      relevance: 10
    }, N = {
      match: /[a-z][a-z-,]+(?=;)/,
      relevance: 0,
      scope: "attr"
    }, b = {
      relevance: 0,
      match: [
        /[a-z][a-z-,]+/,
        /\s*/,
        /=/
      ],
      scope: {
        1: "attr",
        3: "operator"
      }
    }, g = {
      scope: "punctuation",
      relevance: 0,
      // `};` combined is just to avoid tons of useless punctuation nodes
      match: /\};|[;{}]/
    };
    return {
      name: "Device Tree",
      contains: [
        l,
        i,
        o,
        E,
        _,
        b,
        N,
        d,
        e.C_LINE_COMMENT_MODE,
        e.C_BLOCK_COMMENT_MODE,
        s,
        n,
        r,
        g,
        {
          begin: e.IDENT_RE + "::",
          keywords: ""
        }
      ]
    };
  }
  return a = t, a;
}
export {
  O as __require
};
