UNPKG

mlld

Version:

mlld: a modular prompt scripting language

41,479 lines 1.17 MB
import { __name } from './chunk-OMKLS24H.mjs';
import { randomUUID } from 'crypto';
import * as acorn from 'acorn';

var NodeType = {
  Text: "Text",
  Comment: "Comment",
  CodeFence: "CodeFence",
  MlldRunBlock: "MlldRunBlock",
  VariableReference: "VariableReference",
  Directive: "Directive",
  PathSeparator: "PathSeparator",
  DotSeparator: "DotSeparator",
  Literal: "Literal",
  SectionMarker: "SectionMarker",
  Error: "Error",
  Newline: "Newline",
  StringLiteral: "StringLiteral",
  Frontmatter: "Frontmatter",
  CommandBase: "CommandBase",
  Parameter: "Parameter",
  ExecInvocation: "ExecInvocation",
  CommandReference: "CommandReference",
  FileReference: "FileReference",
  BinaryExpression: "BinaryExpression",
  TernaryExpression: "TernaryExpression",
  UnaryExpression: "UnaryExpression",
  WhenExpression: "WhenExpression"
};
var DirectiveKind = {
  run: "run",
  var: "var",
  show: "show",
  exe: "exe",
  for: "for",
  path: "path",
  import: "import",
  output: "output",
  when: "when"
};
var helpers = {
  debug(msg, ...args) {
    if (process.env.DEBUG_MLLD_GRAMMAR) console.log("[DEBUG GRAMMAR]", msg, ...args);
  },
  isLogicalLineStart(input, pos) {
    if (pos === 0) return true;
    let i = pos - 1;
    while (i >= 0 && " 	\r".includes(input[i])) i--;
    return i < 0 || input[i] === "\n";
  },
  // Context Detection System - Core Helper Methods
  // ---------------------------------------------
  /**
   * Determines if the current position represents a slash directive context
   * A slash directive context requires:
   * 1. / symbol at logical line start
   * 2. Followed by a valid directive keyword
   */
  isSlashDirectiveContext(input, pos) {
    if (input[pos] !== "/") return false;
    const isAtLineStart = this.isLogicalLineStart(input, pos);
    if (!isAtLineStart) return false;
    const directiveKeywords = Object.keys(DirectiveKind);
    const afterSlashPos = pos + 1;
    for (const keyword of directiveKeywords) {
      if (afterSlashPos + keyword.length > input.length) continue;
      const potentialKeyword = input.substring(afterSlashPos, afterSlashPos + keyword.length);
      if (potentialKeyword === keyword) {
        if (afterSlashPos + keyword.length === input.length) return true;
        const nextChar = input[afterSlashPos + keyword.length];
        if (" 	\r\n".includes(nextChar)) return true;
      }
    }
    return false;
  },
  /**
   * Determines if the current position represents a variable reference context
   * A variable context requires:
   * 1. @ symbol NOT at logical line start, or
   * 2. @ at line start but NOT followed by directive keyword
   */
  isAtVariableContext(input, pos) {
    if (input[pos] !== "@") return false;
    if (this.isSlashDirectiveContext(input, pos)) return false;
    return true;
  },
  /**
   * Determines if the current position is within a right-hand side (RHS) expression
   * RHS contexts are after assignment operators (=, :) in directive bodies
   */
  isRHSContext(input, pos) {
    if (pos === 0) return false;
    let i = pos - 1;
    let inString = false;
    let stringChar = null;
    let foundEquals = false;
    while (i >= 0) {
      const char = input[i];
      if ((char === '"' || char === "'") && (i === 0 || input[i - 1] !== "\\")) {
        if (!inString) {
          inString = true;
          stringChar = char;
        } else if (char === stringChar) {
          inString = false;
          stringChar = null;
        }
      }
      if (!inString) {
        if (char === "=" || char === ":") {
          foundEquals = true;
          break;
        }
        if (char === ";" || char === "\n") {
          return false;
        }
      }
      i--;
    }
    if (foundEquals) {
      let j = i - 1;
      while (j >= 0 && " 	\r".includes(input[j])) {
        j--;
      }
      let name = "";
      while (j >= 0 && /[a-zA-Z0-9_]/.test(input[j])) {
        name = input[j] + name;
        j--;
      }
      if (j >= 0 && input[j] === "/") {
        const validAssignmentDirectives = [
          "exec",
          "text",
          "data",
          "run"
        ];
        if (validAssignmentDirectives.includes(name)) {
          if (this.isLogicalLineStart(input, j)) {
            return true;
          }
        }
      }
      return false;
    }
    return false;
  },
  /**
   * Determines if the current position represents plain text context
   * Plain text is any context that isn't a directive, variable, or RHS
   */
  isPlainTextContext(input, pos) {
    return !this.isSlashDirectiveContext(input, pos) && !this.isAtVariableContext(input, pos) && !this.isRHSContext(input, pos);
  },
  /**
   * Determines if the current position is within a run code block context
   * This is used to identify language + code block patterns
   */
  isInRunCodeBlockContext(input, pos) {
    return false;
  },
  createNode(type, props) {
    if (!props.location && process.env.DEBUG_MLLD_GRAMMAR) {
      console.warn(`WARNING: Creating ${type} node without location data`);
      if (process.env.DEBUG_MLLD_GRAMMAR_TRACE) {
        console.trace();
      }
    }
    return Object.freeze({
      type,
      nodeId: randomUUID(),
      location: props.location,
      ...props
    });
  },
  createDirective(kind, data) {
    return this.createNode(NodeType.Directive, {
      directive: {
        kind,
        ...data
      }
    });
  },
  // New method for creating directives with the updated structure
  createStructuredDirective(kind, subtype, values, raw, meta, locationData, source = null) {
    return this.createNode(NodeType.Directive, {
      kind,
      subtype,
      source,
      values,
      raw,
      meta,
      location: locationData
    });
  },
  createVariableReferenceNode(valueType, data, location) {
    if (!location) {
      throw new Error(`Location is required for createVariableReferenceNode (valueType: ${valueType}, identifier: ${data.identifier || "unknown"})`);
    }
    return this.createNode(NodeType.VariableReference, {
      valueType,
      ...data,
      location
    });
  },
  normalizePathVar(id) {
    return id;
  },
  validateRunContent: /* @__PURE__ */ __name(() => true, "validateRunContent"),
  validateDefineContent: /* @__PURE__ */ __name(() => true, "validateDefineContent"),
  validatePath(pathParts, directiveKind) {
    const raw = this.reconstructRawString(pathParts).trim();
    let hasVariables = false;
    if (pathParts && pathParts.length > 0) {
      for (const node of pathParts) {
        if (node.type === NodeType.VariableReference) {
          hasVariables = true;
        }
      }
    }
    const finalFlags = {
      hasVariables
    };
    const result = {
      raw,
      values: pathParts,
      ...finalFlags
    };
    this.debug("PATH", "validatePath final result:", JSON.stringify(result, null, 2));
    return result;
  },
  getImportSubtype(list) {
    if (!list) return "importAll";
    if (list.length === 0) return "importAll";
    if (list.length === 1 && list[0].name === "*") return "importAll";
    return "importSelected";
  },
  trace(pos, reason) {
  },
  reconstructRawString(nodes) {
    if (!Array.isArray(nodes)) {
      if (nodes && typeof nodes === "object") {
        if (nodes.type === NodeType.Text) return nodes.content || "";
        if (nodes.type === NodeType.VariableReference) {
          const varId = nodes.identifier;
          const valueType = nodes.valueType;
          const fields = nodes.fields || [];
          let fieldPath = "";
          for (const field of fields) {
            if (field.type === "field" || field.type === "dot") {
              fieldPath += `.${field.name || field.value}`;
            } else if (field.type === "array") {
              fieldPath += `[${field.index}]`;
            }
          }
          if (valueType === "varInterpolation") {
            return `{{${varId}${fieldPath}}}`;
          } else if (valueType === "varIdentifier") {
            return `@${varId}${fieldPath}`;
          } else {
            return `{{${varId}${fieldPath}}}`;
          }
        }
      }
      return String(nodes || "");
    }
    let raw = "";
    for (const node of nodes) {
      if (!node) continue;
      if (node.type === NodeType.Text) {
        raw += node.content || "";
      } else if (node.type === NodeType.VariableReference) {
        const varId = node.identifier;
        const valueType = node.valueType;
        const fields = node.fields || [];
        let fieldPath = "";
        for (const field of fields) {
          if (field.type === "field" || field.type === "dot") {
            fieldPath += `.${field.name || field.value}`;
          } else if (field.type === "array") {
            fieldPath += `[${field.index}]`;
          }
        }
        if (valueType === "varInterpolation") {
          raw += `{{${varId}${fieldPath}}}`;
        } else if (valueType === "varIdentifier") {
          raw += `@${varId}${fieldPath}`;
        } else {
          raw += `{{${varId}${fieldPath}}}`;
        }
      } else if (node.type === NodeType.PathSeparator) {
        raw += node.value || "";
      } else if (node.type === NodeType.SectionMarker) {
        raw += node.value || "";
      } else if (node.type === NodeType.StringLiteral) {
        raw += node.value || "";
      } else if (typeof node === "string") {
        raw += node;
      } else {
        raw += node.content || node.value || node.raw || "";
      }
    }
    return raw;
  },
  createPathMetadata(rawPath, parts) {
    return {
      hasVariables: parts.some((p) => p && p.type === NodeType.VariableReference),
      isAbsolute: rawPath.startsWith("/"),
      hasExtension: /\.[a-zA-Z0-9]+$/.test(rawPath),
      extension: rawPath.match(/\.([a-zA-Z0-9]+)$/)?.[1] || null
    };
  },
  createCommandMetadata(parts) {
    return {
      hasVariables: parts.some((p) => p && p.type === NodeType.VariableReference)
    };
  },
  createTemplateMetadata(parts, wrapperType) {
    return {
      hasVariables: parts.some((p) => p && (p.type === NodeType.VariableReference || p.type === NodeType.ExecInvocation)),
      isTemplateContent: wrapperType === "doubleBracket"
    };
  },
  createUrlMetadata(protocol, parts, hasSection = false) {
    return {
      isUrl: true,
      protocol,
      hasVariables: parts.some((p) => p && p.type === NodeType.VariableReference),
      hasSection
    };
  },
  ttlToSeconds(value, unit) {
    const multipliers = {
      "seconds": 1,
      "minutes": 60,
      "hours": 3600,
      "days": 86400,
      "weeks": 604800
    };
    return value * (multipliers[unit] || 1);
  },
  createSecurityMeta(options) {
    if (!options) return {};
    const meta = {};
    if (options.ttl) {
      meta.ttl = options.ttl;
    }
    if (options.trust) {
      meta.trust = options.trust;
    }
    return meta;
  },
  detectFormatFromPath(path) {
    const ext = path.match(/\.([a-zA-Z0-9]+)$/)?.[1]?.toLowerCase();
    if (!ext) return null;
    const formatMap = {
      "json": "json",
      "xml": "xml",
      "yaml": "yaml",
      "yml": "yaml",
      "csv": "csv",
      "md": "markdown",
      "markdown": "markdown",
      "txt": "text",
      "text": "text"
    };
    return formatMap[ext] || null;
  },
  createSectionMeta(pathParts, sectionParts, hasRename) {
    return {
      sourceType: "section",
      hasVariables: [
        ...pathParts,
        ...sectionParts
      ].some((part) => part && part.type === "VariableReference"),
      hasRename
    };
  },
  reconstructSectionPath(pathParts, sectionParts) {
    const pathStr = this.reconstructRawString(pathParts);
    const sectionStr = this.reconstructRawString(sectionParts);
    return `${pathStr} # ${sectionStr}`;
  },
  /**
   * Checks if we're at a bracket that should end command parsing
   * This uses a specific heuristic: ] at end of input OR ] on its own line
   */
  isCommandEndingBracket(input, pos) {
    if (input[pos] !== "]") return false;
    const nextPos = pos + 1;
    if (nextPos >= input.length) return true;
    let i = nextPos;
    while (i < input.length && (input[i] === " " || input[i] === "	")) {
      i++;
    }
    return i >= input.length || input[i] === "\n";
  },
  /**
   * Parse command content that may contain variables and text segments
   * This is used by the CommandBracketContent rule to handle @var interpolation
   *
   * @param content - The content to parse
   * @param baseLocation - The location of the content in the source
   */
  parseCommandContent(content, baseLocation) {
    const parts = [];
    let i = 0;
    let currentText = "";
    let textStartOffset = 0;
    if (!baseLocation) {
      console.warn("parseCommandContent called without baseLocation");
      return this.parseCommandContentLegacy(content);
    }
    let currentOffset = baseLocation.start.offset;
    let currentLine = baseLocation.start.line;
    let currentColumn = baseLocation.start.column;
    while (i < content.length) {
      if (content[i] === "@" && i + 1 < content.length) {
        if (currentText) {
          const textEndOffset = currentOffset;
          const textEndLine = currentLine;
          const textEndColumn = currentColumn;
          parts.push(this.createNode(NodeType.Text, {
            content: currentText,
            location: {
              start: {
                offset: baseLocation.start.offset + textStartOffset,
                line: baseLocation.start.line,
                column: baseLocation.start.column + textStartOffset
              },
              end: {
                offset: textEndOffset,
                line: textEndLine,
                column: textEndColumn
              }
            }
          }));
          currentText = "";
        }
        const varStartOffset = currentOffset;
        const varStartLine = currentLine;
        const varStartColumn = currentColumn;
        i++;
        currentOffset++;
        currentColumn++;
        let varName = "";
        while (i < content.length && /[a-zA-Z0-9_]/.test(content[i])) {
          varName += content[i];
          i++;
          currentOffset++;
          currentColumn++;
        }
        if (varName) {
          const varEndOffset = currentOffset;
          const varEndLine = currentLine;
          const varEndColumn = currentColumn;
          parts.push(this.createVariableReferenceNode("varIdentifier", {
            identifier: varName
          }, {
            start: {
              offset: varStartOffset,
              line: varStartLine,
              column: varStartColumn
            },
            end: {
              offset: varEndOffset,
              line: varEndLine,
              column: varEndColumn
            }
          }));
          textStartOffset = i;
        } else {
          currentText += "@";
        }
      } else {
        if (currentText === "") {
          textStartOffset = i;
        }
        currentText += content[i];
        if (content[i] === "\n") {
          currentLine++;
          currentColumn = 1;
        } else {
          currentColumn++;
        }
        currentOffset++;
        i++;
      }
    }
    if (currentText) {
      parts.push(this.createNode(NodeType.Text, {
        content: currentText,
        location: {
          start: {
            offset: baseLocation.start.offset + textStartOffset,
            line: baseLocation.start.line,
            column: baseLocation.start.column + textStartOffset
          },
          end: {
            offset: currentOffset,
            line: currentLine,
            column: currentColumn
          }
        }
      }));
    }
    return parts;
  },
  /**
   * Legacy version of parseCommandContent for backward compatibility
   * Creates nodes without proper location data
   */
  parseCommandContentLegacy(content) {
    const parts = [];
    let i = 0;
    let currentText = "";
    while (i < content.length) {
      if (content[i] === "@" && i + 1 < content.length) {
        if (currentText) {
          parts.push(this.createNode(NodeType.Text, {
            content: currentText
          }));
          currentText = "";
        }
        i++;
        let varName = "";
        while (i < content.length && /[a-zA-Z0-9_]/.test(content[i])) {
          varName += content[i];
          i++;
        }
        if (varName) {
          parts.push(this.createNode(NodeType.Text, {
            content: "@" + varName
          }));
        } else {
          currentText += "@";
        }
      } else {
        currentText += content[i];
        i++;
      }
    }
    if (currentText) {
      parts.push(this.createNode(NodeType.Text, {
        content: currentText
      }));
    }
    return parts;
  },
  /**
   * Create an ExecInvocation node
   */
  createExecInvocation(commandRef, withClause, location) {
    return this.createNode("ExecInvocation", {
      commandRef,
      withClause: withClause || null,
      location
    });
  },
  /**
   * Get the command name from an ExecInvocation node
   */
  getExecInvocationName(node) {
    if (!node || node.type !== "ExecInvocation") return null;
    return node.commandRef?.identifier || node.commandRef?.name;
  },
  /**
   * Check if a node is an ExecInvocation
   */
  isExecInvocationNode(node) {
    return node?.type === "ExecInvocation";
  },
  /**
   * Parse a JavaScript code block using acorn to find the complete block
   * This handles nested braces, strings, template literals, etc. properly
   *
   * @param input - The full input string
   * @param startPos - Position after the opening brace
   * @returns The parsed code content and end position, or null if invalid
   */
  parseJavaScriptBlock(input, startPos) {
    const potentialCode = input.substring(startPos);
    let lastValidEnd = -1;
    let lastValidCode = "";
    for (let i = 0; i < potentialCode.length; i++) {
      if (potentialCode[i] !== "}") continue;
      const testCode = potentialCode.substring(0, i);
      try {
        acorn.parse(`(${testCode})`, {
          ecmaVersion: "latest",
          allowReturnOutsideFunction: true
        });
        lastValidEnd = i;
        lastValidCode = testCode;
      } catch (e) {
        try {
          acorn.parse(testCode, {
            ecmaVersion: "latest",
            allowReturnOutsideFunction: true,
            sourceType: "module"
          });
          lastValidEnd = i;
          lastValidCode = testCode;
        } catch (e2) {
        }
      }
    }
    if (lastValidEnd >= 0) {
      return {
        content: lastValidCode.trim(),
        endPos: startPos + lastValidEnd
      };
    }
    return null;
  },
  // Array vs Path disambiguation helpers for /var directive
  createEmptyArray(location) {
    return {
      type: "array",
      items: [],
      location
    };
  },
  createArrayFromContent(content, location) {
    return {
      type: "array",
      items: content,
      location
    };
  },
  createSectionExtraction(content, location) {
    return {
      type: "section",
      path: content.path,
      section: content.section,
      location
    };
  },
  createPathDereference(content, location) {
    return {
      type: "path",
      segments: content,
      location
    };
  },
  createObjectFromProperties(properties, location) {
    return {
      type: "object",
      properties: properties || {},
      location
    };
  },
  // Error Recovery Helper Functions
  // --------------------------------
  /**
   * Checks if an array is unclosed by scanning ahead
   * Returns true if we hit a newline before finding the closing bracket
   */
  isUnclosedArray(input, pos) {
    let depth = 1;
    let i = pos;
    let hasHash = false;
    this.debug("isUnclosedArray starting at pos", pos, "first 50 chars:", input.substring(pos, pos + 50));
    while (i < input.length && depth > 0) {
      const char = input[i];
      if (char === "[") {
        depth++;
        this.debug("Found [ at", i, "depth now", depth);
      } else if (char === "]") {
        depth--;
        this.debug("Found ] at", i, "depth now", depth);
      } else if (char === "#" && depth === 1) {
        hasHash = true;
        this.debug("Found # at", i, "in brackets - this is section syntax");
      } else if (char === "\n" && depth > 0) {
        if (!hasHash) {
          this.debug("Found newline at", i, "without # - unclosed array");
          return true;
        }
        this.debug("Found newline at", i, "but has # - continuing scan");
      }
      i++;
    }
    const result = depth > 0;
    this.debug("isUnclosedArray finished: result=", result, "hasHash=", hasHash, "depth=", depth, "scanned to pos", i);
    return result;
  },
  /**
   * Checks if an object is unclosed by scanning ahead
   * Returns true if we hit a newline before finding the closing brace
   */
  isUnclosedObject(input, pos) {
    let depth = 1;
    let i = pos;
    let inString = false;
    let stringChar = null;
    while (i < input.length && depth > 0) {
      const char = input[i];
      if ((char === '"' || char === "'") && (i === 0 || input[i - 1] !== "\\")) {
        if (!inString) {
          inString = true;
          stringChar = char;
        } else if (char === stringChar) {
          inString = false;
          stringChar = null;
        }
      }
      if (!inString) {
        if (char === "{") depth++;
        else if (char === "}") depth--;
        else if (char === "\n" && depth > 0) return true;
      }
      i++;
    }
    return depth > 0;
  },
  /**
   * Checks if a string quote is unclosed
   * Returns true if we hit a newline or end of input before finding the closing quote
   */
  detectMissingQuoteClose(input, pos, quoteChar) {
    let i = pos;
    while (i < input.length) {
      if (input[i] === quoteChar && input[i - 1] !== "\\") return false;
      if (input[i] === "\n") return true;
      i++;
    }
    return true;
  },
  /**
   * Checks if a template delimiter (::) is unclosed
   */
  isUnclosedTemplate(input, pos) {
    let i = pos;
    while (i < input.length - 1) {
      if (input[i] === ":" && input[i + 1] === ":") return false;
      i++;
    }
    return true;
  },
  /**
   * Checks if we're at the start of what looks like a multiline array
   * (array with newline after opening bracket)
   */
  isMultilineArrayStart(input, pos) {
    let i = pos;
    while (i < input.length && (input[i] === " " || input[i] === "	")) {
      i++;
    }
    return i < input.length && input[i] === "\n";
  },
  /**
   * Scans ahead to check if this looks like a valid language identifier for /run
   */
  isValidLanguageKeyword(input, pos, lang) {
    const validLanguages = [
      "js",
      "javascript",
      "node",
      "python",
      "py",
      "bash",
      "sh"
    ];
    return validLanguages.includes(lang.toLowerCase());
  },
  /**
   * Checks if we're missing a 'from' keyword in an import statement
   */
  isMissingFromKeyword(input, pos) {
    let i = pos;
    while (i < input.length && (input[i] === " " || input[i] === "	")) {
      i++;
    }
    if (i < input.length) {
      const char = input[i];
      return char === '"' || char === "'" || char === "[" || char === "@";
    }
    return false;
  },
  /**
   * Create an error with enhanced location tracking
   * Since we can't access parser internals from here, we'll just throw
   * a regular error and let the parser enhance it
   */
  mlldError(message, expectedToken, loc) {
    const error = new Error(message);
    error.isMlldError = true;
    error.expectedToken = expectedToken;
    error.mlldErrorLocation = loc;
    throw error;
  },
  // Parser State Management for Code Blocks
  // ----------------------------------------
  // These functions help prevent state corruption when parsing multiple
  // complex functions in mlld-run blocks
  /**
   * Parser state tracking object
   * Used to detect and prevent state corruption issues
   */
  parserState: {
    codeBlockDepth: 0,
    braceDepth: 0,
    inString: false,
    stringChar: null,
    lastDirectiveEndPos: -1,
    functionCount: 0,
    maxNestingDepth: 20
  },
  /**
   * Reset parser state between functions
   * This prevents state corruption when parsing multiple complex functions
   */
  resetCodeParsingState() {
    this.parserState.braceDepth = 0;
    this.parserState.inString = false;
    this.parserState.stringChar = null;
    this.parserState.functionCount++;
    this.debug("Parser state reset", {
      functionCount: this.parserState.functionCount,
      lastEndPos: this.parserState.lastDirectiveEndPos
    });
  },
  /**
   * Get current brace depth for debugging and limits
   */
  getBraceDepth() {
    return this.parserState.braceDepth;
  },
  /**
   * Increment brace depth with overflow checking
   */
  incrementBraceDepth() {
    this.parserState.braceDepth++;
    if (this.parserState.braceDepth > this.parserState.maxNestingDepth) {
      this.mlldError(`Code block nesting too deep (${this.parserState.braceDepth} levels). Consider simplifying your function or splitting it into smaller functions.`);
    }
  },
  /**
   * Decrement brace depth with underflow checking
   */
  decrementBraceDepth() {
    this.parserState.braceDepth--;
    if (this.parserState.braceDepth < 0) {
      this.debug("WARNING: Brace depth underflow detected", {
        depth: this.parserState.braceDepth,
        functionCount: this.parserState.functionCount
      });
      this.parserState.braceDepth = 0;
    }
  },
  /**
   * Validate parser state consistency
   * Returns true if state is valid, false if corrupted
   */
  validateParserState() {
    const isValid = this.parserState.braceDepth >= 0 && this.parserState.braceDepth <= this.parserState.maxNestingDepth;
    if (!isValid) {
      this.debug("Parser state validation failed", {
        braceDepth: this.parserState.braceDepth,
        inString: this.parserState.inString,
        functionCount: this.parserState.functionCount
      });
    }
    return isValid;
  },
  /**
   * Mark the end of a directive for state tracking
   */
  markDirectiveEnd(pos) {
    this.parserState.lastDirectiveEndPos = pos;
  },
  // File Reference Helper Functions
  // --------------------------------
  /**
   * Checks if content inside <...> represents a file reference
   * File references are detected by presence of: . * @
   * Note: We don't include / since we don't support directories
   * Files without extensions can be used outside interpolation contexts
   */
  isFileReferenceContent(content) {
    return /[.*@]/.test(content);
  },
  /**
   * Creates a FileReference AST node
   */
  createFileReferenceNode(source, fields, pipes, location) {
    return {
      type: "FileReference",
      nodeId: randomUUID(),
      source,
      fields: fields || [],
      pipes: pipes || [],
      location,
      meta: {
        isFileReference: true,
        hasGlob: typeof source === "object" && source.raw && source.raw.includes("*"),
        isPlaceholder: source && source.type === "placeholder"
      }
    };
  },
  // Binary expression builder with left-to-right associativity
  createBinaryExpression(first, rest, location) {
    if (!rest || rest.length === 0) return first;
    return rest.reduce((left, { op, right }) => this.createNode("BinaryExpression", {
      operator: op,
      left,
      right,
      location
    }), first);
  },
  // Check if nodes contain newlines
  containsNewline(nodes) {
    if (!Array.isArray(nodes)) nodes = [
      nodes
    ];
    return nodes.some((n) => n.type === "Newline" || n.content && n.content.includes("\n") || n.raw && n.raw.includes("\n"));
  },
  /**
   * Creates a WhenExpression node for RHS when expressions
   */
  createWhenExpression(conditions, withClause, location) {
    return this.createNode(NodeType.WhenExpression, {
      conditions,
      withClause: withClause || null,
      meta: {
        conditionCount: conditions.length,
        isValueReturning: true,
        evaluationType: "expression",
        hasTailModifiers: !!withClause
      },
      location
    });
  },
  /**
   * Creates a ForExpression node for for...in expressions in /var assignments
   */
  createForExpression(variable, source, expression, location) {
    return {
      type: "ForExpression",
      nodeId: randomUUID(),
      variable,
      source,
      expression: Array.isArray(expression) ? expression : [
        expression
      ],
      location,
      meta: {
        isForExpression: true
      }
    };
  },
  /**
   * Creates an action node for /for directive actions
   */
  createForActionNode(directive, content, location) {
    const kind = directive;
    return [
      this.createNode(NodeType.Directive, {
        kind,
        subtype: kind,
        values: {
          content: Array.isArray(content) ? content : [
            content
          ]
        },
        raw: {
          content: this.reconstructRawString(content)
        },
        meta: {
          implicit: false
        },
        location
      })
    ];
  }
};

// grammar/generated/parser/deps/node-type.js
var node_type_default = NodeType;

// grammar/generated/parser/deps/directive-kind.js
var directive_kind_default = DirectiveKind;

// grammar/generated/parser/deps/helpers.js
var helpers_default = helpers;

// grammar/generated/parser/parser.js
function peg$subclass(child, parent) {
  function C() {
    this.constructor = child;
  }
  __name(C, "C");
  C.prototype = parent.prototype;
  child.prototype = new C();
}
__name(peg$subclass, "peg$subclass");
function peg$SyntaxError(message, expected, found, location) {
  var self = Error.call(this, message);
  if (Object.setPrototypeOf) {
    Object.setPrototypeOf(self, peg$SyntaxError.prototype);
  }
  self.expected = expected;
  self.found = found;
  self.location = location;
  self.name = "SyntaxError";
  return self;
}
__name(peg$SyntaxError, "peg$SyntaxError");
peg$subclass(peg$SyntaxError, Error);
function peg$padEnd(str, targetLength, padString) {
  padString = padString || " ";
  if (str.length > targetLength) {
    return str;
  }
  targetLength -= str.length;
  padString += padString.repeat(targetLength);
  return str + padString.slice(0, targetLength);
}
__name(peg$padEnd, "peg$padEnd");
peg$SyntaxError.prototype.format = function(sources) {
  var str = "Error: " + this.message;
  if (this.location) {
    var src = null;
    var k;
    for (k = 0; k < sources.length; k++) {
      if (sources[k].source === this.location.source) {
        src = sources[k].text.split(/\r\n|\n|\r/g);
        break;
      }
    }
    var s = this.location.start;
    var offset_s = this.location.source && typeof this.location.source.offset === "function" ? this.location.source.offset(s) : s;
    var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column;
    if (src) {
      var e = this.location.end;
      var filler = peg$padEnd("", offset_s.line.toString().length, " ");
      var line = src[s.line - 1];
      var last = s.line === e.line ? e.column : line.length + 1;
      var hatLen = last - s.column || 1;
      str += "\n --> " + loc + "\n" + filler + " |\n" + offset_s.line + " | " + line + "\n" + filler + " | " + peg$padEnd("", s.column - 1, " ") + peg$padEnd("", hatLen, "^");
    } else {
      str += "\n at " + loc;
    }
  }
  return str;
};
peg$SyntaxError.buildMessage = function(expected, found) {
  var DESCRIBE_EXPECTATION_FNS = {
    literal: /* @__PURE__ */ __name(function(expectation) {
      return '"' + literalEscape(expectation.text) + '"';
    }, "literal"),
    class: /* @__PURE__ */ __name(function(expectation) {
      var escapedParts = expectation.parts.map(function(part) {
        return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
      });
      return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
    }, "class"),
    any: /* @__PURE__ */ __name(function() {
      return "any character";
    }, "any"),
    end: /* @__PURE__ */ __name(function() {
      return "end of input";
    }, "end"),
    other: /* @__PURE__ */ __name(function(expectation) {
      return expectation.description;
    }, "other")
  };
  function hex(ch) {
    return ch.charCodeAt(0).toString(16).toUpperCase();
  }
  __name(hex, "hex");
  function literalEscape(s) {
    return s.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
      return "\\x0" + hex(ch);
    }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
      return "\\x" + hex(ch);
    });
  }
  __name(literalEscape, "literalEscape");
  function classEscape(s) {
    return s.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
      return "\\x0" + hex(ch);
    }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
      return "\\x" + hex(ch);
    });
  }
  __name(classEscape, "classEscape");
  function describeExpectation(expectation) {
    return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
  }
  __name(describeExpectation, "describeExpectation");
  function describeExpected(expected2) {
    var descriptions = expected2.map(describeExpectation);
    var i, j;
    descriptions.sort();
    if (descriptions.length > 0) {
      for (i = 1, j = 1; i < descriptions.length; i++) {
        if (descriptions[i - 1] !== descriptions[i]) {
          descriptions[j] = descriptions[i];
          j++;
        }
      }
      descriptions.length = j;
    }
    switch (descriptions.length) {
      case 1:
        return descriptions[0];
      case 2:
        return descriptions[0] + " or " + descriptions[1];
      default:
        return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
    }
  }
  __name(describeExpected, "describeExpected");
  function describeFound(found2) {
    return found2 ? '"' + literalEscape(found2) + '"' : "end of input";
  }
  __name(describeFound, "describeFound");
  return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
};
function peg$parse(input, options) {
  options = options !== void 0 ? options : {};
  var peg$FAILED = {};
  var peg$source = options.grammarSource;
  var peg$startRuleFunctions = {
    Start: peg$parseStart
  };
  var peg$startRuleFunction = peg$parseStart;
  var peg$c0 = ">>";
  var peg$c1 = "<<";
  var peg$c2 = "\n";
  var peg$c3 = "{{";
  var peg$c4 = "}}";
  var peg$c5 = "::";
  var peg$c6 = "```";
  var peg$c7 = "mlld-run";
  var peg$c8 = "---";
  var peg$c9 = "'";
  var peg$c11 = ".";
  var peg$c12 = "true";
  var peg$c13 = "false";
  var peg$c14 = "null";
  var peg$c15 = "*";
  var peg$c16 = "[[";
  var peg$c17 = "]]";
  var peg$c18 = "\\";
  var peg$c19 = "<";
  var peg$c20 = '"';
  var peg$c21 = "`";
  var peg$c22 = "/";
  var peg$c23 = "#";
  var peg$c24 = "/var";
  var peg$c25 = "/show";
  var peg$c26 = "/run";
  var peg$c27 = "/exe";
  var peg$c28 = "/path";
  var peg$c29 = "/import";
  var peg$c30 = "/when";
  var peg$c31 = "/output";
  var peg$c32 = "\r\n";
  var peg$c33 = ">";
  var peg$c34 = "https";
  var peg$c35 = "http";
  var peg$c36 = "://";
  var peg$c37 = "@";
  var peg$c38 = " as ";
  var peg$c39 = "as";
  var peg$c40 = "<>";
  var peg$c41 = "[";
  var peg$c42 = "]";
  var peg$c43 = ",";
  var peg$c44 = "|";
  var peg$c45 = "&&";
  var peg$c46 = "||";
  var peg$c47 = ";";
  var peg$c48 = "run";
  var peg$c49 = "npx";
  var peg$c50 = "npm";
  var peg$c51 = "yarn";
  var peg$c52 = "pnpm";
  var peg$c53 = "bun";
  var peg$c54 = ":";
  var peg$c55 = "-m";
  var peg$c56 = "python";
  var peg$c57 = "python3";
  var peg$c58 = "python2";
  var peg$c59 = "node";
  var peg$c60 = "sh";
  var peg$c61 = "bash";
  var peg$c62 = "zsh";
  var peg$c63 = "perl";
  var peg$c64 = "ruby";
  var peg$c65 = "-e";
  var peg$c66 = "-c";
  var peg$c67 = "make";
  var peg$c68 = "cargo";
  var peg$c69 = "go";
  var peg$c70 = "gradle";
  var peg$c71 = "maven";
  var peg$c72 = "mvn";
  var peg$c73 = "rake";
  var peg$c74 = "(";
  var peg$c75 = ")";
  var peg$c76 = ":::";
  var peg$c77 = "{";
  var peg$c78 = "}";
  var peg$c79 = "?";
  var peg$c80 = "==";
  var peg$c81 = "!=";
  var peg$c82 = "<=";
  var peg$c83 = ">=";
  var peg$c84 = "=";
  var peg$c85 = "!";
  var peg$c86 = "foreach";
  var peg$c87 = "with";
  var peg$c88 = "separator";
  var peg$c89 = "template";
  var peg$c90 = "in";
  var peg$c91 = "output";
  var peg$c92 = "to";
  var peg$c93 = "show";
  var peg$c94 = "var";
  var peg$c95 = "trust";
  var peg$c96 = "needs";
  var peg$c97 = "@run";
  var peg$c98 = "stdout";
  var peg$c99 = "stderr";
  var peg$c100 = "env";
  var peg$c101 = "s";
  var peg$c102 = "file";
  var peg$c103 = "//";
  var peg$c104 = "\\\\";
  var peg$c105 = "\\@";
  var peg$c106 = "live";
  var peg$c107 = "static";
  var peg$c108 = "always";
  var peg$c109 = "verify";
  var peg$c110 = "never";
  var peg$c111 = "&>";
  var peg$c112 = "&";
  var peg$c113 = "pipeline";
  var peg$c114 = "[(";
  var peg$c115 = ")]";
  var peg$c116 = "/*";
  var peg$c117 = "*/";
  var peg$c118 = "js";
  var peg$c119 = "javascript";
  var peg$c120 = "when";
  var peg$c121 = "=>";
  var peg$c122 = "for";
  var peg$c123 = "each";
  var peg$c124 = "now";
  var peg$c125 = "base";
  var peg$c126 = "input";
  var peg$c127 = "debug";
  var peg$c128 = "frontmatter";
  var peg$c129 = "fm";
  var peg$c130 = "format";
  var peg$c131 = "asSection";
  var peg$c132 = "from";
  var peg$c133 = "nodejs";
  var peg$c134 = "py";
  var peg$c135 = "risk.high";
  var peg$c136 = "risk.med";
  var peg$c137 = "risk.low";
  var peg$c138 = "risk";
  var peg$c139 = "about";
  var peg$c140 = "meta";
  var peg$c141 = "/for";
  var peg$c142 = "@item";
  var peg$c143 = "@input";
  var peg$c144 = "@now";
  var peg$c145 = "@time";
  var peg$c146 = "@stdin";
  var peg$c147 = "env:";
  var peg$c148 = "PROJECTPATH";
  var peg$c149 = "under";
  var peg$c150 = "any";
  var peg$c151 = "all";
  var peg$c152 = "first";
  var peg$r0 = /^[ \t\r]/;
  var peg$r1 = /^[^\n]/;
  var peg$r2 = /^[ \t]/;
  var peg$r3 = /^[^`\r\n]/;
  var peg$r4 = /^[0-9]/;
  var peg$r5 = /^["$'@[-\]`{}]/;
  var peg$r6 = /^["'.0\\nrt]/;
  var peg$r7 = /^[ \t\r\n\/\]@${{}"'`]/;
  var peg$r8 = /^[\/[\]@${}]/;
  var peg$r9 = /^[\]\/[\]@${}]/;
  var peg$r10 = /^[\]]/;
  var peg$r11 = /^[a-zA-Z_]/;
  var peg$r12 = /^[a-zA-Z0-9_]/;
  var peg$r13 = /^[.~]/;
  var peg$r14 = /^[ \t\r\n\u200B\u200C\u200D]/;
  var peg$r15 = /^[ \t\r\n]/;
  var peg$r16 = /^[ \t\r\u200B\u200C\u200D]/;
  var peg$r17 = /^[\r\u2028-\u2029]/;
  var peg$r18 = /^[^\r\n]/;
  var peg$r19 = /^[<"]/;
  var peg$r20 = /^[`<@]/;
  var peg$r21 = /^[a-zA-Z0-9.\-]/;
  var peg$r22 = /^[^> ]/;
  var peg$r23 = /^[^@|&;[\]\n \t]/;
  var peg$r24 = /^[a-zA-Z0-9_\-]/;
  var peg$r25 = /^[a-zA-Z0-9_:\-]/;
  var peg$r26 = /^[a-zA-Z0-9_.\/\-]/;
  var peg$r27 = /^["'),`]/;
  var peg$r28 = /^["'),\\`]/;
  var peg$r29 = /^["@<\n\r]/;
  var peg$r30 = /^[`@<]/;
  var peg$r31 = /^[<@]/;
  var peg$r32 = /^[ \t\r\n\/\]{}]/;
  var peg$r33 = /^[^[\n]/;
  var peg$r34 = /^[^\]]/;
  var peg$r35 = /^[(.-\/]/;
  var peg$r36 = /^[a-zA-Z0-9_@\-]/;
  var peg$r37 = /^[a-zA-Z0-9_\/@\-]/;
  var peg$r38 = /^[^ \t\n\r]/;
  var peg$r39 = /^[^ \t\n\r"'[\]]/;
  var peg$r40 = /^[^\/s]/;
  var peg$r41 = /^[^"]/;
  var peg$r42 = /^[^']/;
  var peg$r43 = /^[^@\\s\n]/;
  var peg$r44 = /^[\]"'\r\n]/;
  var peg$r45 = /^[dhmsw]/;
  var peg$r46 = /^[<>]/;
  var peg$r47 = /^[&>]/;
  var peg$r48 = /^[^"@]/;
  var peg$r49 = /^[^@|&;<> \t\n\r"']/;
  var peg$r50 = /^[^}]/;
  var peg$r51 = /^[ \t\n\r]/;
  var peg$r52 = /^[^#\]]/;
  var peg$r53 = /^[^\\s\\n]/;
  var peg$r54 = /^[^)]/;
  var peg$r55 = /^[a-f0-9]/;
  var peg$r56 = /^[^,)]/;
  var peg$e0 = peg$classExpectation([
    " ",
    "	",
    "\r"
  ], false, false);
  var peg$e1 = peg$literalExpectation(">>", false);
  var peg$e2 = peg$literalExpectation("<<", false);
  var peg$e3 = peg$classExpectation([
    "\n"
  ], true, false);
  var peg$e4 = peg$literalExpectation("\n", false);
  var peg$e5 = peg$literalExpectation("{{", false);
  var peg$e6 = peg$literalExpectation("}}", false);
  var peg$e7 = peg$literalExpectation("::", false);
  var peg$e8 = peg$anyExpectation();
  var peg$e9 = peg$classExpectation([
    " ",
    "	"
  ], false, false);
  var peg$e10 = peg$literalExpectation("```", false);
  var peg$e11 = peg$literalExpectation("mlld-run", false);
  var peg$e12 = peg$classExpectation([
    "`",
    "\r",
    "\n"
  ], true, false);
  var peg$e13 = peg$otherExpectation("Top-level directive context");
  var peg$e14 = peg$otherExpectation("Variable reference context");
  var peg$e15 = peg$otherExpectation("Right-hand side context");
  var peg$e16 = peg$otherExpectation("Plain text context");
  var peg$e17 = peg$otherExpectation("Run-style code block context");
  var peg$e18 = peg$otherExpectation("Exec /run right-hand side context");
  var peg$e19 = peg$otherExpectation("Path starting with @variable context");
  var peg$e20 = peg$otherExpectation("Directive boundary");
  var peg$e21 = peg$otherExpectation("YAML frontmatter");
  var peg$e22 = peg$literalExpectation("---", false);
  var peg$e23 = peg$otherExpectation("String Literal");
  var peg$e24 = peg$literalExpectation("'", false);
  var peg$e25 = peg$otherExpectation("Number Literal");
  var peg$e26 = peg$literalExpectation("-", false);
  var peg$e27 = peg$classExpectation([
    [
      "0",
      "9"
    ]
  ], false, false);
  var peg$e28 = peg$literalExpectation(".", false);
  var peg$e29 = peg$otherExpectation("Boolean Literal");
  var peg$e30 = peg$literalExpectation("true", false);
  var peg$e31 = peg$literalExpectation("false", false);
  var peg$e32 = peg$otherExpectation("Null Literal");
  var peg$e33 = peg$literalExpectation("null", false);
  var peg$e34 = peg$otherExpectation("Wildcard Literal");
  var peg$e35 = peg$literalExpectation("*", false);
  var peg$e36 = peg$otherExpectation("Multi-line Template Literal");
  var peg$e37 = peg$literalExpectation("[[", false);
  var peg$e38 = peg$literalExpectation("]]", false);
  var peg$e39 = peg$otherExpectation("Escape sequence");
  var peg$e40 = peg$literalExpectation("\\", false);
  var peg$e41 = peg$classExpectation([
    '"',
    "$",
    "'",
    "@",
    [
      "[",
      "]"
    ],
    "`",
    "{",
    "}"
  ], false, false);
  var peg$e42 = peg$otherExpectation("String escape sequence");
  var peg$e43 = peg$classExpectation([
    '"',
    "'",
    ".",
    "0",
    "\\",
    "n",
    "r",
    "t"
  ], false, false);
  var peg$e44 = peg$otherExpectation("Plain text segment");
  var peg$e45 = peg$classExpectation([
    " ",
    "	",
    "\r",
    "\n",
    "/",
    "]",
    "@",
    "$",
    "{",
    "{",
    "}",
    '"',
    "'",
    "`"
  ], false, false);
  var peg$e46 = peg$otherExpectation("Template text segment");
  var peg$e47 = peg$literalExpectation("<", false);
  var peg$e48 = peg$otherExpectation("Command text segment");
  var peg$e49 = peg$classExpectation([
    "/",
    "[",
    "]",
    "@",
    "$",
    "{",
    "}"
  ], false, false);
  var peg$e50 = peg$otherExpectation("Path text segment");
  var peg$e51 = peg$classExpectation([
    "]",
    "/",
    "[",
    "]",
    "@",
    "$",
    "{",
    "}"
  ], false, false);
  var peg$e52 = peg$otherExpectation("Section text segment");
  var peg$e53 = peg$classExpectation([
    "]"
  ], false, false);
  var peg$e54 = peg$otherExpectation("String content with escapes");
  var peg$e55 = peg$literalExpectation('"', false);
  var peg$e56 = peg$otherExpectation("Single-quoted string content with escapes");
  var peg$e57 = peg$otherExpectation("Backtick string content with escapes");
  var peg$e58 = peg$literalExpectation("`", false);
  var peg$e59 = peg$otherExpectation("Path separator");
  var peg$e60 = peg$literalExpectation("/", false);
  var peg$e61 = peg$otherExpectation("Dot separator");
  var peg$e62 = peg$otherExpectation("Section marker");
  var peg$e63 = peg$literalExpectation("#", false);
  var peg$e64 = peg$otherExpectation("Identifier");
  var peg$e65 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    "_"
  ], false, false);
  var peg$e66 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "_"
  ], false, false);
  var peg$e67 = peg$otherExpectation("Special Path Character");
  var peg$e68 = peg$classExpectation([
    ".",
    "~"
  ], false, false);
  var peg$e69 = peg$otherExpectation("Path Separator");
  var peg$e70 = peg$otherExpectation("Dot Separator");
  var peg$e71 = peg$otherExpectation("Section Marker");
  var peg$e72 = peg$otherExpectation("Backtick Sequence");
  var peg$e73 = peg$otherExpectation("Reserved Directive Name");
  var peg$e74 = peg$literalExpectation("/var", false);
  var peg$e75 = peg$literalExpectation("/show", false);
  var peg$e76 = peg$literalExpectation("/run", false);
  var peg$e77 = peg$literalExpectation("/exe", false);
  var peg$e78 = peg$literalExpectation("/path", false);
  var peg$e79 = peg$literalExpectation("/import", false);
  var peg$e80 = peg$literalExpectation("/when", false);
  var peg$e81 = peg$literalExpectation("/output", false);
  var peg$e82 = peg$otherExpectation("whitespace");
  var peg$e83 = peg$classExpectation([
    " ",
    "	",
    "\r",
    "\n",
    "\u200B",
    "\u200C",
    "\u200D"
  ], false, false);
  var peg$e84 = peg$otherExpectation("mandatory whitespace");
  var peg$e85 = peg$classExpectation([
    " ",
    "	",
    "\r",
    "\n"
  ], false, false);
  var peg$e86 = peg$otherExpectation("horizontal whitespace");
  var peg$e87 = peg$classExpectation([
    " ",
    "	",
    "\r",
    "\u200B",
    "\u200C",
    "\u200D"
  ], false, false);
  var peg$e88 = peg$literalExpectation("\r\n", false);
  var peg$e89 = peg$classExpectation([
    "\r",
    [
      "\u2028",
      "\u2029"
    ]
  ], false, false);
  var peg$e90 = peg$classExpectation([
    "\r",
    "\n"
  ], true, false);
  var peg$e91 = peg$otherExpectation("alligator expression");
  var peg$e92 = peg$literalExpectation(">", false);
  var peg$e93 = peg$otherExpectation("URL source");
  var peg$e94 = peg$literalExpectation("https", false);
  var peg$e95 = peg$literalExpectation("http", false);
  var peg$e96 = peg$literalExpectation("://", false);
  var peg$e97 = peg$otherExpectation("file path source");
  var peg$e98 = peg$otherExpectation("quoted path");
  var peg$e99 = peg$otherExpectation("unquoted path");
  var peg$e100 = peg$otherExpectation("alligator path parts");
  var peg$e101 = peg$otherExpectation("alligator variable");
  var peg$e102 = peg$literalExpectation("@", false);
  var peg$e103 = peg$otherExpectation("alligator path segment");
  var peg$e104 = peg$literalExpectation(" as ", false);
  var peg$e105 = peg$otherExpectation("alligator section identifier");
  var peg$e106 = peg$literalExpectation("as", false);
  var peg$e107 = peg$otherExpectation("section rename");
  var peg$e108 = peg$otherExpectation("section rename string template");
  var peg$e109 = peg$classExpectation([
    "<",
    '"'
  ], false, false);
  var peg$e110 = peg$classExpectation([
    "`",
    "<",
    "@"
  ], false, false);
  var peg$e111 = peg$otherExpectation("as transform");
  var peg$e112 = peg$otherExpectation("alligator transform template");
  var peg$e113 = peg$literalExpectation("<>", false);
  var peg$e114 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    ".",
    "-"
  ], false, false);
  var peg$e115 = peg$classExpectation([
    ">",
    " "
  ], true, false);
  var peg$e116 = peg$otherExpectation("array literal");
  var peg$e117 = peg$literalExpectation("[", false);
  var peg$e118 = peg$literalExpectation("]", false);
  var peg$e119 = peg$otherExpectation("array items");
  var peg$e120 = peg$literalExpectation(",", false);
  var peg$e121 = peg$otherExpectation("array value");
  var peg$e122 = peg$literalExpectation("|", false);
  var peg$e123 = peg$literalExpectation("&&", false);
  var peg$e124 = peg$literalExpectation("||", false);
  var peg$e125 = peg$literalExpectation(";", false);
  var peg$e126 = peg$classExpectation([
    "@",
    "|",
    "&",
    ";",
    "[",
    "]",
    "\n",
    " ",
    "	"
  ], true, false);
  var peg$e127 = peg$literalExpectation("run", false);
  var peg$e128 = peg$literalExpectation("npx", false);
  var peg$e129 = peg$literalExpectation("npm", false);
  var peg$e130 = peg$literalExpectation("yarn", false);
  var peg$e131 = peg$literalExpectation("pnpm", false);
  var peg$e132 = peg$literalExpectation("bun", false);
  var peg$e133 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "_",
    "-"
  ], false, false);
  var peg$e134 = peg$literalExpectation(":", false);
  var peg$e135 = peg$literalExpectation("-m", false);
  var peg$e136 = peg$literalExpectation("python", false);
  var peg$e137 = peg$literalExpectation("python3", false);
  var peg$e138 = peg$literalExpectation("python2", false);
  var peg$e139 = peg$literalExpectation("node", false);
  var peg$e140 = peg$literalExpectation("sh", false);
  var peg$e141 = peg$literalExpectation("bash", false);
  var peg$e142 = peg$literalExpectation("zsh", false);
  var peg$e143 = peg$literalExpectation("perl", false);
  var peg$e144 = peg$literalExpectation("ruby", false);
  var peg$e145 = peg$literalExpectation("-e", false);
  var peg$e146 = peg$literalExpectation("-c", false);
  var peg$e147 = peg$literalExpectation("make", false);
  var peg$e148 = peg$literalExpectation("cargo", false);
  var peg$e149 = peg$literalExpectation("go", false);
  var peg$e150 = peg$literalExpectation("gradle", false);
  var peg$e151 = peg$literalExpectation("maven", false);
  var peg$e152 = peg$literalExpectation("mvn", false);
  var peg$e153 = peg$literalExpectation("rake", false);
  var peg$e154 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "_",
    ":",
    "-"
  ], false, false);
  var peg$e155 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "_",
    ".",
    "/",
    "-"
  ], false, false);
  var peg$e156 = peg$otherExpectation("command reference");
  var peg$e157 = peg$otherExpectation("command arguments");
  var peg$e158 = peg$literalExpectation("(", false);
  var peg$e159 = peg$literalExpectation(")", false);
  var peg$e160 = peg$otherExpectation("command arguments list");
  var peg$e161 = peg$otherExpectation("command argument");
  var peg$e162 = peg$otherExpectation("nested exec invocation");
  var peg$e163 = peg$otherExpectation("command template argument");
  var peg$e164 = peg$otherExpectation("backtick template argument");
  var peg$e165 = peg$otherExpectation("backtick template");
  var peg$e166 = peg$otherExpectation("escaped argument");
  var peg$e167 = peg$classExpectation([
    '"',
    "'",
    ")",
    ",",
    "`"
  ], false, false);
  var peg$e168 = peg$otherExpectation("raw argument");
  var peg$e169 = peg$classExpectation([
    '"',
    "'",
    ")",
    ",",
    "\\",
    "`"
  ], false, false);
  var peg$e170 = peg$otherExpectation("Literal content without interpolation");
  var peg$e171 = peg$otherExpectation("Semantic section content");
  var peg$e172 = peg$otherExpectation("Path component parts");
  var peg$e173 = peg$otherExpectation("Section name");
  var peg$e174 = peg$otherExpectation("Semantic command content with @var interpolation");
  var peg$e175 = peg$otherExpectation("Command content with @var interpolation");
  var peg$e176 = peg$otherExpectation("Quoted string in command");
  var peg$e177 = peg$classExpectation([
    '"',
    "@",
    "<",
    "\n",
    "\r"
  ], false, false);
  var peg$e178 = peg$classExpectation([
    "`",
    "@",
    "<"
  ], false, false);
  var peg$e179 = peg$classExpectation([
    "<",
    "@"
  ], false, false);
  var peg$e180 = peg$otherExpectation("Permissive command text content");
  var peg$e181 = peg$otherExpectation("Content with @var interpolation");
  var peg$e182 = peg$otherExpectation("Content with {{var}} interpolation");
  var peg$e183 = peg$literalExpectation(":::", false);
  var peg$e184 = peg$otherExpectation("Unquoted path with @var interpolation");
  var peg$e185 = peg$otherExpectation("Unquoted path text");
  var peg$e186 = peg$classExpectation([
    " ",
    "	",
    "\r",
    "\n",
    "/",
    "]",
    "{",
    "}"
  ], false, false);
  var peg$e187 = peg$otherExpectation("Unquoted command with @var interpolation");
  var peg$e188 = peg$otherExpectation("Semantic code content without any interpolation");
  var peg$e189 = peg$otherExpectation("Code content without interpolation");
  var peg$e190 = peg$classExpectation([
    "[",
    "\n"
  ], true, false);
  var peg$e191 = peg$otherExpectation("Literal code content with natural bracket nesting");
  var peg$e192 = peg$otherExpectation("Literal text without any interpolation");
  var peg$e193 = peg$otherExpectation("Double quoted content with @var interpolation");
  var peg$e194 = peg$otherExpectation("Template content with interpolation");
  var peg$e195 = peg$otherExpectation("Template interpolation patterns");
  var peg$e196 = peg$otherExpectation("Command interpolation patterns");
  var peg$e197 = peg$otherExpectation("Semantic content for @text directive");
  var peg$e198 = peg$classExpectation([
    "]"
  ], true, false);
  var peg$e199 = peg$otherExpectation("Wrapped template content");
  var peg$e200 = peg$otherExpectation("Wrapped command content");
  var peg$e201 = peg$otherExpectation("Command content interpolation patterns");
  var peg$e202 = peg$otherExpectation("Wrapped code content");
  var peg$e203 = peg$otherExpectation("data object literal");
  var peg$e204 = peg$literalExpectation("{", false);
  var peg$e205 = peg$literalExpectation("}", false);
  var peg$e206 = peg$otherExpectation("data context property value");
  var peg$e207 = peg$otherExpectation("data template value");
  var peg$e208 = peg$otherExpectation("data context string value");
  var peg$e209 = peg$otherExpectation("standard directive ending");
  var peg$e210 = peg$otherExpectation("secured directive ending");
  var peg$e211 = peg$otherExpectation("commented directive ending");
  var peg$e212 = peg$otherExpectation("exe assignment value");
  var peg$e213 = peg$otherExpectation("exe exec invocation");
  var peg$e214 = peg$otherExpectation("exe slash run pattern");
  var peg$e215 = peg$otherExpectation("exe run command pattern");
  var peg$e216 = peg$otherExpectation("exe code pattern");
  var peg$e217 = peg$otherExpectation("exe command pattern");
  var peg$e218 = peg$otherExpectation("exe template pattern");
  var peg$e219 = peg$otherExpectation("exe section pattern");
  var peg$e220 = peg$otherExpectation("exe resolver pattern");
  var peg$e221 = peg$otherExpectation("exe command reference");
  var peg$e222 = peg$classExpectation([
    "(",
    [
      ".",
      "/"
    ]
  ], false, false);
  var peg$e223 = peg$otherExpectation("exe environment declaration");
  var peg$e224 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "_",
    "@",
    "-"
  ], false, false);
  var peg$e225 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "_",
    "/",
    "@",
    "-"
  ], false, false);
  var peg$e226 = peg$literalExpectation("?", false);
  var peg$e227 = peg$literalExpectation("==", false);
  var peg$e228 = peg$literalExpectation("!=", false);
  var peg$e229 = peg$literalExpectation("<=", false);
  var peg$e230 = peg$literalExpectation(">=", false);
  var peg$e231 = peg$literalExpectation("=", false);
  var peg$e232 = peg$literalExpectation("!", false);
  var peg$e233 = peg$otherExpectation("file reference interpolation");
  var peg$e234 = peg$otherExpectation("file reference content");
  var peg$e235 = peg$otherExpectation("condensed pipe");
  var peg$e236 = peg$otherExpectation("pipe chain");
  var peg$e237 = peg$otherExpectation("field chain");
  var peg$e238 = peg$literalExpectation("foreach", false);
  var peg$e239 = peg$literalExpectation("with", false);
  var peg$e240 = peg$literalExpectation("separator", false);
  var peg$e241 = peg$literalExpectation("template", false);
  var peg$e242 = peg$otherExpectation("for iteration pattern");
  var peg$e243 = peg$literalExpectation("in", false);
  var peg$e244 = peg$otherExpectation("for action");
  var peg$e245 = peg$literalExpectation("output", false);
  var peg$e246 = peg$literalExpectation("to", false);
  var peg$e247 = peg$literalExpectation("show", false);
  var peg$e248 = peg$literalExpectation("var", false);
  var peg$e249 = peg$otherExpectation("comma with optional whitespace");
  var peg$e250 = peg$otherExpectation("semicolon with optional whitespace");
  var peg$e251 = peg$otherExpectation("environment variable list");
  var peg$e252 = peg$otherExpectation("environment variable reference");
  var peg$e253 = peg$otherExpectation("output source");
  var peg$e254 = peg$otherExpectation("output source (variables only)");
  var peg$e255 = peg$otherExpectation("output source (variables and exec)");
  var peg$e256 = peg$literalExpectation("trust", false);
  var peg$e257 = peg$literalExpectation("needs", false);
  var peg$e258 = peg$literalExpectation("@run", false);
  var peg$e259 = peg$otherExpectation("output target");
  var peg$e260 = peg$otherExpectation("stream target");
  var peg$e261 = peg$literalExpectation("stdout", false);
  var peg$e262 = peg$literalExpectation("stderr", false);
  var peg$e263 = peg$otherExpectation("environment variable target");
  var peg$e264 = peg$literalExpectation("env", false);
  var peg$e265 = peg$otherExpectation("resolver target");
  var peg$e266 = peg$classExpectation([
    " ",
    "	",
    "\n",
    "\r"
  ], true, false);
  var peg$e267 = peg$otherExpectation("file target");
  var peg$e268 = peg$otherExpectation("output file path");
  var peg$e269 = peg$classExpectation([
    " ",
    "	",
    "\n",
    "\r",
    '"',
    "'",
    "[",
    "]"
  ], true, false);
  var peg$e270 = peg$otherExpectation("output format");
  var peg$e271 = peg$classExpectation([
    "/",
    "s"
  ], true, false);
  var peg$e272 = peg$otherExpectation("Any path expression");
  var peg$e273 = peg$otherExpectation("quoted string path");
  var peg$e274 = peg$classExpectation([
    '"'
  ], true, false);
  var peg$e275 = peg$classExpectation([
    "'"
  ], true, false);
  var peg$e276 = peg$otherExpectation("URL protocol type");
  var peg$e277 = peg$literalExpectation("s", false);
  var peg$e278 = peg$literalExpectation("file", false);
  var peg$e279 = peg$otherExpectation("URL content");
  var peg$e280 = peg$literalExpectation("//", false);
  var peg$e281 = peg$otherExpectation("URL parts");
  var peg$e282 = peg$otherExpectation("Escaped backslash in URL");
  var peg$e283 = peg$literalExpectation("\\\\", false);
  var peg$e284 = peg$otherExpectation("Escaped @ in URL");
  var peg$e285 = peg$literalExpectation("\\@", false);
  var peg$e286 = peg$otherExpectation("URL variable reference");
  var peg$e287 = peg$otherExpectation("URL segment");
  var peg$e288 = peg$classExpectation([
    "@",
    "\\",
    "s",
    "\n"
  ], true, false);
  var peg$e289 = peg$otherExpectation("Section name or variable reference");
  var peg$e290 = peg$classExpectation([
    "]",
    '"',
    "'",
    "\r",
    "\n"
  ], false, false);
  var peg$e291 = peg$otherExpectation("In right-hand side of assignment");
  var peg$e292 = peg$otherExpectation("Security options (TTL and/or Trust)");
  var peg$e293 = peg$otherExpectation("TTL cache duration");
  var peg$e294 = peg$otherExpectation("TTL value");
  var peg$e295 = peg$otherExpectation("TTL duration");
  var peg$e296 = peg$otherExpectation("TTL time unit");
  var peg$e297 = peg$classExpectation([
    "d",
    "h",
    "m",
    "s",
    "w"
  ], false, false);
  var peg$e298 = peg$otherExpectation("TTL special value");
  var peg$e299 = peg$literalExpectation("live", false);
  var peg$e300 = peg$literalExpectation("static", false);
  var peg$e301 = peg$otherExpectation("Trust level");
  var peg$e302 = peg$otherExpectation("Trust level value");
  var peg$e303 = peg$literalExpectation("always", false);
  var peg$e304 = peg$literalExpectation("verify", false);
  var peg$e305 = peg$literalExpectation("never", false);
  var peg$e306 = peg$otherExpectation("Integer");
  var peg$e307 = peg$otherExpectation("Data Context String");
  var peg$e308 = peg$otherExpectation("Template Context String");
  var peg$e309 = peg$otherExpectation("Expression Context String");
  var peg$e310 = peg$classExpectation([
    "<",
    ">"
  ], false, false);
  var peg$e311 = peg$literalExpectation("&>", false);
  var peg$e312 = peg$literalExpectation("&", false);
  var peg$e313 = peg$classExpectation([
    "&",
    ">"
  ], false, false);
  var peg$e314 = peg$classExpectation([
    '"',
    "@"
  ], true, false);
  var peg$e315 = peg$classExpectation([
    "@",
    "|",
    "&",
    ";",
    "<",
    ">",
    " ",
    "	",
    "\n",
    "\r",
    '"',
    "'"
  ], true, false);
  var peg$e316 = peg$otherExpectation("tail modifiers");
  var peg$e317 = peg$literalExpectation("pipeline", false);
  var peg$e318 = peg$otherExpectation("TTL clause");
  var peg$e319 = peg$otherExpectation("unified variable or exec reference");
  var peg$e320 = peg$otherExpectation("unified reference with tail support");
  var peg$e321 = peg$otherExpectation("unified reference without tail support");
  var peg$e322 = peg$otherExpectation("field access exec invocation");
  var peg$e323 = peg$otherExpectation("field access exec invocation without tail");
  var peg$e324 = peg$otherExpectation("simple exec invocation");
  var peg$e325 = peg$otherExpectation("simple exec invocation without tail");
  var peg$e326 = peg$otherExpectation("variable reference with optional tail modifiers");
  var peg$e327 = peg$otherExpectation("variable reference without tail modifiers");
  var peg$e328 = peg$otherExpectation("Code brackets {...}");
  var peg$e329 = peg$otherExpectation("Command brackets {...}");
  var peg$e330 = peg$otherExpectation("Unified run content [(...))]");
  var peg$e331 = peg$literalExpectation("[(", false);
  var peg$e332 = peg$literalExpectation(")]", false);
  var peg$e333 = peg$classExpectation([
    "}"
  ], true, false);
  var peg$e334 = peg$classExpectation([
    " ",
    "	",
    "\n",
    "\r"
  ], false, false);
  var peg$e335 = peg$literalExpectation("/*", false);
  var peg$e336 = peg$literalExpectation("*/", false);
  var peg$e337 = peg$otherExpectation("var assignment value");
  var peg$e338 = peg$otherExpectation("alligator with field access");
  var peg$e339 = peg$otherExpectation("template with pipeline");
  var peg$e340 = peg$otherExpectation("variable with flexible pipe syntax");
  var peg$e341 = peg$otherExpectation("exec invocation pattern");
  var peg$e342 = peg$otherExpectation("object property value");
  var peg$e343 = peg$otherExpectation("code execution");
  var peg$e344 = peg$otherExpectation("code language");
  var peg$e345 = peg$literalExpectation("js", false);
  var peg$e346 = peg$literalExpectation("javascript", false);
  var peg$e347 = peg$otherExpectation("code block content");
  var peg$e348 = peg$otherExpectation("when expression");
  var peg$e349 = peg$literalExpectation("when", false);
  var peg$e350 = peg$literalExpectation("=>", false);
  var peg$e351 = peg$otherExpectation("for expression");
  var peg$e352 = peg$literalExpectation("for", false);
  var peg$e353 = peg$literalExpectation("each", false);
  var peg$e354 = peg$otherExpectation("Special reserved variable");
  var peg$e355 = peg$literalExpectation("now", false);
  var peg$e356 = peg$literalExpectation("base", false);
  var peg$e357 = peg$literalExpectation("input", false);
  var peg$e358 = peg$literalExpectation("debug", false);
  var peg$e359 = peg$literalExpectation("frontmatter", false);
  var peg$e360 = peg$literalExpectation("fm", false);
  var peg$e361 = peg$otherExpectation("variable reference with tail modifiers");
  var peg$e362 = peg$otherExpectation("variable with optional pipes");
  var peg$e363 = peg$otherExpectation("variable reference in template context");
  var peg$e364 = peg$literalExpectation("format", false);
  var peg$e365 = peg$literalExpectation("asSection", false);
  var peg$e366 = peg$literalExpectation("from", false);
  var peg$e367 = peg$classExpectation([
    "#",
    "]"
  ], true, false);
  var peg$e368 = peg$literalExpectation("nodejs", false);
  var peg$e369 = peg$literalExpectation("py", false);
  var peg$e370 = peg$classExpectation([
    "\\",
    "s",
    "\\",
    "n"
  ], true, false);
  var peg$e371 = peg$otherExpectation("Section extraction");
  var peg$e372 = peg$classExpectation([
    ")"
  ], true, false);
  var peg$e373 = peg$literalExpectation("risk.high", false);
  var peg$e374 = peg$literalExpectation("risk.med", false);
  var peg$e375 = peg$literalExpectation("risk.low", false);
  var peg$e376 = peg$literalExpectation("risk", false);
  var peg$e377 = peg$literalExpectation("about", false);
  var peg$e378 = peg$literalExpectation("meta", false);
  var peg$e379 = peg$otherExpectation("for directive simple");
  var peg$e380 = peg$literalExpectation("/for", false);
  var peg$e381 = peg$literalExpectation("@item", false);
  var peg$e382 = peg$otherExpectation("for directive");
  var peg$e383 = peg$literalExpectation("@INPUT", true);
  var peg$e384 = peg$literalExpectation("@NOW", true);
  var peg$e385 = peg$literalExpectation("@TIME", true);
  var peg$e386 = peg$literalExpectation("@stdin", false);
  var peg$e387 = peg$otherExpectation("Module Identifier Part");
  var peg$e388 = peg$classExpectation([
    [
      "a",
      "f"
    ],
    [
      "0",
      "9"
    ]
  ], false, false);
  var peg$e389 = peg$literalExpectation("env:", false);
  var peg$e390 = peg$classExpectation([
    ",",
    ")"
  ], true, false);
  var peg$e391 = peg$literalExpectation("PROJECTPATH", false);
  var peg$e392 = peg$literalExpectation("under", false);
  var peg$e393 = peg$otherExpectation("var directive");
  var peg$e394 = peg$literalExpectation("any", false);
  var peg$e395 = peg$literalExpectation("all", false);
  var peg$e396 = peg$literalExpectation("first", false);
  var peg$f0 = /* @__PURE__ */ __name(function(frontmatter, nodes) {
    helpers_default.debug("Start: Entered");
    const result = [];
    if (frontmatter) result.push(frontmatter);
    result.push(...nodes);
    return result;
  }, "peg$f0");
  var peg$f1 = /* @__PURE__ */ __name(function(ws, term) {
    let i = offset();
    while (i < input.length && (input[i] === " " || input[i] === "	" || input[i] === "\r")) {
      i++;
    }
    return i < input.length && input[i] === "/" && helpers_default.isLogicalLineStart(input, i);
  }, "peg$f1");
  var peg$f2 = /* @__PURE__ */ __name(function(ws, term) {
    return helpers_default.createNode(node_type_default.Newline, {
      content: term,
      location: location()
    });
  }, "peg$f2");
  var peg$f3 = /* @__PURE__ */ __name(function(ws, term) {
    return term;
  }, "peg$f3");
  var peg$f4 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    const isAtLineStart = helpers_default.isLogicalLineStart(input, pos);
    return isAtLineStart;
  }, "peg$f4");
  var peg$f5 = /* @__PURE__ */ __name(function(marker, content) {
    return helpers_default.createNode(node_type_default.Comment, {
      content: content.trim(),
      marker,
      location: location()
    });
  }, "peg$f5");
  var peg$f6 = /* @__PURE__ */ __name(function(marker, content) {
    return helpers_default.createNode(node_type_default.Comment, {
      content: content.trim(),
      marker,
      location: location()
    });
  }, "peg$f6");
  var peg$f7 = /* @__PURE__ */ __name(function() {
    return ">>";
  }, "peg$f7");
  var peg$f8 = /* @__PURE__ */ __name(function() {
    return "<<";
  }, "peg$f8");
  var peg$f9 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f9");
  var peg$f10 = /* @__PURE__ */ __name(function(marker, content) {
    return {
      type: "Comment",
      marker,
      content: content.trim(),
      location: location()
    };
  }, "peg$f10");
  var peg$f11 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createNode(node_type_default.Text, {
      content: first + rest.join(""),
      location: location()
    });
  }, "peg$f11");
  var peg$f12 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    const isAtLineStart = helpers_default.isLogicalLineStart(input, pos);
    if (isAtLineStart && input[pos] === "/") {
      return helpers_default.isSlashDirectiveContext(input, pos);
    }
    if (isAtLineStart && input[pos] === ">" && input[pos + 1] === ">") {
      return true;
    }
    return false;
  }, "peg$f12");
  var peg$f13 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    helpers_default.trace(pos, "brace/backtick guard");
    return true;
  }, "peg$f13");
  var peg$f14 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f14");
  var peg$f15 = /* @__PURE__ */ __name(function() {
    return helpers_default.isLogicalLineStart(input, offset());
  }, "peg$f15");
  var peg$f16 = /* @__PURE__ */ __name(function(dir) {
    return dir;
  }, "peg$f16");
  var peg$f17 = /* @__PURE__ */ __name(function(c) {
    return c;
  }, "peg$f17");
  var peg$f18 = /* @__PURE__ */ __name(function(content) {
    const rawContent = content.join("");
    helpers_default.debug("MlldRunFence: Parsing content", {
      content: rawContent
    });
    try {
      const innerParser = peg$parse;
      const parsed = innerParser(rawContent, {
        ...options,
        startRule: "Start"
      });
      return helpers_default.createNode(node_type_default.MlldRunBlock, {
        content: parsed,
        raw: rawContent,
        location: location()
      });
    } catch (e) {
      return helpers_default.createNode(node_type_default.MlldRunBlock, {
        content: [],
        raw: rawContent,
        error: e.message,
        location: location()
      });
    }
  }, "peg$f18");
  var peg$f19 = /* @__PURE__ */ __name(function(opener) {
    const rest = input.substring(peg$currPos);
    return rest.startsWith("`") && rest.match(/^`+mlld-run/);
  }, "peg$f19");
  var peg$f20 = /* @__PURE__ */ __name(function(opener) {
    helpers_default.mlldError("mlld-run blocks must use exactly 3 backticks (```). Nested backticks are not supported.");
  }, "peg$f20");
  var peg$f21 = /* @__PURE__ */ __name(function(opener, lang) {
    return true;
  }, "peg$f21");
  var peg$f22 = /* @__PURE__ */ __name(function(opener, lang, closer) {
    return closer.length === opener.length;
  }, "peg$f22");
  var peg$f23 = /* @__PURE__ */ __name(function(opener, lang, c) {
    return c;
  }, "peg$f23");
  var peg$f24 = /* @__PURE__ */ __name(function(opener, lang, content, closer) {
    return closer.length !== opener.length;
  }, "peg$f24");
  var peg$f25 = /* @__PURE__ */ __name(function(opener, lang, content, closer) {
    const rawContent = content.join("");
    const preserveCodeFences = options?.preserveCodeFences !== false;
    const finalContent = preserveCodeFences ? opener.join("") + (lang ? lang : "") + "\n" + rawContent + (rawContent ? "" : "\n") + closer.join("") : rawContent.trimEnd();
    return helpers_default.createNode(node_type_default.CodeFence, {
      language: lang || void 0,
      content: finalContent,
      location: location()
    });
  }, "peg$f25");
  var peg$f26 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f26");
  var peg$f27 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isSlashDirectiveContext(input, pos);
  }, "peg$f27");
  var peg$f28 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isAtVariableContext(input, pos);
  }, "peg$f28");
  var peg$f29 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isRHSContext(input, pos);
  }, "peg$f29");
  var peg$f30 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isPlainTextContext(input, pos);
  }, "peg$f30");
  var peg$f31 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    const isRHS = helpers_default.isRHSContext(input, pos);
    let isInRunContext = false;
    if (isRHS) {
      let i = pos - 1;
      let seenSlashSymbol = false;
      let potentialRunKeyword = "";
      while (i >= 0 && " 	\r\n".includes(input[i])) {
        i--;
      }
      while (i >= 0 && /[a-zA-Z]/.test(input[i])) {
        potentialRunKeyword = input[i] + potentialRunKeyword;
        i--;
      }
      if (i >= 0 && input[i] === "/") {
        seenSlashSymbol = true;
      }
      if (seenSlashSymbol && potentialRunKeyword === "run") {
        isInRunContext = true;
      }
    }
    return isInRunContext || helpers_default.isInRunCodeBlockContext(input, pos);
  }, "peg$f31");
  var peg$f32 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    if (!helpers_default.isRHSContext(input, pos)) {
      return false;
    }
    let isInExecDirective = false;
    let i = pos - 1;
    let foundEquals = false;
    while (i >= 0 && !foundEquals) {
      if (input[i] === "=") {
        foundEquals = true;
      } else if (input[i] === "\n") {
        return false;
      }
      i--;
    }
    if (foundEquals) {
      i--;
      while (i >= 0 && " 	\r".includes(input[i])) {
        i--;
      }
      let keyword = "";
      while (i >= 0 && /[a-zA-Z]/.test(input[i])) {
        keyword = input[i] + keyword;
        i--;
      }
      if (i >= 0 && input[i] === "/") {
        if (keyword === "exec") {
          isInExecDirective = true;
        }
      }
    }
    return isInExecDirective;
  }, "peg$f32");
  var peg$f33 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    const remaining = input.substring(pos);
    const pathPattern = /^@[a-zA-Z_][a-zA-Z0-9_]*[\/\.]/;
    return pathPattern.test(remaining);
  }, "peg$f33");
  var peg$f34 = /* @__PURE__ */ __name(function() {
    helpers_default.resetCodeParsingState();
    helpers_default.debug("DirectiveBoundary: Parser state reset between directives");
    return true;
  }, "peg$f34");
  var peg$f35 = /* @__PURE__ */ __name(function() {
    return offset() === 0;
  }, "peg$f35");
  var peg$f36 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Frontmatter, {
      content,
      location: location()
    });
  }, "peg$f36");
  var peg$f37 = /* @__PURE__ */ __name(function(line) {
    return line;
  }, "peg$f37");
  var peg$f38 = /* @__PURE__ */ __name(function(lines) {
    return lines.join("");
  }, "peg$f38");
  var peg$f39 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("") + "\n";
  }, "peg$f39");
  var peg$f40 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f40");
  var peg$f41 = /* @__PURE__ */ __name(function(digits, decimal) {
    return parseFloat((text().startsWith("-") ? "-" : "") + digits.join("") + (decimal ? decimal[0] + decimal[1].join("") : ""));
  }, "peg$f41");
  var peg$f42 = /* @__PURE__ */ __name(function() {
    return true;
  }, "peg$f42");
  var peg$f43 = /* @__PURE__ */ __name(function() {
    return false;
  }, "peg$f43");
  var peg$f44 = /* @__PURE__ */ __name(function() {
    return null;
  }, "peg$f44");
  var peg$f45 = /* @__PURE__ */ __name(function() {
    return "*";
  }, "peg$f45");
  var peg$f46 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f46");
  var peg$f47 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f47");
  var peg$f48 = /* @__PURE__ */ __name(function(char) {
    return char === "\\" ? "\\" : char;
  }, "peg$f48");
  var peg$f49 = /* @__PURE__ */ __name(function(char) {
    switch (char) {
      case "n":
        return "\n";
      case "t":
        return "	";
      case "r":
        return "\r";
      case "0":
        return "\0";
      case "\\":
        return "\\";
      case '"':
        return '"';
      case "'":
        return "'";
      case ".":
        return ".";
      default:
        return char;
    }
  }, "peg$f49");
  var peg$f50 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("BaseTextSegment matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f50");
  var peg$f51 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f51");
  var peg$f52 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("TemplateTextSegment matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f52");
  var peg$f53 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f53");
  var peg$f54 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("CommandTextSegment matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f54");
  var peg$f55 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f55");
  var peg$f56 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("PathTextSegment matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f56");
  var peg$f57 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos);
    return !rest.match(/^\s*#\s*/);
  }, "peg$f57");
  var peg$f58 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f58");
  var peg$f59 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("SectionTextSegment matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f59");
  var peg$f60 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f60");
  var peg$f61 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f61");
  var peg$f62 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f62");
  var peg$f63 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f63");
  var peg$f64 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f64");
  var peg$f65 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f65");
  var peg$f66 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f66");
  var peg$f67 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.PathSeparator, {
      value: "/",
      location: location()
    });
  }, "peg$f67");
  var peg$f68 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.DotSeparator, {
      value: ".",
      location: location()
    });
  }, "peg$f68");
  var peg$f69 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.SectionMarker, {
      value: "#",
      location: location()
    });
  }, "peg$f69");
  var peg$f70 = /* @__PURE__ */ __name(function(first, rest) {
    return first + rest.join("");
  }, "peg$f70");
  var peg$f71 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.PathSeparator, {
      value: "/",
      location: location()
    });
  }, "peg$f71");
  var peg$f72 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.DotSeparator, {
      value: ".",
      location: location()
    });
  }, "peg$f72");
  var peg$f73 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.SectionMarker, {
      value: "#",
      location: location()
    });
  }, "peg$f73");
  var peg$f74 = /* @__PURE__ */ __name(function(backticks) {
    return backticks.length >= 3 && backticks.length <= 5;
  }, "peg$f74");
  var peg$f75 = /* @__PURE__ */ __name(function(backticks) {
    return backticks;
  }, "peg$f75");
  var peg$f76 = /* @__PURE__ */ __name(function(text2) {
    return text2.join("");
  }, "peg$f76");
  var peg$f77 = /* @__PURE__ */ __name(function(ws, term) {
    const pos = offset();
    const isBeforeDirective = input.substr(pos).match(/^\s*@[a-z]/i);
    return isBeforeDirective;
  }, "peg$f77");
  var peg$f78 = /* @__PURE__ */ __name(function(ws, term) {
    return helpers_default.createNode(node_type_default.Newline, {
      content: term,
      location: location()
    });
  }, "peg$f78");
  var peg$f79 = /* @__PURE__ */ __name(function(ws, term) {
    return helpers_default.createNode(node_type_default.Newline, {
      content: term,
      location: location()
    });
  }, "peg$f79");
  var peg$f80 = /* @__PURE__ */ __name(function(ws) {
    const atEof = offset() === input.length;
    const nextChar = input[offset()];
    return atEof || nextChar === "@" && helpers_default.isLogicalLineStart(input, offset());
  }, "peg$f80");
  var peg$f81 = /* @__PURE__ */ __name(function(ws) {
    return helpers_default.createNode(node_type_default.Newline, {
      content: "\n",
      location: location()
    });
  }, "peg$f81");
  var peg$f82 = /* @__PURE__ */ __name(function(source, options2, pipes) {
    helpers_default.debug("AlligatorExpression matched", {
      source,
      options: options2,
      pipes
    });
    return {
      type: "load-content",
      source,
      ...options2 ? {
        options: options2
      } : {},
      ...pipes && pipes.length > 0 ? {
        pipes
      } : {},
      location: location()
    };
  }, "peg$f82");
  var peg$f83 = /* @__PURE__ */ __name(function(protocol, host, path) {
    helpers_default.debug("AlligatorURL matched", {
      protocol,
      host,
      path
    });
    return {
      type: "url",
      protocol,
      host,
      path: path || "/",
      raw: text()
    };
  }, "peg$f83");
  var peg$f84 = /* @__PURE__ */ __name(function(chars) {
    helpers_default.debug("AlligatorQuotedPath matched", {
      chars
    });
    const pathString = chars.join("");
    const textNode = helpers_default.createNode(node_type_default.Text, {
      content: pathString,
      location: location()
    });
    return {
      type: "path",
      segments: [
        textNode
      ],
      raw: pathString,
      meta: helpers_default.createPathMetadata(pathString, [
        textNode
      ])
    };
  }, "peg$f84");
  var peg$f85 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("AlligatorUnquotedPath matched", {
      parts
    });
    const pathString = helpers_default.reconstructRawString(parts);
    return {
      type: "path",
      segments: parts,
      raw: pathString,
      meta: helpers_default.createPathMetadata(pathString, parts)
    };
  }, "peg$f85");
  var peg$f86 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f86");
  var peg$f87 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f87");
  var peg$f88 = /* @__PURE__ */ __name(function(id, fields) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
  }, "peg$f88");
  var peg$f89 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f89");
  var peg$f90 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f90");
  var peg$f91 = /* @__PURE__ */ __name(function(section, transform) {
    const options2 = {
      section
    };
    options2.transform = transform;
    return options2;
  }, "peg$f91");
  var peg$f92 = /* @__PURE__ */ __name(function(section, rename) {
    const options2 = {
      section
    };
    section.renamed = rename;
    return options2;
  }, "peg$f92");
  var peg$f93 = /* @__PURE__ */ __name(function(section) {
    return {
      section
    };
  }, "peg$f93");
  var peg$f94 = /* @__PURE__ */ __name(function(transform) {
    return {
      transform
    };
  }, "peg$f94");
  var peg$f95 = /* @__PURE__ */ __name(function(identifier) {
    helpers_default.debug("SectionClause matched", {
      identifier
    });
    return {
      type: "section",
      identifier
    };
  }, "peg$f95");
  var peg$f96 = /* @__PURE__ */ __name(function(varRef, fields) {
    return helpers_default.createVariableReferenceNode("sectionVariable", {
      identifier: varRef,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
  }, "peg$f96");
  var peg$f97 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("").trim();
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f97");
  var peg$f98 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f98");
  var peg$f99 = /* @__PURE__ */ __name(function(title) {
    return {
      type: "rename-template",
      parts: title
    };
  }, "peg$f99");
  var peg$f100 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f100");
  var peg$f101 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f101");
  var peg$f102 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f102");
  var peg$f103 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f103");
  var peg$f104 = /* @__PURE__ */ __name(function(id, fields) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
  }, "peg$f104");
  var peg$f105 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f105");
  var peg$f106 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f106");
  var peg$f107 = /* @__PURE__ */ __name(function(template) {
    return template;
  }, "peg$f107");
  var peg$f108 = /* @__PURE__ */ __name(function(parts) {
    return {
      type: "template",
      parts
    };
  }, "peg$f108");
  var peg$f109 = /* @__PURE__ */ __name(function(fields) {
    return {
      type: "placeholder",
      fields
    };
  }, "peg$f109");
  var peg$f110 = /* @__PURE__ */ __name(function(id, fields) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
  }, "peg$f110");
  var peg$f111 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f111");
  var peg$f112 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f112");
  var peg$f113 = /* @__PURE__ */ __name(function(first, field) {
    return field;
  }, "peg$f113");
  var peg$f114 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f114");
  var peg$f115 = /* @__PURE__ */ __name(function(id) {
    return {
      type: "field",
      value: id
    };
  }, "peg$f115");
  var peg$f116 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f116");
  var peg$f117 = /* @__PURE__ */ __name(function(chars) {
    return "/" + chars.join("");
  }, "peg$f117");
  var peg$f118 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ArrayLiteral matched empty array");
    return {
      type: "array",
      items: [],
      location: location()
    };
  }, "peg$f118");
  var peg$f119 = /* @__PURE__ */ __name(function(items) {
    helpers_default.debug("ArrayLiteral matched with items", {
      itemCount: items.length
    });
    return {
      type: "array",
      items,
      location: location()
    };
  }, "peg$f119");
  var peg$f120 = /* @__PURE__ */ __name(function(first, value) {
    return value;
  }, "peg$f120");
  var peg$f121 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f121");
  var peg$f122 = /* @__PURE__ */ __name(function(segments) {
    const allParts = [];
    const bases = [];
    const rawBases = [];
    let hasScriptRunner = false;
    let hasVariables = false;
    segments.forEach((segment) => {
      if (segment.type === "commandBase") {
        bases.push(segment.node);
        rawBases.push(segment.raw);
        allParts.push(segment.node);
        if (segment.isScriptRunner) {
          hasScriptRunner = true;
        }
      } else if (segment.type === "operator") {
        allParts.push(segment.node);
      } else if (segment.type === "argument") {
        allParts.push(...segment.parts);
        if (segment.hasVariables) {
          hasVariables = true;
        }
      }
    });
    const raw = helpers_default.reconstructRawString(allParts);
    return {
      parts: allParts,
      raw,
      bases,
      rawBases,
      hasVariables,
      hasScriptRunner
    };
  }, "peg$f122");
  var peg$f123 = /* @__PURE__ */ __name(function(first, op, pipeline) {
    return [
      {
        type: "operator",
        node: op
      },
      ...pipeline
    ];
  }, "peg$f123");
  var peg$f124 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ].flat();
  }, "peg$f124");
  var peg$f125 = /* @__PURE__ */ __name(function(op) {
    return helpers_default.createNode(node_type_default.CommandOperator, {
      operator: op.trim(),
      location: location()
    });
  }, "peg$f125");
  var peg$f126 = /* @__PURE__ */ __name(function(base, args) {
    const result = [
      base
    ];
    if (args) {
      result.push({
        type: "argument",
        parts: args.parts,
        hasVariables: args.hasVariables
      });
    }
    return result;
  }, "peg$f126");
  var peg$f127 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f127");
  var peg$f128 = /* @__PURE__ */ __name(function(parts) {
    const hasVariables = parts.some((p) => p.type === node_type_default.VariableReference);
    return {
      parts,
      hasVariables
    };
  }, "peg$f128");
  var peg$f129 = /* @__PURE__ */ __name(function(varName) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: varName,
      location: location()
    });
  }, "peg$f129");
  var peg$f130 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars,
      location: location()
    });
  }, "peg$f130");
  var peg$f131 = /* @__PURE__ */ __name(function(runner, script) {
    const command = runner + " run";
    return {
      type: "commandBase",
      node: helpers_default.createNode(node_type_default.CommandBase, {
        type: node_type_default.CommandBase,
        command,
        script,
        isScriptRunner: true,
        location: location()
      }),
      raw: command + " " + script,
      isScriptRunner: true
    };
  }, "peg$f131");
  var peg$f132 = /* @__PURE__ */ __name(function(pkg) {
    return {
      type: "commandBase",
      node: helpers_default.createNode(node_type_default.CommandBase, {
        command: "npx",
        package: pkg,
        isPackageRunner: true,
        location: location()
      }),
      raw: "npx " + pkg,
      isScriptRunner: true
    };
  }, "peg$f132");
  var peg$f133 = /* @__PURE__ */ __name(function(lang, mod) {
    const command = lang + " -m";
    return {
      type: "commandBase",
      node: helpers_default.createNode(node_type_default.CommandBase, {
        command,
        module: mod,
        location: location()
      }),
      raw: command + " " + mod
    };
  }, "peg$f133");
  var peg$f134 = /* @__PURE__ */ __name(function(cmd, flag) {
    const command = cmd + " " + flag;
    return {
      type: "commandBase",
      node: helpers_default.createNode(node_type_default.CommandBase, {
        command,
        isInlineCode: true,
        location: location()
      }),
      raw: command
    };
  }, "peg$f134");
  var peg$f135 = /* @__PURE__ */ __name(function(tool, target) {
    return {
      type: "commandBase",
      node: helpers_default.createNode(node_type_default.CommandBase, {
        command: tool,
        location: location()
      }),
      raw: tool
    };
  }, "peg$f135");
  var peg$f136 = /* @__PURE__ */ __name(function(cmd) {
    return {
      type: "commandBase",
      node: helpers_default.createNode(node_type_default.CommandBase, {
        command: cmd,
        location: location()
      }),
      raw: cmd
    };
  }, "peg$f136");
  var peg$f137 = /* @__PURE__ */ __name(function(name, args) {
    helpers_default.debug("CommandReference matched", {
      name,
      args
    });
    return {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args: args || [],
      isCommandReference: true
    };
  }, "peg$f137");
  var peg$f138 = /* @__PURE__ */ __name(function(args) {
    return args || [];
  }, "peg$f138");
  var peg$f139 = /* @__PURE__ */ __name(function(first, arg) {
    return arg;
  }, "peg$f139");
  var peg$f140 = /* @__PURE__ */ __name(function(first, rest) {
    const args = [
      first,
      ...rest
    ].filter((arg) => arg !== null);
    return args;
  }, "peg$f140");
  var peg$f141 = /* @__PURE__ */ __name(function(str) {
    if (typeof str === "string") {
      return helpers_default.createNode(node_type_default.Text, {
        content: str,
        location: location()
      });
    } else if (str.needsInterpolation) {
      return str.parts;
    }
  }, "peg$f141");
  var peg$f142 = /* @__PURE__ */ __name(function(varRef) {
    return varRef;
  }, "peg$f142");
  var peg$f143 = /* @__PURE__ */ __name(function(name, args) {
    helpers_default.debug("NestedExecInvocation matched", {
      name,
      args
    });
    const ref = {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args: args || [],
      isCommandReference: true
    };
    return helpers_default.createNode(node_type_default.ExecInvocation, {
      commandRef: ref,
      withClause: null,
      location: location()
    });
  }, "peg$f143");
  var peg$f144 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Text, {
      content: content.map((c) => c.content || c.identifier || "").join(""),
      isTemplate: true,
      templateParts: content,
      location: location()
    });
  }, "peg$f144");
  var peg$f145 = /* @__PURE__ */ __name(function(template) {
    helpers_default.debug("BacktickTemplateArgument matched", {
      template
    });
    return template;
  }, "peg$f145");
  var peg$f146 = /* @__PURE__ */ __name(function(parts) {
    return {
      content: parts,
      wrapperType: "backtick"
    };
  }, "peg$f146");
  var peg$f147 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f147");
  var peg$f148 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f148");
  var peg$f149 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f149");
  var peg$f150 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f150");
  var peg$f151 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f151");
  var peg$f152 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("").trim();
    if (!content) return null;
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f152");
  var peg$f153 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f153");
  var peg$f154 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f154");
  var peg$f155 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f155");
  var peg$f156 = /* @__PURE__ */ __name(function(pathParts, section) {
    const pathString = helpers_default.reconstructRawString(pathParts);
    let sectionRaw;
    if (section.type === "VariableReference") {
      sectionRaw = "@" + section.identifier;
    } else if (typeof section === "string") {
      sectionRaw = section;
    } else {
      sectionRaw = section.content || section.identifier || "";
    }
    return {
      type: "sectionPath",
      parts: pathParts,
      section: sectionRaw,
      sectionNodes: Array.isArray(section) ? section : [
        section
      ],
      raw: pathString + " # " + sectionRaw
    };
  }, "peg$f156");
  var peg$f157 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f157");
  var peg$f158 = /* @__PURE__ */ __name(function(chars) {
    return chars.trim();
  }, "peg$f158");
  var peg$f159 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f159");
  var peg$f160 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Text, {
      content: '"' + content + '"',
      location: location()
    });
  }, "peg$f160");
  var peg$f161 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Text, {
      content: "'" + content + "'",
      location: location()
    });
  }, "peg$f161");
  var peg$f162 = /* @__PURE__ */ __name(function(parts) {
    return parts.map((p) => {
      if (p.type === node_type_default.VariableReference) {
        return "@" + p.identifier;
      }
      return p.content || "";
    }).join("");
  }, "peg$f162");
  var peg$f163 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f163");
  var peg$f164 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f164");
  var peg$f165 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f165");
  var peg$f166 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f166");
  var peg$f167 = /* @__PURE__ */ __name(function(char) {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@" + char,
      location: location()
    });
  }, "peg$f167");
  var peg$f168 = /* @__PURE__ */ __name(function(name, args) {
    helpers_default.debug("BacktickExecInvocation matched", {
      name,
      args
    });
    const commandRef = {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args: args || [],
      isCommandReference: true
    };
    return helpers_default.createExecInvocation(commandRef, null, location());
  }, "peg$f168");
  var peg$f169 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f169");
  var peg$f170 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f170");
  var peg$f171 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f171");
  var peg$f172 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f172");
  var peg$f173 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("CommandTextContent matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f173");
  var peg$f174 = /* @__PURE__ */ __name(function() {
    return !helpers_default.isCommandEndingBracket(input, peg$currPos);
  }, "peg$f174");
  var peg$f175 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f175");
  var peg$f176 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("DoubleColonContent matched ::...::", {
      parts
    });
    let processedParts = parts;
    if (processedParts.length > 0 && processedParts[0].type === "Text" && processedParts[0].content) {
      if (processedParts[0].content === "\n") {
        processedParts = processedParts.slice(1);
      } else if (processedParts[0].content.startsWith("\n")) {
        processedParts[0] = {
          ...processedParts[0],
          content: processedParts[0].content.slice(1)
        };
      }
    }
    if (processedParts.length > 0) {
      const lastIndex = processedParts.length - 1;
      const lastPart = processedParts[lastIndex];
      if (lastPart.type === "Text" && lastPart.content) {
        if (lastPart.content === "\n") {
          processedParts = processedParts.slice(0, -1);
        } else if (lastPart.content.endsWith("\n")) {
          processedParts[lastIndex] = {
            ...lastPart,
            content: lastPart.content.slice(0, -1)
          };
        }
      }
    }
    return processedParts;
  }, "peg$f176");
  var peg$f177 = /* @__PURE__ */ __name(function(char) {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@" + char,
      location: location()
    });
  }, "peg$f177");
  var peg$f178 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("TripleColonContent matched :::...:::", {
      parts
    });
    let processedParts = parts;
    if (processedParts.length > 0 && processedParts[0].type === "Text" && processedParts[0].content) {
      if (processedParts[0].content === "\n") {
        processedParts = processedParts.slice(1);
      } else if (processedParts[0].content.startsWith("\n")) {
        processedParts[0] = {
          ...processedParts[0],
          content: processedParts[0].content.slice(1)
        };
      }
    }
    if (processedParts.length > 0) {
      const lastIndex = processedParts.length - 1;
      const lastPart = processedParts[lastIndex];
      if (lastPart.type === "Text" && lastPart.content) {
        if (lastPart.content === "\n") {
          processedParts = processedParts.slice(0, -1);
        } else if (lastPart.content.endsWith("\n")) {
          processedParts[lastIndex] = {
            ...lastPart,
            content: lastPart.content.slice(0, -1)
          };
        }
      }
    }
    return processedParts;
  }, "peg$f178");
  var peg$f179 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("DoubleBracketContent matched {{var}}", {
      parts,
      type: parts ? parts.type : "unknown"
    });
    return [
      parts
    ];
  }, "peg$f179");
  var peg$f180 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f180");
  var peg$f181 = /* @__PURE__ */ __name(function(chars) {
    helpers_default.debug("UnquotedPathText matched", {
      chars
    });
    return helpers_default.createNode(node_type_default.Text, {
      content: chars,
      location: location()
    });
  }, "peg$f181");
  var peg$f182 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f182");
  var peg$f183 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f183");
  var peg$f184 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f184");
  var peg$f185 = /* @__PURE__ */ __name(function(parts) {
    return parts.join("");
  }, "peg$f185");
  var peg$f186 = /* @__PURE__ */ __name(function(inner) {
    return "[" + inner + "]";
  }, "peg$f186");
  var peg$f187 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f187");
  var peg$f188 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f188");
  var peg$f189 = /* @__PURE__ */ __name(function(parts) {
    if (parts.length === 0) {
      return [
        helpers_default.createNode(node_type_default.Text, {
          content: "",
          location: location()
        })
      ];
    }
    return parts;
  }, "peg$f189");
  var peg$f190 = /* @__PURE__ */ __name(function(rule) {
    helpers_default.debug("TemplateStyleInterpolation matched triple colon with {{var}} interpolation", {
      rule
    });
    return {
      content: rule,
      wrapperType: "tripleColon"
    };
  }, "peg$f190");
  var peg$f191 = /* @__PURE__ */ __name(function(rule) {
    helpers_default.debug("TemplateStyleInterpolation matched InterpolatedTemplateContent", {
      rule,
      isArray: Array.isArray(rule),
      length: Array.isArray(rule) ? rule.length : "not array",
      hasType: rule && typeof rule === "object" && "type" in rule
    });
    if (rule && typeof rule === "object" && !Array.isArray(rule) && rule.type === "doubleBracketSection") {
      return rule;
    }
    return {
      content: rule,
      wrapperType: "doubleColon"
      // Now means @var interpolation
    };
  }, "peg$f191");
  var peg$f192 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("TemplateStyleInterpolation matched backtick with @var interpolation", {
      parts
    });
    return {
      content: parts,
      wrapperType: "backtick"
    };
  }, "peg$f192");
  var peg$f193 = /* @__PURE__ */ __name(function(rule) {
    helpers_default.debug("TemplateStyleInterpolation matched double quotes with @var interpolation", {
      rule
    });
    return {
      content: rule,
      wrapperType: "doubleQuote"
    };
  }, "peg$f193");
  var peg$f194 = /* @__PURE__ */ __name(function(rule) {
    helpers_default.debug("TemplateStyleInterpolation matched single quotes (literal)", {
      rule
    });
    return {
      content: rule,
      wrapperType: "singleQuote"
    };
  }, "peg$f194");
  var peg$f195 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("SemanticTextContent detected [[");
    return {
      type: "template",
      lookahead: "[["
    };
  }, "peg$f195");
  var peg$f196 = /* @__PURE__ */ __name(function(ahead) {
    return ahead.includes(" # ");
  }, "peg$f196");
  var peg$f197 = /* @__PURE__ */ __name(function(ahead) {
    helpers_default.debug("SemanticTextContent detected [ with section");
    return {
      type: "section",
      lookahead: "["
    };
  }, "peg$f197");
  var peg$f198 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("SemanticTextContent detected [");
    return {
      type: "path",
      lookahead: "["
    };
  }, "peg$f198");
  var peg$f199 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("SemanticTextContent detected /run");
    return {
      type: "run",
      lookahead: "/run"
    };
  }, "peg$f199");
  var peg$f200 = /* @__PURE__ */ __name(function() {
    helpers_default.debug('SemanticTextContent detected "');
    return {
      type: "template",
      lookahead: '"'
    };
  }, "peg$f200");
  var peg$f201 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("SemanticTextContent detected '");
    return {
      type: "literal",
      lookahead: "'"
    };
  }, "peg$f201");
  var peg$f202 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("WrappedTemplateContent matched", {
      contentType: typeof content,
      isArray: Array.isArray(content),
      contentLength: Array.isArray(content) ? content.length : "not array",
      contentHasType: content && content.type,
      wrapperType: content && content.wrapperType
    });
    const rawString = helpers_default.reconstructRawString(content.content);
    return {
      parts: content.content,
      raw: rawString,
      wrapperType: content.wrapperType
    };
  }, "peg$f202");
  var peg$f203 = /* @__PURE__ */ __name(function(content) {
    const rawString = helpers_default.reconstructRawString(content);
    return {
      parts: content,
      raw: rawString
    };
  }, "peg$f203");
  var peg$f204 = /* @__PURE__ */ __name(function(content) {
    const rawString = helpers_default.reconstructRawString(content);
    return {
      parts: content,
      raw: rawString
    };
  }, "peg$f204");
  var peg$f205 = /* @__PURE__ */ __name(function(props) {
    return helpers_default.createObjectFromProperties(props, location());
  }, "peg$f205");
  var peg$f206 = /* @__PURE__ */ __name(function(first, p) {
    return p;
  }, "peg$f206");
  var peg$f207 = /* @__PURE__ */ __name(function(first, rest) {
    const result = {};
    for (const [key, value] of [
      first,
      ...rest
    ]) {
      result[key] = value;
    }
    return result;
  }, "peg$f207");
  var peg$f208 = /* @__PURE__ */ __name(function(key, value) {
    return [
      key,
      value
    ];
  }, "peg$f208");
  var peg$f209 = /* @__PURE__ */ __name(function(content) {
    return {
      content,
      wrapperType: "doubleBracket"
    };
  }, "peg$f209");
  var peg$f210 = /* @__PURE__ */ __name(function(parts) {
    return {
      content: parts,
      wrapperType: "backtick"
    };
  }, "peg$f210");
  var peg$f211 = /* @__PURE__ */ __name(function(first, value) {
    return value;
  }, "peg$f211");
  var peg$f212 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f212");
  var peg$f213 = /* @__PURE__ */ __name(function(item) {
    return [
      item
    ];
  }, "peg$f213");
  var peg$f214 = /* @__PURE__ */ __name(function(tail, comment) {
    helpers_default.debug("StandardDirectiveEnding matched", {
      hasTail: !!tail,
      hasComment: !!comment
    });
    return {
      tail: tail || null,
      comment: comment || null
    };
  }, "peg$f214");
  var peg$f215 = /* @__PURE__ */ __name(function(tail, s) {
    return s;
  }, "peg$f215");
  var peg$f216 = /* @__PURE__ */ __name(function(tail, security, comment) {
    helpers_default.debug("SecuredDirectiveEnding matched", {
      hasTail: !!tail,
      hasSecurity: !!security,
      hasComment: !!comment
    });
    return {
      tail: tail || null,
      security: security || null,
      comment: comment || null
    };
  }, "peg$f216");
  var peg$f217 = /* @__PURE__ */ __name(function(comment) {
    helpers_default.debug("CommentedDirectiveEnding matched", {
      hasComment: !!comment
    });
    return {
      comment: comment || null
    };
  }, "peg$f217");
  var peg$f218 = /* @__PURE__ */ __name(function(invocation) {
    return {
      type: "exeExecInvocation",
      values: {
        commandRef: invocation.commandRef,
        args: invocation.commandRef.args || []
      },
      raw: {
        commandRef: invocation.commandRef.name,
        args: (invocation.commandRef.args || []).map((arg) => arg.type === "Text" ? arg.content : arg.type === "VariableReference" ? "@" + arg.identifier : "")
      },
      meta: {
        isExecInvocation: true,
        parameterCount: (invocation.commandRef.args || []).length
      },
      subtype: "exeCommand",
      source: "invocation"
    };
  }, "peg$f218");
  var peg$f219 = /* @__PURE__ */ __name(function(langCode) {
    return {
      subtype: "exeCode",
      source: "code",
      values: {
        lang: langCode.values.lang,
        args: langCode.values.args,
        code: langCode.values.code
      },
      raw: {
        lang: langCode.raw.lang,
        args: langCode.raw.args,
        code: langCode.raw.code
      },
      meta: langCode.meta
    };
  }, "peg$f219");
  var peg$f220 = /* @__PURE__ */ __name(function(content) {
    return {
      subtype: "exeCommand",
      source: "command",
      values: {
        command: content.values.command,
        commandBases: content.values.commandBases
      },
      raw: {
        command: content.raw.command,
        commandBases: content.raw.commandBases
      },
      meta: content.meta
    };
  }, "peg$f220");
  var peg$f221 = /* @__PURE__ */ __name(function(content) {
    return {
      subtype: "exeCommand",
      source: "command",
      values: {
        command: content.values.command,
        commandBases: content.values.commandBases
      },
      raw: {
        command: content.raw.command,
        commandBases: content.raw.commandBases
      },
      meta: content.meta
    };
  }, "peg$f221");
  var peg$f222 = /* @__PURE__ */ __name(function(codeCore) {
    return {
      subtype: "exeCode",
      source: "code",
      values: {
        lang: codeCore.values.lang,
        args: codeCore.values.args,
        code: codeCore.values.code
      },
      raw: {
        lang: codeCore.raw.lang,
        args: codeCore.raw.args,
        code: codeCore.raw.code
      },
      meta: codeCore.meta
    };
  }, "peg$f222");
  var peg$f223 = /* @__PURE__ */ __name(function(content) {
    return {
      subtype: "exeCommand",
      source: "command",
      values: {
        command: content.values.command,
        commandBases: content.values.commandBases
      },
      raw: {
        command: content.raw.command,
        commandBases: content.raw.commandBases
      },
      meta: content.meta
    };
  }, "peg$f223");
  var peg$f224 = /* @__PURE__ */ __name(function(template) {
    return {
      subtype: "exeTemplate",
      source: "template",
      values: {
        template: template.values.content
      },
      raw: {
        template: template.raw.content
      },
      meta: template.meta
    };
  }, "peg$f224");
  var peg$f225 = /* @__PURE__ */ __name(function(pathVar, section, rename) {
    return {
      type: "exeSection",
      values: {
        path: [
          pathVar
        ],
        section: Array.isArray(section) ? section : [
          section
        ],
        ...rename ? {
          rename
        } : {}
      },
      raw: {
        path: "@" + pathVar.identifier + (pathVar.fields ? "." + pathVar.fields.map((f) => f.name || f.index).join(".") : ""),
        section: section.type === "VariableReference" ? "@" + section.identifier : section.content || section,
        ...rename ? {
          rename: rename[0].type === "VariableReference" ? "@" + rename[0].identifier : rename[0].content
        } : {}
      },
      meta: {
        hasRename: !!rename
      },
      subtype: "exeSection",
      source: "section"
    };
  }, "peg$f225");
  var peg$f226 = /* @__PURE__ */ __name(function(resolver, payload) {
    return {
      type: "exeResolver",
      values: {
        resolver: [
          helpers_default.createVariableReferenceNode("varIdentifier", {
            identifier: resolver
          }, location())
        ],
        ...payload ? {
          payload
        } : {}
      },
      raw: {
        resolver,
        ...payload ? {
          payload: payload[0].identifier || payload[0].content
        } : {}
      },
      meta: {
        hasPayload: !!payload
      },
      subtype: "exeResolver",
      source: "resolver"
    };
  }, "peg$f226");
  var peg$f227 = /* @__PURE__ */ __name(function(commandRef) {
    return {
      type: "exeCommandRef",
      values: {
        commandRef: [
          helpers_default.createVariableReferenceNode("varIdentifier", {
            identifier: commandRef
          }, location())
        ]
      },
      raw: {
        commandRef
      },
      meta: {
        isCommandRef: true
      },
      subtype: "exeCommand",
      source: "reference"
    };
  }, "peg$f227");
  var peg$f228 = /* @__PURE__ */ __name(function(envVars) {
    return {
      type: "exeEnvironment",
      values: {
        environment: envVars
      },
      raw: {
        environment: envVars.map((v) => v.identifier)
      },
      meta: {
        environmentCount: envVars.length
      },
      subtype: "environment",
      source: "environment"
    };
  }, "peg$f228");
  var peg$f229 = /* @__PURE__ */ __name(function(chars) {
    return chars;
  }, "peg$f229");
  var peg$f230 = /* @__PURE__ */ __name(function(varRef) {
    return [
      varRef
    ];
  }, "peg$f230");
  var peg$f231 = /* @__PURE__ */ __name(function(title) {
    return title;
  }, "peg$f231");
  var peg$f232 = /* @__PURE__ */ __name(function(varRef) {
    return [
      varRef
    ];
  }, "peg$f232");
  var peg$f233 = /* @__PURE__ */ __name(function(condition, trueBranch, falseBranch) {
    return helpers_default.createNode("TernaryExpression", {
      condition,
      trueBranch,
      falseBranch,
      location: location()
    });
  }, "peg$f233");
  var peg$f234 = /* @__PURE__ */ __name(function(first, right) {
    return {
      op: "||",
      right
    };
  }, "peg$f234");
  var peg$f235 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createBinaryExpression(first, rest, location());
  }, "peg$f235");
  var peg$f236 = /* @__PURE__ */ __name(function(first, right) {
    return {
      op: "&&",
      right
    };
  }, "peg$f236");
  var peg$f237 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createBinaryExpression(first, rest, location());
  }, "peg$f237");
  var peg$f238 = /* @__PURE__ */ __name(function(first, op, right) {
    return {
      op,
      right
    };
  }, "peg$f238");
  var peg$f239 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createBinaryExpression(first, rest, location());
  }, "peg$f239");
  var peg$f240 = /* @__PURE__ */ __name(function(expr) {
    return expr;
  }, "peg$f240");
  var peg$f241 = /* @__PURE__ */ __name(function(expr) {
    return helpers_default.createNode("UnaryExpression", {
      operator: "!",
      operand: expr,
      location: location()
    });
  }, "peg$f241");
  var peg$f242 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "number",
      location: location()
    });
  }, "peg$f242");
  var peg$f243 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "boolean",
      location: location()
    });
  }, "peg$f243");
  var peg$f244 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "null",
      location: location()
    });
  }, "peg$f244");
  var peg$f245 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "wildcard",
      location: location()
    });
  }, "peg$f245");
  var peg$f246 = /* @__PURE__ */ __name(function(expr) {
    const rest = input.substring(peg$currPos);
    return !rest.includes(")");
  }, "peg$f246");
  var peg$f247 = /* @__PURE__ */ __name(function(expr) {
    error("Unclosed parenthesis in expression. Expected ')'");
  }, "peg$f247");
  var peg$f248 = /* @__PURE__ */ __name(function() {
    return peg$currPos;
  }, "peg$f248");
  var peg$f249 = /* @__PURE__ */ __name(function(fieldStart, field) {
    return {
      type: "field",
      value: field,
      location: {
        start: {
          offset: fieldStart,
          line: location().start.line,
          column: location().start.column + 1
        },
        end: location().end
      }
    };
  }, "peg$f249");
  var peg$f250 = /* @__PURE__ */ __name(function() {
    return peg$currPos;
  }, "peg$f250");
  var peg$f251 = /* @__PURE__ */ __name(function(fieldStart, index) {
    return {
      type: "numericField",
      value: index,
      location: {
        start: {
          offset: fieldStart,
          line: location().start.line,
          column: location().start.column + 1
        },
        end: location().end
      }
    };
  }, "peg$f251");
  var peg$f252 = /* @__PURE__ */ __name(function(index) {
    return {
      type: "arrayIndex",
      value: index,
      location: location()
    };
  }, "peg$f252");
  var peg$f253 = /* @__PURE__ */ __name(function(index) {
    return {
      type: "bracketAccess",
      value: index,
      location: location()
    };
  }, "peg$f253");
  var peg$f254 = /* @__PURE__ */ __name(function(index) {
    return {
      type: "variableIndex",
      value: index,
      location: location()
    };
  }, "peg$f254");
  var peg$f255 = /* @__PURE__ */ __name(function(index) {
    return {
      type: "stringIndex",
      value: index,
      location: location()
    };
  }, "peg$f255");
  var peg$f256 = /* @__PURE__ */ __name(function(content, fields, pipes) {
    let contentStr;
    if (content.raw) {
      contentStr = content.raw;
    } else if (content.type === node_type_default.Text) {
      contentStr = content.content;
    } else if (Array.isArray(content)) {
      contentStr = helpers_default.reconstructRawString(content);
    } else {
      contentStr = String(content);
    }
    if (!helpers_default.isFileReferenceContent(contentStr)) {
      return helpers_default.createNode(node_type_default.Text, {
        content: `<${contentStr}>`,
        location: location()
      });
    }
    return helpers_default.createFileReferenceNode(content, fields, pipes, location());
  }, "peg$f256");
  var peg$f257 = /* @__PURE__ */ __name(function(fields, pipes) {
    return helpers_default.createFileReferenceNode({
      type: "placeholder",
      raw: ""
    }, fields, pipes, location());
  }, "peg$f257");
  var peg$f258 = /* @__PURE__ */ __name(function() {
    return peg$currPos;
  }, "peg$f258");
  var peg$f259 = /* @__PURE__ */ __name(function(pipeStart, name, args) {
    const loc = location();
    const startOffset = pipeStart;
    return {
      type: "CondensedPipe",
      transform: name,
      hasAt: true,
      args: args || [],
      location: {
        source: loc.source,
        start: {
          offset: startOffset,
          line: loc.start.line,
          column: loc.start.column - (loc.start.offset - startOffset)
        },
        end: loc.end
      }
    };
  }, "peg$f259");
  var peg$f260 = /* @__PURE__ */ __name(function(args) {
    return args;
  }, "peg$f260");
  var peg$f261 = /* @__PURE__ */ __name(function(first, arg) {
    return arg;
  }, "peg$f261");
  var peg$f262 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f262");
  var peg$f263 = /* @__PURE__ */ __name(function(varName) {
    return {
      type: "variable",
      name: varName
    };
  }, "peg$f263");
  var peg$f264 = /* @__PURE__ */ __name(function(pipes) {
    return pipes;
  }, "peg$f264");
  var peg$f265 = /* @__PURE__ */ __name(function(fields) {
    return fields;
  }, "peg$f265");
  var peg$f266 = /* @__PURE__ */ __name(function(execInvocation, withClause) {
    helpers_default.debug("ForeachCommandExpression matched", {
      execInvocation,
      withClause
    });
    let arrays = [];
    if (execInvocation.type === "ExecInvocation" && execInvocation.commandRef.args) {
      arrays = execInvocation.commandRef.args;
    }
    return {
      type: "foreach-command",
      value: {
        type: "foreach",
        execInvocation,
        arrays,
        ...withClause ? {
          with: withClause
        } : {}
      },
      rawText: text()
    };
  }, "peg$f266");
  var peg$f267 = /* @__PURE__ */ __name(function(first, arr) {
    return arr;
  }, "peg$f267");
  var peg$f268 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first
    ].concat(rest || []);
  }, "peg$f268");
  var peg$f269 = /* @__PURE__ */ __name(function(options2) {
    return options2;
  }, "peg$f269");
  var peg$f270 = /* @__PURE__ */ __name(function(first, opt) {
    return opt;
  }, "peg$f270");
  var peg$f271 = /* @__PURE__ */ __name(function(first, rest) {
    const options2 = {};
    [
      first,
      ...rest
    ].forEach((option) => {
      options2[option.key] = option.value;
    });
    return options2;
  }, "peg$f271");
  var peg$f272 = /* @__PURE__ */ __name(function(value) {
    return {
      key: "separator",
      value
    };
  }, "peg$f272");
  var peg$f273 = /* @__PURE__ */ __name(function(value) {
    return {
      key: "template",
      value
    };
  }, "peg$f273");
  var peg$f274 = /* @__PURE__ */ __name(function(variable, source) {
    const varNode = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: variable
    }, location());
    return {
      variable: varNode,
      source: Array.isArray(source) ? source : [
        source
      ]
    };
  }, "peg$f274");
  var peg$f275 = /* @__PURE__ */ __name(function(source, target) {
    const values = {
      target
    };
    const raw = {
      target: target.raw
    };
    let subtype = "outputDocument";
    const meta = {
      hasSource: false,
      targetType: target.type
    };
    if (source) {
      values.source = source.values;
      raw.source = source.raw;
      meta.hasSource = true;
      meta.sourceType = source.type;
      subtype = "outputFile";
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "output",
        subtype,
        values,
        raw,
        meta,
        location: location()
      })
    ];
  }, "peg$f275");
  var peg$f276 = /* @__PURE__ */ __name(function(directive, content) {
    return helpers_default.createForActionNode(directive, content, location());
  }, "peg$f276");
  var peg$f277 = /* @__PURE__ */ __name(function(invocation) {
    return [
      invocation
    ];
  }, "peg$f277");
  var peg$f278 = /* @__PURE__ */ __name(function(first, ref) {
    return ref;
  }, "peg$f278");
  var peg$f279 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f279");
  var peg$f280 = /* @__PURE__ */ __name(function(name) {
    return helpers_default.createNode(node_type_default.VariableReference, {
      identifier: name,
      valueType: "identifier"
    }, location());
  }, "peg$f280");
  var peg$f281 = /* @__PURE__ */ __name(function(invocation) {
    helpers_default.debug("OutputExecInvocation matched", {
      invocation
    });
    const isExecInvocation = invocation.type === "ExecInvocation";
    const rawValue = isExecInvocation ? invocation.commandRef.name : `@${invocation.variable.identifier}`;
    return {
      type: isExecInvocation ? "exec" : "variable",
      subtype: isExecInvocation ? "outputExecInvocation" : "outputVariable",
      values: invocation,
      raw: {
        [isExecInvocation ? "commandName" : "variable"]: rawValue
      }
    };
  }, "peg$f281");
  var peg$f282 = /* @__PURE__ */ __name(function(ref) {
    let values, raw, subtype;
    if (ref.type === "ExecInvocation") {
      values = {
        identifier: ref.commandRef.identifier,
        args: ref.commandRef.args || []
      };
      raw = {
        identifier: ref.commandRef.name,
        args: ref.commandRef.args ? ref.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
      subtype = "outputInvocation";
    } else {
      values = {
        identifier: [
          ref
        ],
        args: []
      };
      raw = {
        identifier: ref.identifier,
        ...ref.fields && ref.fields.length > 0 ? {
          fields: ref.fields.map((f) => f.value)
        } : {}
      };
      subtype = "outputVariable";
    }
    return {
      type: "variable",
      subtype,
      values,
      raw
    };
  }, "peg$f282");
  var peg$f283 = /* @__PURE__ */ __name(function(commandRef) {
    helpers_default.debug("OutputCommand matched unified reference", {
      commandRef
    });
    let values, raw;
    if (commandRef.type === "ExecInvocation") {
      values = {
        identifier: commandRef.commandRef.identifier,
        args: commandRef.commandRef.args || []
      };
      raw = {
        identifier: commandRef.commandRef.name,
        args: commandRef.commandRef.args ? commandRef.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
    } else {
      values = {
        identifier: [
          commandRef
        ],
        args: []
      };
      raw = {
        identifier: commandRef.identifier,
        args: []
      };
    }
    return {
      type: "command",
      subtype: "outputCommand",
      values,
      raw
    };
  }, "peg$f283");
  var peg$f284 = /* @__PURE__ */ __name(function(str) {
    return {
      type: "literal",
      subtype: "outputLiteral",
      values: [
        helpers_default.createNode(node_type_default.Text, {
          content: str,
          location: location()
        })
      ],
      raw: str
    };
  }, "peg$f284");
  var peg$f285 = /* @__PURE__ */ __name(function(stream) {
    helpers_default.debug("OutputTargetStream matched", {
      stream
    });
    return {
      type: "stream",
      stream,
      raw: stream
    };
  }, "peg$f285");
  var peg$f286 = /* @__PURE__ */ __name(function(name) {
    return name;
  }, "peg$f286");
  var peg$f287 = /* @__PURE__ */ __name(function(varname) {
    helpers_default.debug("OutputTargetEnv matched", {
      varname
    });
    return {
      type: "env",
      varname: varname || null,
      raw: varname ? `env:${varname}` : "env"
    };
  }, "peg$f287");
  var peg$f288 = /* @__PURE__ */ __name(function(resolver, path) {
    helpers_default.debug("OutputTargetResolver matched", {
      resolver,
      path
    });
    return {
      type: "resolver",
      resolver,
      path: path || [],
      raw: `@${resolver}${path ? "/" + path.map((p) => p.content || "").join("/") : ""}`
    };
  }, "peg$f288");
  var peg$f289 = /* @__PURE__ */ __name(function(chars) {
    const pathStr = chars.join("");
    return pathStr.split("/").filter((s) => s).map((segment) => ({
      type: "Text",
      content: segment
    }));
  }, "peg$f289");
  var peg$f290 = /* @__PURE__ */ __name(function(path) {
    helpers_default.debug("OutputTargetFile matched", {
      path
    });
    return {
      type: "file",
      path: path.parts || path.values,
      raw: path.raw,
      meta: path.meta || {}
    };
  }, "peg$f290");
  var peg$f291 = /* @__PURE__ */ __name(function(str) {
    if (typeof str === "string") {
      return {
        parts: [
          helpers_default.createNode(node_type_default.Text, {
            content: str,
            location: location()
          })
        ],
        raw: `"${str}"`,
        meta: {
          quoted: true
        }
      };
    } else if (str.needsInterpolation) {
      return {
        parts: str.parts,
        raw: helpers_default.reconstructRawString(str.parts),
        meta: {
          quoted: true,
          needsInterpolation: true
        }
      };
    }
  }, "peg$f291");
  var peg$f292 = /* @__PURE__ */ __name(function(chars) {
    const path = chars.join("");
    return {
      parts: [
        helpers_default.createNode(node_type_default.Text, {
          content: path,
          location: location()
        })
      ],
      raw: path,
      meta: {
        unquoted: true
      }
    };
  }, "peg$f292");
  var peg$f293 = /* @__PURE__ */ __name(function(format) {
    helpers_default.debug("OutputFormat matched", {
      format
    });
    return format;
  }, "peg$f293");
  var peg$f294 = /* @__PURE__ */ __name(function(first, segment) {
    return segment;
  }, "peg$f294");
  var peg$f295 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f295");
  var peg$f296 = /* @__PURE__ */ __name(function(chars) {
    return {
      type: "Text",
      content: chars.join("")
    };
  }, "peg$f296");
  var peg$f297 = /* @__PURE__ */ __name(function(content) {
    return {
      type: "path",
      subtype: "filePath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content,
            location: location()
          })
        ]
      },
      raw: {
        path: content
      },
      meta: helpers_default.createPathMetadata(content, [
        helpers_default.createNode(node_type_default.Text, {
          content,
          location: location()
        })
      ])
    };
  }, "peg$f297");
  var peg$f298 = /* @__PURE__ */ __name(function(content) {
    return {
      type: "path",
      subtype: "filePath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content,
            location: location()
          })
        ]
      },
      raw: {
        path: content
      },
      meta: helpers_default.createPathMetadata(content, [
        helpers_default.createNode(node_type_default.Text, {
          content,
          location: location()
        })
      ])
    };
  }, "peg$f298");
  var peg$f299 = /* @__PURE__ */ __name(function(proto) {
    return proto;
  }, "peg$f299");
  var peg$f300 = /* @__PURE__ */ __name(function(parts) {
    const raw = "//" + parts.map((p) => {
      if (p.type === node_type_default.VariableReference) {
        return "@" + p.identifier;
      }
      return p.content || p;
    }).join("");
    return {
      parts,
      raw
    };
  }, "peg$f300");
  var peg$f301 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f301");
  var peg$f302 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "\\",
      location: location()
    });
  }, "peg$f302");
  var peg$f303 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@",
      location: location()
    });
  }, "peg$f303");
  var peg$f304 = /* @__PURE__ */ __name(function(varName) {
    return helpers_default.createVariableReferenceNode("url", {
      identifier: varName,
      location: location()
    });
  }, "peg$f304");
  var peg$f305 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars,
      location: location()
    });
  }, "peg$f305");
  var peg$f306 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f306");
  var peg$f307 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f307");
  var peg$f308 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f308");
  var peg$f309 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f309");
  var peg$f310 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isRHSContext(input, pos);
  }, "peg$f310");
  var peg$f311 = /* @__PURE__ */ __name(function(command) {
    return {
      type: "command",
      command: command.parts,
      raw: command.raw
    };
  }, "peg$f311");
  var peg$f312 = /* @__PURE__ */ __name(function(code) {
    return {
      type: "code",
      code: code.parts,
      raw: code.raw
    };
  }, "peg$f312");
  var peg$f313 = /* @__PURE__ */ __name(function(ttl, t) {
    return t;
  }, "peg$f313");
  var peg$f314 = /* @__PURE__ */ __name(function(ttl, trust) {
    return {
      ...ttl ? {
        ttl
      } : {},
      ...trust ? {
        trust
      } : {}
    };
  }, "peg$f314");
  var peg$f315 = /* @__PURE__ */ __name(function(trust) {
    return {
      trust
    };
  }, "peg$f315");
  var peg$f316 = /* @__PURE__ */ __name(function(value) {
    return value;
  }, "peg$f316");
  var peg$f317 = /* @__PURE__ */ __name(function(duration) {
    return {
      type: "duration",
      ...duration
    };
  }, "peg$f317");
  var peg$f318 = /* @__PURE__ */ __name(function(special) {
    const specialValue = special.value || special;
    return {
      type: "special",
      value: specialValue,
      location: special.location || location()
    };
  }, "peg$f318");
  var peg$f319 = /* @__PURE__ */ __name(function(num, unit) {
    const unitValue = unit.unit || unit;
    const seconds = helpers_default.ttlToSeconds(num, unitValue);
    return {
      value: num,
      unit: unitValue,
      seconds,
      location: location()
    };
  }, "peg$f319");
  var peg$f320 = /* @__PURE__ */ __name(function(unit) {
    const unitMap = {
      "s": "seconds",
      "m": "minutes",
      "h": "hours",
      "d": "days",
      "w": "weeks"
    };
    return {
      unit: unitMap[unit],
      location: location()
    };
  }, "peg$f320");
  var peg$f321 = /* @__PURE__ */ __name(function(value) {
    return {
      value,
      location: location()
    };
  }, "peg$f321");
  var peg$f322 = /* @__PURE__ */ __name(function(level) {
    return level.level || level;
  }, "peg$f322");
  var peg$f323 = /* @__PURE__ */ __name(function(level) {
    return {
      level,
      location: location()
    };
  }, "peg$f323");
  var peg$f324 = /* @__PURE__ */ __name(function(digits) {
    return parseInt(digits.join(""), 10);
  }, "peg$f324");
  var peg$f325 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f325");
  var peg$f326 = /* @__PURE__ */ __name(function(parts) {
    if (parts.length === 1 && parts[0].type === "Text") {
      return parts[0].content;
    }
    return {
      needsInterpolation: true,
      parts
    };
  }, "peg$f326");
  var peg$f327 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f327");
  var peg$f328 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode("Literal", {
      value: content,
      valueType: "string",
      location: location()
    });
  }, "peg$f328");
  var peg$f329 = /* @__PURE__ */ __name(function(parts) {
    if (parts.length === 1 && parts[0].type === "Text") {
      return helpers_default.createNode("Literal", {
        value: parts[0].content,
        valueType: "string",
        location: location()
      });
    }
    return {
      content: parts,
      wrapperType: "doubleQuote"
    };
  }, "peg$f329");
  var peg$f330 = /* @__PURE__ */ __name(function(pipeline) {
    const allCommands = [];
    const allBases = [];
    pipeline.commands.forEach((cmd) => {
      allCommands.push(cmd);
      if (cmd.base) {
        allBases.push(cmd.base);
      }
    });
    return {
      commands: allCommands,
      commandBases: allBases
    };
  }, "peg$f330");
  var peg$f331 = /* @__PURE__ */ __name(function(op) {
    const opName = op === "&&" ? "AND (&&)" : op === "||" ? "OR (||)" : "semicolon (;)";
    helpers_default.mlldError(`Shell operator ${opName} is not allowed in mlld. Use separate @run commands or @when for control flow.`);
  }, "peg$f331");
  var peg$f332 = /* @__PURE__ */ __name(function(op) {
    const opName = op === ">>" ? "append (>>)" : op === ">" ? "redirect (>)" : op === "<" ? "input (<)" : "error redirect (&>)";
    helpers_default.mlldError(`Shell ${opName} operator is not allowed in mlld. Use @output directive for file operations.`);
  }, "peg$f332");
  var peg$f333 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Background execution (&) is not allowed in mlld. All commands run synchronously.`);
  }, "peg$f333");
  var peg$f334 = /* @__PURE__ */ __name(function(first, cmd) {
    return cmd;
  }, "peg$f334");
  var peg$f335 = /* @__PURE__ */ __name(function(first, rest) {
    const commands = [
      first
    ];
    if (rest.length > 0) {
      rest.forEach((cmd, i) => {
        commands.push({
          type: "operator",
          operator: "|"
        });
        commands.push(cmd);
      });
    }
    return {
      commands
    };
  }, "peg$f335");
  var peg$f336 = /* @__PURE__ */ __name(function(cmd, arg) {
    return arg;
  }, "peg$f336");
  var peg$f337 = /* @__PURE__ */ __name(function(cmd, args) {
    const cmdText = cmd.content || cmd.identifier || "";
    let base = null;
    let hasScriptRunner = false;
    if (args.length >= 1 && [
      "npm",
      "yarn",
      "pnpm",
      "bun"
    ].includes(cmdText)) {
      const firstArg = args[0];
      if (firstArg.type === "Text" && firstArg.content === "run" && args[1]) {
        const script = args[1].type === "Text" ? args[1].content : args[1].identifier;
        base = helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdText + " run",
          script,
          isScriptRunner: true,
          location: cmd.location
        });
        hasScriptRunner = true;
      }
    } else if (cmdText === "npx" && args[0]) {
      const pkg = args[0].type === "Text" ? args[0].content : args[0].identifier;
      base = helpers_default.createNode(node_type_default.CommandBase, {
        command: "npx",
        package: pkg,
        isPackageRunner: true,
        location: cmd.location
      });
    } else if (cmdText === "python" && args[0]?.content === "-m" && args[1]) {
      const mod = args[1].type === "Text" ? args[1].content : args[1].identifier;
      base = helpers_default.createNode(node_type_default.CommandBase, {
        command: "python -m",
        module: mod,
        location: cmd.location
      });
    } else {
      base = helpers_default.createNode(node_type_default.CommandBase, {
        command: cmdText,
        location: cmd.location
      });
    }
    return {
      type: "command",
      command: cmd,
      arguments: args,
      base,
      hasScriptRunner
    };
  }, "peg$f337");
  var peg$f338 = /* @__PURE__ */ __name(function(word) {
    return helpers_default.createNode(node_type_default.Text, {
      content: word,
      location: location()
    });
  }, "peg$f338");
  var peg$f339 = /* @__PURE__ */ __name(function() {
    const ahead = input.substring(peg$currPos, peg$currPos + 3);
    if (ahead.startsWith("&&") || ahead.startsWith("||")) {
      helpers_default.mlldError(`Shell operators are not allowed in mlld. Use separate @run commands or @when for control flow.`);
    }
    if (ahead.startsWith(">>") || ahead.startsWith(">&")) {
      helpers_default.mlldError(`Shell redirection operators are not allowed in mlld. Use @output directive for file operations.`);
    }
    if (ahead.startsWith(";")) {
      helpers_default.mlldError(`Shell operator semicolon (;) is not allowed in mlld. Use separate @run commands.`);
    }
    const char = input[peg$currPos];
    if (char === ">" || char === "<") {
      helpers_default.mlldError(`Shell redirection operators are not allowed in mlld. Use @output directive for file operations.`);
    }
    if (char === "&" && input[peg$currPos + 1] !== "&" && input[peg$currPos + 1] !== ">") {
      helpers_default.mlldError(`Background execution (&) is not allowed in mlld. All commands run synchronously.`);
    }
    return true;
  }, "peg$f339");
  var peg$f340 = /* @__PURE__ */ __name(function(word) {
    return helpers_default.createNode(node_type_default.Text, {
      content: word,
      location: location()
    });
  }, "peg$f340");
  var peg$f341 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      location: location()
    });
  }, "peg$f341");
  var peg$f342 = /* @__PURE__ */ __name(function(content) {
    const text2 = content.map((c) => c.content || c.identifier || c).join("");
    return helpers_default.createNode(node_type_default.Text, {
      content: text2,
      location: location()
    });
  }, "peg$f342");
  var peg$f343 = /* @__PURE__ */ __name(function(content) {
    const text2 = content.join("");
    return helpers_default.createNode(node_type_default.Text, {
      content: text2,
      location: location()
    });
  }, "peg$f343");
  var peg$f344 = /* @__PURE__ */ __name(function(chars) {
    return {
      content: chars
    };
  }, "peg$f344");
  var peg$f345 = /* @__PURE__ */ __name(function(chars) {
    return chars;
  }, "peg$f345");
  var peg$f346 = /* @__PURE__ */ __name(function(word) {
    if (word.includes("&&") || word.includes("||")) {
      helpers_default.mlldError(`Shell operators are not allowed in mlld. Use separate @run commands or @when for control flow.`);
    }
    if (word.includes(">>") || word.includes(">") && !word.includes(">&")) {
      helpers_default.mlldError(`Shell redirection operators are not allowed in mlld. Use @output directive for file operations.`);
    }
    return word;
  }, "peg$f346");
  var peg$f347 = /* @__PURE__ */ __name(function(keyword, value) {
    helpers_default.debug("TailModifiers matched", {
      keyword,
      valueType: Array.isArray(value) ? "array" : typeof value,
      valueLength: Array.isArray(value) ? value.length : void 0
    });
    if (keyword === "with") {
      return value;
    } else if (keyword === "|") {
      return {
        pipeline: value
      };
    } else if (keyword === "as") {
      return {
        asSection: value
      };
    } else {
      return {
        [keyword]: value
      };
    }
  }, "peg$f347");
  var peg$f348 = /* @__PURE__ */ __name(function(props) {
    const result = {};
    if (props) {
      for (const [key, value] of props) {
        result[key] = value;
      }
    }
    return result;
  }, "peg$f348");
  var peg$f349 = /* @__PURE__ */ __name(function(items) {
    return items;
  }, "peg$f349");
  var peg$f350 = /* @__PURE__ */ __name(function(transformers) {
    return transformers;
  }, "peg$f350");
  var peg$f351 = /* @__PURE__ */ __name(function(level) {
    return level;
  }, "peg$f351");
  var peg$f352 = /* @__PURE__ */ __name(function(deps) {
    return deps;
  }, "peg$f352");
  var peg$f353 = /* @__PURE__ */ __name(function(title) {
    return title;
  }, "peg$f353");
  var peg$f354 = /* @__PURE__ */ __name(function(first, rest) {
    helpers_default.debug("PipelineShorthand matched", {
      first: first?.rawIdentifier || first,
      restCount: rest.length,
      rest: rest.map((r) => r?.rawIdentifier || r)
    });
    return [
      first,
      ...rest
    ];
  }, "peg$f354");
  var peg$f355 = /* @__PURE__ */ __name(function(cmd) {
    helpers_default.debug("PipelineRest matched", {
      cmd: cmd?.rawIdentifier || cmd
    });
    return cmd;
  }, "peg$f355");
  var peg$f356 = /* @__PURE__ */ __name(function(ttl) {
    return ttl;
  }, "peg$f356");
  var peg$f357 = /* @__PURE__ */ __name(function(id, fields, args, tail) {
    helpers_default.debug("FieldAccessExec matched", {
      id,
      fields
    });
    const lastField = fields[fields.length - 1];
    const methodName = lastField.value;
    const objectFields = fields.slice(0, -1);
    const objectRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...objectFields.length > 0 ? {
        fields: objectFields
      } : {}
    }, location());
    const fullPathRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      fields
    }, location());
    const ref = {
      name: methodName,
      identifier: [
        fullPathRef
      ],
      args: args || [],
      isCommandReference: true,
      objectReference: objectRef
    };
    return helpers_default.createExecInvocation(ref, tail || null, location());
  }, "peg$f357");
  var peg$f358 = /* @__PURE__ */ __name(function(id, fields, args) {
    helpers_default.debug("FieldAccessExecNoTail matched", {
      id,
      fields
    });
    const lastField = fields[fields.length - 1];
    const methodName = lastField.value;
    const objectFields = fields.slice(0, -1);
    const objectRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...objectFields.length > 0 ? {
        fields: objectFields
      } : {}
    }, location());
    const fullPathRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      fields
    }, location());
    const ref = {
      name: methodName,
      identifier: [
        fullPathRef
      ],
      args: args || [],
      isCommandReference: true,
      objectReference: objectRef
    };
    return {
      type: "ExecInvocation",
      commandRef: ref,
      withClause: null
    };
  }, "peg$f358");
  var peg$f359 = /* @__PURE__ */ __name(function(name, args, tail) {
    const ref = {
      name,
      identifier: [
        helpers_default.createVariableReferenceNode("varIdentifier", {
          identifier: name
        }, location())
      ],
      args: args || [],
      isCommandReference: true
    };
    return helpers_default.createExecInvocation(ref, tail || null, location());
  }, "peg$f359");
  var peg$f360 = /* @__PURE__ */ __name(function(name, args) {
    const ref = {
      name,
      identifier: [
        helpers_default.createVariableReferenceNode("varIdentifier", {
          identifier: name
        }, location())
      ],
      args: args || [],
      isCommandReference: true
    };
    return {
      type: "ExecInvocation",
      commandRef: ref,
      withClause: null
    };
  }, "peg$f360");
  var peg$f361 = /* @__PURE__ */ __name(function(id, fields, tail) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const varRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
    if (tail) {
      return {
        type: "VariableReferenceWithTail",
        variable: varRef,
        withClause: tail
      };
    }
    return varRef;
  }, "peg$f361");
  var peg$f362 = /* @__PURE__ */ __name(function(id, fields) {
    const normalizedId = helpers_default.normalizePathVar(id);
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
  }, "peg$f362");
  var peg$f363 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("UnifiedCodeBrackets matched", {
      content
    });
    return {
      content: content.trim(),
      isMultiLine: content.includes("\n")
    };
  }, "peg$f363");
  var peg$f364 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("UnifiedCommandBrackets: Trying to match at position", offset());
    return true;
  }, "peg$f364");
  var peg$f365 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("UnifiedCommandBrackets: Matched opening brace");
    return true;
  }, "peg$f365");
  var peg$f366 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedCommandBrackets: Got parts, looking for closing brace");
    return true;
  }, "peg$f366");
  var peg$f367 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedCommandBrackets: Matched closing brace, entering action");
    return true;
  }, "peg$f367");
  var peg$f368 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedCommandBrackets matched with UnifiedCommandParts", {
      parts
    });
    const rawCommand = helpers_default.reconstructRawString(parts);
    let commandBases = [];
    let rawBases = [];
    if (parts.length > 0 && parts[0].type === node_type_default.Text) {
      const cmdMatch = parts[0].content.match(/^(\S+)/);
      if (cmdMatch) {
        commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdMatch[1],
          location: parts[0].location
        }));
        rawBases.push(cmdMatch[1]);
      }
    }
    return {
      type: "command",
      subtype: "runCommand",
      values: {
        command: parts,
        commandBases
      },
      raw: {
        command: rawCommand,
        commandBases: rawBases
      },
      meta: {
        isMultiLine: rawCommand.includes("\n"),
        commandCount: commandBases.length,
        hasScriptRunner: false
        // TODO: Detect script runners
      }
    };
  }, "peg$f368");
  var peg$f369 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("UnifiedRunContent matched", {
      content
    });
    return content;
  }, "peg$f369");
  var peg$f370 = /* @__PURE__ */ __name(function(lang, ws, rest) {
    helpers_default.debug("UnifiedRunContentInner detected code", {
      lang,
      rest
    });
    const langNode = helpers_default.createNode(node_type_default.Text, {
      content: lang,
      location: location()
    });
    const codeNode = helpers_default.createNode(node_type_default.Text, {
      content: rest.trim(),
      location: location()
    });
    return {
      type: "code",
      subtype: "runCode",
      values: {
        lang: [
          langNode
        ],
        args: [],
        code: [
          codeNode
        ]
      },
      raw: {
        lang,
        args: [],
        code: rest.trim()
      },
      meta: {
        isMultiLine: rest.includes("\n"),
        language: lang,
        hasVariables: false
        // Code blocks don't support variable interpolation
      }
    };
  }, "peg$f370");
  var peg$f371 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedRunContentInner detected command", {
      parts
    });
    const rawCommand = helpers_default.reconstructRawString(parts);
    let commandBases = [];
    let rawBases = [];
    if (parts.length > 0 && parts[0].type === node_type_default.Text) {
      const cmdMatch = parts[0].content.match(/^(\S+)/);
      if (cmdMatch) {
        commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdMatch[1],
          location: parts[0].location
        }));
        rawBases.push(cmdMatch[1]);
      }
    }
    return {
      type: "command",
      subtype: "runCommand",
      values: {
        command: parts,
        commandBases
      },
      raw: {
        command: rawCommand,
        commandBases: rawBases
      },
      meta: {
        isMultiLine: rawCommand.includes("\n"),
        commandCount: commandBases.length,
        hasScriptRunner: false
        // TODO: Detect script runners
      }
    };
  }, "peg$f371");
  var peg$f372 = /* @__PURE__ */ __name(function(content) {
    let inQuote = null;
    for (let i = 0; i < content.length; i++) {
      const char = content[i];
      const next = content[i + 1];
      if ((char === '"' || char === "'") && !inQuote) {
        inQuote = char;
      } else if (char === inQuote) {
        inQuote = null;
      } else if (!inQuote) {
        if (char === "&" && next === "&") {
          helpers_default.mlldError(`Shell operator AND (&&) is not allowed in mlld. Use separate @run commands or @when for control flow.`);
        } else if (char === "|" && next === "|") {
          helpers_default.mlldError(`Shell operator OR (||) is not allowed in mlld. Use separate @run commands or @when for control flow.`);
        } else if (char === ";") {
          helpers_default.mlldError(`Shell operator semicolon (;) is not allowed in mlld. Use separate @run commands.`);
        } else if (char === ">" && next === ">") {
          helpers_default.mlldError(`Shell append operator (>>) is not allowed in mlld. Use @output directive for file operations.`);
        } else if (char === ">" || char === "<") {
          helpers_default.mlldError(`Shell redirection operators are not allowed in mlld. Use @output directive for file operations.`);
        } else if (char === "&" && next !== "&" && next !== ">") {
          helpers_default.mlldError(`Background execution (&) is not allowed in mlld. All commands run synchronously.`);
        } else ;
      } else ;
    }
    return {
      commands: [
        {
          type: "command",
          command: helpers_default.createNode(node_type_default.Text, {
            content: content.trim(),
            location: location()
          }),
          arguments: []
        }
      ],
      commandBases: []
    };
  }, "peg$f372");
  var peg$f373 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("UnifiedCommandParts: Starting to parse at position", offset());
    return true;
  }, "peg$f373");
  var peg$f374 = /* @__PURE__ */ __name(function(tokens) {
    helpers_default.debug("UnifiedCommandParts: Parsed tokens", {
      count: tokens.length
    });
    const flattened = [];
    for (const token of tokens) {
      if (Array.isArray(token)) {
        flattened.push(...token);
      } else {
        flattened.push(token);
      }
    }
    return flattened;
  }, "peg$f374");
  var peg$f375 = /* @__PURE__ */ __name(function(content) {
    const nodes = [];
    let currentText = '"';
    for (const item of content) {
      if (typeof item === "string") {
        currentText += item;
      } else if (item.type === node_type_default.VariableReference || item.type === "FileReference") {
        if (currentText) {
          nodes.push(helpers_default.createNode(node_type_default.Text, {
            content: currentText,
            location: location()
          }));
          currentText = "";
        }
        nodes.push(item);
      }
    }
    currentText += '"';
    if (currentText !== '""') {
      nodes.push(helpers_default.createNode(node_type_default.Text, {
        content: currentText,
        location: location()
      }));
    }
    if (nodes.length === 1 && nodes[0].type === node_type_default.Text) {
      return nodes[0];
    }
    return nodes;
  }, "peg$f375");
  var peg$f376 = /* @__PURE__ */ __name(function(content) {
    const text2 = "'" + content.join("") + "'";
    return helpers_default.createNode(node_type_default.Text, {
      content: text2,
      location: location()
    });
  }, "peg$f376");
  var peg$f377 = /* @__PURE__ */ __name(function(varRef) {
    return varRef;
  }, "peg$f377");
  var peg$f378 = /* @__PURE__ */ __name(function(fileRef) {
    return fileRef;
  }, "peg$f378");
  var peg$f379 = /* @__PURE__ */ __name(function(chars) {
    return chars;
  }, "peg$f379");
  var peg$f380 = /* @__PURE__ */ __name(function() {
    return "@";
  }, "peg$f380");
  var peg$f381 = /* @__PURE__ */ __name(function() {
    return "<";
  }, "peg$f381");
  var peg$f382 = /* @__PURE__ */ __name(function(chars) {
    return chars;
  }, "peg$f382");
  var peg$f383 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f383");
  var peg$f384 = /* @__PURE__ */ __name(function() {
    const pos = peg$currPos;
    const ahead = input.substring(pos, pos + 3);
    const char = input[pos];
    const prev = pos > 0 ? input[pos - 1] : null;
    if (char === '"' || char === "'") {
      return false;
    }
    if (char === " " || char === "	" || char === "\n" || char === "\r") {
      return false;
    }
    if (char === "@") {
      return false;
    }
    if (char === ")" && input[pos + 1] === "]") {
      return false;
    }
    if (char === String.fromCharCode(125)) {
      return false;
    }
    const isEscaped = prev === "\\";
    if (!isEscaped) {
      if (ahead.startsWith("&&")) {
        helpers_default.mlldError(`Shell operator AND (&&) is not allowed in mlld. Use separate @run commands or @when for control flow.`);
      }
      if (ahead.startsWith("||")) {
        helpers_default.mlldError(`Shell operator OR (||) is not allowed in mlld. Use separate @run commands or @when for control flow.`);
      }
      if (ahead.startsWith(">>")) {
        helpers_default.mlldError(`Shell append operator (>>) is not allowed in mlld. Use @output directive for file operations.`);
      }
      if (char === ";") {
        helpers_default.mlldError(`Shell operator semicolon (;) is not allowed in mlld commands. Use @run sh [(script)] for shell scripts or separate @run commands.`);
      }
      if (char === ">" && input[pos + 1] !== ">") {
        helpers_default.mlldError(`Shell redirection operators are not allowed in mlld. Use @output directive for file operations.`);
      }
      if (char === "<") {
        helpers_default.mlldError(`Shell redirection operators are not allowed in mlld. Use @output directive for file operations.`);
      }
      if (char === "&" && input[pos + 1] !== "&" && input[pos + 1] !== ">") {
        helpers_default.mlldError(`Background execution (&) is not allowed in mlld. All commands run synchronously.`);
      }
    }
    return true;
  }, "peg$f384");
  var peg$f385 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f385");
  var peg$f386 = /* @__PURE__ */ __name(function(spaces) {
    return helpers_default.createNode(node_type_default.Text, {
      content: spaces.join(""),
      location: location()
    });
  }, "peg$f386");
  var peg$f387 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f387");
  var peg$f388 = /* @__PURE__ */ __name(function(chars) {
    return '"' + chars.join("") + '"';
  }, "peg$f388");
  var peg$f389 = /* @__PURE__ */ __name(function(chars) {
    return "'" + chars.join("") + "'";
  }, "peg$f389");
  var peg$f390 = /* @__PURE__ */ __name(function(chars) {
    return "`" + chars.join("") + "`";
  }, "peg$f390");
  var peg$f391 = /* @__PURE__ */ __name(function(c) {
    return c;
  }, "peg$f391");
  var peg$f392 = /* @__PURE__ */ __name(function(chars) {
    return "/*" + chars.join("") + "*/";
  }, "peg$f392");
  var peg$f393 = /* @__PURE__ */ __name(function(c) {
    return c;
  }, "peg$f393");
  var peg$f394 = /* @__PURE__ */ __name(function(chars) {
    return "//" + chars.join("");
  }, "peg$f394");
  var peg$f395 = /* @__PURE__ */ __name(function(inner) {
    return "{" + inner + "}";
  }, "peg$f395");
  var peg$f396 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f396");
  var peg$f397 = /* @__PURE__ */ __name(function(char) {
    return "\\" + char;
  }, "peg$f397");
  var peg$f398 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f398");
  var peg$f399 = /* @__PURE__ */ __name(function(char) {
    return "\\" + char;
  }, "peg$f399");
  var peg$f400 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f400");
  var peg$f401 = /* @__PURE__ */ __name(function(char) {
    return "\\" + char;
  }, "peg$f401");
  var peg$f402 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f402");
  var peg$f403 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos);
    return /(\s*(&&|\|\||==|!=|<=|>=|<|>|\?|!))|(\s*\?\s*[^:]+\s*:)/.test(rest);
  }, "peg$f403");
  var peg$f404 = /* @__PURE__ */ __name(function(expr) {
    return expr;
  }, "peg$f404");
  var peg$f405 = /* @__PURE__ */ __name(function(base, fields, pipes) {
    helpers_default.debug("AlligatorWithFields matched", {
      source: base.source,
      fieldCount: fields.length,
      pipeCount: pipes ? pipes.length : 0
    });
    const allPipes = [
      ...base.pipes || [],
      ...pipes || []
    ];
    return helpers_default.createFileReferenceNode(base.source, fields, allPipes, location());
  }, "peg$f405");
  var peg$f406 = /* @__PURE__ */ __name(function(template, pipes) {
    helpers_default.debug("TemplateWithPipeline matched", {
      template: template.wrapperType,
      pipelineCount: pipes.length
    });
    const content = template.content || [
      helpers_default.createNode(node_type_default.Text, {
        content: "",
        location: location()
      })
    ];
    const pipeline = pipes.map((pipe) => ({
      identifier: [
        helpers_default.createVariableReferenceNode("varIdentifier", {
          identifier: pipe.transform
        }, location())
      ],
      args: pipe.args || [],
      fields: [],
      rawIdentifier: pipe.transform,
      rawArgs: pipe.args || []
    }));
    return {
      content,
      wrapperType: template.wrapperType,
      withClause: {
        pipeline
      }
    };
  }, "peg$f406");
  var peg$f407 = /* @__PURE__ */ __name(function(id, fields) {
    return peg$currPos;
  }, "peg$f407");
  var peg$f408 = /* @__PURE__ */ __name(function(id, fields, pipeStart, transform) {
    return {
      transform,
      pipeStart
    };
  }, "peg$f408");
  var peg$f409 = /* @__PURE__ */ __name(function(id, fields, firstPipe, restPipes) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const varRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
    const pipes = [];
    if (firstPipe) {
      const loc = location();
      const startOffset = firstPipe.pipeStart;
      pipes.push({
        type: "CondensedPipe",
        transform: firstPipe.transform,
        hasAt: true,
        location: {
          source: loc.source,
          start: {
            offset: startOffset,
            line: loc.start.line,
            column: loc.start.column - (loc.start.offset - startOffset)
          },
          end: loc.end
        }
      });
    }
    if (restPipes && restPipes.length > 0) {
      pipes.push(...restPipes);
    }
    if (pipes.length > 0) {
      return {
        ...varRef,
        pipes
      };
    }
    return varRef;
  }, "peg$f409");
  var peg$f410 = /* @__PURE__ */ __name(function() {
    return peg$currPos;
  }, "peg$f410");
  var peg$f411 = /* @__PURE__ */ __name(function(pipeStart, transform) {
    const loc = location();
    const startOffset = pipeStart;
    return {
      type: "CondensedPipe",
      transform,
      hasAt: true,
      location: {
        source: loc.source,
        start: {
          offset: startOffset,
          line: loc.start.line,
          column: loc.start.column - (loc.start.offset - startOffset)
        },
        end: loc.end
      }
    };
  }, "peg$f411");
  var peg$f412 = /* @__PURE__ */ __name(function(id, fields, args, tail) {
    const lastField = fields[fields.length - 1];
    const methodName = lastField.value;
    const objectFields = fields.slice(0, -1);
    const objectRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...objectFields.length > 0 ? {
        fields: objectFields
      } : {}
    }, location());
    const ref = {
      name: methodName,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: methodName,
          location: location()
        })
      ],
      args: args || [],
      isCommandReference: true,
      objectReference: objectRef
    };
    return helpers_default.createExecInvocation(ref, tail || null, location());
  }, "peg$f412");
  var peg$f413 = /* @__PURE__ */ __name(function(name, args, tail) {
    const ref = {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args: args || [],
      isCommandReference: true
    };
    return helpers_default.createExecInvocation(ref, tail || null, location());
  }, "peg$f413");
  var peg$f414 = /* @__PURE__ */ __name(function(command) {
    const commandLocation = location();
    const parts = helpers_default.parseCommandContent(command, commandLocation);
    let commandBases = [];
    if (parts.length > 0 && parts[0].type === node_type_default.Text) {
      const cmdMatch = parts[0].content.match(/^(\S+)/);
      if (cmdMatch) {
        commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdMatch[1],
          location: commandLocation
        }));
      }
    }
    return {
      type: "command",
      command: parts,
      commandBases,
      hasRunKeyword: true,
      meta: {
        isMultiLine: false,
        commandCount: commandBases.length,
        hasScriptRunner: false
      }
    };
  }, "peg$f414");
  var peg$f415 = /* @__PURE__ */ __name(function(content) {
    return {
      type: "command",
      command: content.values.command,
      commandBases: content.values.commandBases,
      hasRunKeyword: true,
      meta: content.meta
    };
  }, "peg$f415");
  var peg$f416 = /* @__PURE__ */ __name(function(invocation) {
    return {
      type: "runExec",
      invocation,
      hasRunKeyword: true
    };
  }, "peg$f416");
  var peg$f417 = /* @__PURE__ */ __name(function(lang, code) {
    return {
      type: "code",
      language: lang,
      code,
      hasRunKeyword: false
    };
  }, "peg$f417");
  var peg$f418 = /* @__PURE__ */ __name(function(lang, code) {
    return {
      type: "nestedDirective",
      directive: "run",
      language: lang,
      code
    };
  }, "peg$f418");
  var peg$f419 = /* @__PURE__ */ __name(function(cmd) {
    return {
      type: "nestedDirective",
      directive: "run",
      command: cmd
    };
  }, "peg$f419");
  var peg$f420 = /* @__PURE__ */ __name(function(chars) {
    return chars.map((c) => c[1]).join("");
  }, "peg$f420");
  var peg$f421 = /* @__PURE__ */ __name(function(lang, content) {
    return {
      type: "code",
      language: lang,
      code: content,
      hasRunKeyword: true
    };
  }, "peg$f421");
  var peg$f422 = /* @__PURE__ */ __name(function(content) {
    return {
      type: "command",
      command: content.values.command,
      commandBases: content.values.commandBases,
      hasRunKeyword: true,
      meta: content.meta
    };
  }, "peg$f422");
  var peg$f423 = /* @__PURE__ */ __name(function(lang, code) {
    return {
      type: "code",
      language: lang,
      code,
      hasRunKeyword: false
    };
  }, "peg$f423");
  var peg$f424 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f424");
  var peg$f425 = /* @__PURE__ */ __name(function(inner) {
    return "{" + inner + "}";
  }, "peg$f425");
  var peg$f426 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f426");
  var peg$f427 = /* @__PURE__ */ __name(function(conditions, tail) {
    helpers_default.debug("WhenExpression matched", {
      conditionCount: conditions.length,
      hasTailModifiers: !!tail
    });
    return helpers_default.createWhenExpression(conditions, tail, location());
  }, "peg$f427");
  var peg$f428 = /* @__PURE__ */ __name(function() {
    return helpers_default.isUnclosedArray(input, peg$currPos);
  }, "peg$f428");
  var peg$f429 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Unclosed array in when expression. Expected ']' to close the condition list.`, "]", location());
  }, "peg$f429");
  var peg$f430 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Missing condition list in when expression. Expected: when: [condition => value, ...]`, "[", location());
  }, "peg$f430");
  var peg$f431 = /* @__PURE__ */ __name(function() {
    return !input.substring(peg$currPos).startsWith(":");
  }, "peg$f431");
  var peg$f432 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Missing ':' in when expression. Expected: when: [...]`, ":", location());
  }, "peg$f432");
  var peg$f433 = /* @__PURE__ */ __name(function(first, pair) {
    return pair;
  }, "peg$f433");
  var peg$f434 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f434");
  var peg$f435 = /* @__PURE__ */ __name(function(condition, action) {
    return {
      condition,
      action: [
        action
      ]
    };
  }, "peg$f435");
  var peg$f436 = /* @__PURE__ */ __name(function(pattern, expr) {
    helpers_default.debug("ForExpression matched", {
      pattern,
      expr
    });
    return helpers_default.createForExpression(pattern.variable, pattern.source, expr, location());
  }, "peg$f436");
  var peg$f437 = /* @__PURE__ */ __name(function(id, source) {
    helpers_default.mlldError("Missing '=>' in for expression. Expected: for @var in @collection => expression", "=>", location());
  }, "peg$f437");
  var peg$f438 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Missing 'in' in for expression. Expected: for @var in @collection => expression", "in", location());
  }, "peg$f438");
  var peg$f439 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid for expression syntax. Expected: for @var in @collection => expression", "@", location());
  }, "peg$f439");
  var peg$f440 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      isSpecial: true
    }, location());
  }, "peg$f440");
  var peg$f441 = /* @__PURE__ */ __name(function() {
    return "now";
  }, "peg$f441");
  var peg$f442 = /* @__PURE__ */ __name(function() {
    return "base";
  }, "peg$f442");
  var peg$f443 = /* @__PURE__ */ __name(function() {
    return "input";
  }, "peg$f443");
  var peg$f444 = /* @__PURE__ */ __name(function() {
    return "debug";
  }, "peg$f444");
  var peg$f445 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: "frontmatter",
      fields: id.fields
    }, location());
  }, "peg$f445");
  var peg$f446 = /* @__PURE__ */ __name(function(id, fields) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const node = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
    helpers_default.debug("CreateVAR", {
      rule: "AtVar",
      node,
      fields
    });
    return node;
  }, "peg$f446");
  var peg$f447 = /* @__PURE__ */ __name(function(id, fields) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const node = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      fields
    }, location());
    helpers_default.debug("CreateVAR", {
      rule: "AtVar with bracket",
      node,
      fields
    });
    return node;
  }, "peg$f447");
  var peg$f448 = /* @__PURE__ */ __name(function(id, format) {
    const node = helpers_default.createVariableReferenceNode("varInterpolation", {
      identifier: id,
      isSpecial: true,
      ...format ? {
        format
      } : {}
    }, location());
    helpers_default.debug("CreateVAR", {
      rule: "InterpolationSpecialVar",
      node
    });
    return node;
  }, "peg$f448");
  var peg$f449 = /* @__PURE__ */ __name(function(id, format) {
    const node = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...format ? {
        format
      } : {}
    }, location());
    helpers_default.debug("CreateVAR", {
      rule: "InterpolationSimpleVar",
      node
    });
    return node;
  }, "peg$f449");
  var peg$f450 = /* @__PURE__ */ __name(function(id, fields, format) {
    const node = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      fields: fields || [],
      ...format ? {
        format
      } : {}
    }, location());
    helpers_default.debug("CreateVAR", {
      rule: "InterpolationDataVar",
      node
    });
    return node;
  }, "peg$f450");
  var peg$f451 = /* @__PURE__ */ __name(function(format) {
    return format;
  }, "peg$f451");
  var peg$f452 = /* @__PURE__ */ __name(function(field, rest) {
    return {
      fields: [
        {
          type: "dot",
          value: field
        },
        ...rest
      ]
    };
  }, "peg$f452");
  var peg$f453 = /* @__PURE__ */ __name(function(id, fields, tail) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const varRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
    if (tail) {
      return {
        type: "VariableReferenceWithTail",
        variable: varRef,
        withClause: tail
      };
    }
    return varRef;
  }, "peg$f453");
  var peg$f454 = /* @__PURE__ */ __name(function(varRef, pipes) {
    if (pipes && pipes.length > 0) {
      return {
        ...varRef,
        pipes
      };
    }
    return varRef;
  }, "peg$f454");
  var peg$f455 = /* @__PURE__ */ __name(function(id, fields, pipes) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const varRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
    if (pipes && pipes.length > 0) {
      return {
        ...varRef,
        pipes
      };
    }
    return varRef;
  }, "peg$f455");
  var peg$f456 = /* @__PURE__ */ __name(function(object) {
    helpers_default.debug("WithClause matched", {
      object
    });
    return object;
  }, "peg$f456");
  var peg$f457 = /* @__PURE__ */ __name(function(props) {
    const result = {};
    if (props) {
      for (const [key, value] of props) {
        result[key] = value;
      }
    }
    return result;
  }, "peg$f457");
  var peg$f458 = /* @__PURE__ */ __name(function(first, prop) {
    return prop;
  }, "peg$f458");
  var peg$f459 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f459");
  var peg$f460 = /* @__PURE__ */ __name(function(pipeline) {
    return [
      "pipeline",
      pipeline
    ];
  }, "peg$f460");
  var peg$f461 = /* @__PURE__ */ __name(function(needs) {
    return [
      "needs",
      needs
    ];
  }, "peg$f461");
  var peg$f462 = /* @__PURE__ */ __name(function(format) {
    return [
      "format",
      format
    ];
  }, "peg$f462");
  var peg$f463 = /* @__PURE__ */ __name(function(title) {
    return [
      "asSection",
      title
    ];
  }, "peg$f463");
  var peg$f464 = /* @__PURE__ */ __name(function(commands) {
    return commands || [];
  }, "peg$f464");
  var peg$f465 = /* @__PURE__ */ __name(function(first, cmd) {
    return cmd;
  }, "peg$f465");
  var peg$f466 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f466");
  var peg$f467 = /* @__PURE__ */ __name(function(ref) {
    helpers_default.debug("PipelineCommand matched unified reference", {
      ref
    });
    if (ref.type === "ExecInvocation") {
      return {
        identifier: ref.commandRef.identifier,
        args: ref.commandRef.args || [],
        fields: [],
        rawIdentifier: ref.commandRef.name,
        rawArgs: ref.commandRef.args ? ref.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
    } else {
      return {
        identifier: [
          ref
        ],
        args: [],
        fields: ref.fields || [],
        rawIdentifier: ref.identifier,
        rawArgs: []
      };
    }
  }, "peg$f467");
  var peg$f468 = /* @__PURE__ */ __name(function(langs) {
    const result = {};
    if (langs) {
      for (const [lang, packages] of langs) {
        result[lang] = packages;
      }
    }
    return result;
  }, "peg$f468");
  var peg$f469 = /* @__PURE__ */ __name(function(first, entry) {
    return entry;
  }, "peg$f469");
  var peg$f470 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f470");
  var peg$f471 = /* @__PURE__ */ __name(function(lang, packages) {
    return [
      lang,
      packages
    ];
  }, "peg$f471");
  var peg$f472 = /* @__PURE__ */ __name(function(packages) {
    const result = {};
    if (packages) {
      for (const [pkg, version] of packages) {
        result[pkg] = version;
      }
    }
    return result;
  }, "peg$f472");
  var peg$f473 = /* @__PURE__ */ __name(function(first, entry) {
    return entry;
  }, "peg$f473");
  var peg$f474 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f474");
  var peg$f475 = /* @__PURE__ */ __name(function(pkg, version) {
    return [
      pkg,
      version
    ];
  }, "peg$f475");
  var peg$f476 = /* @__PURE__ */ __name(function(path) {
    helpers_default.debug("AddPathCore matched path", {
      path
    });
    return {
      type: "addPath",
      values: {
        path: path.values.path || path.values.url
      },
      raw: {
        path: path.raw.path || path.raw.url
      },
      meta: {
        ...path.meta,
        pathSubtype: path.subtype
        // Preserve the specific path type
      }
    };
  }, "peg$f476");
  var peg$f477 = /* @__PURE__ */ __name(function(template) {
    helpers_default.debug("AddTemplateCore matched template", {
      template
    });
    return {
      type: "addTemplate",
      values: {
        content: template.values.content
      },
      raw: {
        content: template.raw.content
      },
      meta: template.meta
    };
  }, "peg$f477");
  var peg$f478 = /* @__PURE__ */ __name(function(varRef) {
    helpers_default.debug("AddVariableCore matched variable", {
      varRef
    });
    return {
      type: "addVariable",
      values: {
        variable: [
          varRef
        ]
      },
      raw: {
        variable: `@${varRef.identifier}`
      },
      meta: {
        hasFieldAccess: !!(varRef.fields && varRef.fields.length > 0)
      }
    };
  }, "peg$f478");
  var peg$f479 = /* @__PURE__ */ __name(function(id, args) {
    helpers_default.debug("AddTemplateInvocationCore matched", {
      id,
      args
    });
    const processedArgs = args || [];
    return {
      type: "addTemplateInvocation",
      values: {
        templateName: [
          helpers_default.createNode(node_type_default.Text, {
            content: id,
            location: location()
          })
        ],
        arguments: processedArgs
      },
      raw: {
        templateName: id,
        arguments: processedArgs.map((arg) => {
          if (arg.type === "string") return `"${arg.value}"`;
          if (arg.type === "variable") return `@${arg.value.identifier}`;
          return arg.value || "";
        })
      },
      meta: {
        argumentCount: processedArgs.length
      }
    };
  }, "peg$f479");
  var peg$f480 = /* @__PURE__ */ __name(function(sectionTitle, path, rename) {
    helpers_default.debug("AddPathSectionCore matched", {
      sectionTitle,
      path,
      rename
    });
    return {
      type: "addPathSection",
      values: {
        sectionTitle,
        path: path.values.path || path.values.url,
        ...rename ? {
          newTitle: rename
        } : {}
      },
      raw: {
        sectionTitle: sectionTitle[0].content,
        path: path.raw.path || path.raw.url,
        ...rename ? {
          newTitle: rename[0].content
        } : {}
      },
      meta: {
        hasRename: !!rename,
        ...path.meta,
        pathSubtype: path.subtype
        // Preserve the specific path type
      }
    };
  }, "peg$f480");
  var peg$f481 = /* @__PURE__ */ __name(function(pathText, sectionText, rename) {
    helpers_default.debug("AddPathSectionCore matched bracketed", {
      pathText,
      sectionText,
      rename
    });
    const rawPath = pathText.trim();
    const pathParts = [
      helpers_default.createNode(node_type_default.Text, {
        content: rawPath,
        location: location()
      })
    ];
    return {
      type: "addPathSection",
      values: {
        sectionTitle: [
          helpers_default.createNode(node_type_default.Text, {
            content: sectionText.trim(),
            location: location()
          })
        ],
        path: pathParts,
        ...rename ? {
          newTitle: rename
        } : {}
      },
      raw: {
        sectionTitle: sectionText.trim(),
        path: rawPath,
        ...rename ? {
          newTitle: rename[0].content
        } : {}
      },
      meta: {
        hasRename: !!rename,
        hasVariables: false,
        isAbsolute: rawPath.startsWith("/"),
        hasExtension: /\.[a-zA-Z0-9]+$/.test(rawPath),
        extension: rawPath.match(/\.([a-zA-Z0-9]+)$/)?.[1] || null
      }
    };
  }, "peg$f481");
  var peg$f482 = /* @__PURE__ */ __name(function(code) {
    helpers_default.debug("CodeCore matched code block", {
      code
    });
    let language = null;
    let codeContent = code.raw;
    const langMatch = code.raw.match(/^\s*\[([a-zA-Z0-9_+#.]+)\s*:\s*([\s\S]*)\]\s*$/);
    if (langMatch) {
      language = langMatch[1];
      codeContent = langMatch[2];
    }
    return {
      type: "code",
      subtype: "codeBlock",
      values: {
        code: code.parts,
        ...language ? {
          language: [
            helpers_default.createNode(node_type_default.Text, {
              content: language,
              location: location()
            })
          ]
        } : {}
      },
      raw: {
        code: codeContent,
        ...language ? {
          language
        } : {}
      },
      meta: {
        hasLanguage: !!language,
        language: language || "text",
        hasVariables: false,
        isMultiLine: codeContent.includes("\n")
      }
    };
  }, "peg$f482");
  var peg$f483 = /* @__PURE__ */ __name(function(language, code) {
    helpers_default.debug("LanguageCodeCore matched", {
      language,
      code
    });
    return {
      type: "code",
      subtype: "languageCode",
      values: {
        language: [
          helpers_default.createNode(node_type_default.Text, {
            content: language,
            location: location()
          })
        ],
        code: code.parts
      },
      raw: {
        language,
        code: code.raw
      },
      meta: {
        hasLanguage: true,
        language,
        hasVariables: false,
        isMultiLine: code.raw.includes("\n")
      }
    };
  }, "peg$f483");
  var peg$f484 = /* @__PURE__ */ __name(function(language, code) {
    helpers_default.debug("RunLanguageCodeCore matched", {
      language,
      code
    });
    const langNode = helpers_default.createNode(node_type_default.Text, {
      content: language,
      location: location()
    });
    const codeContent = code.content;
    const codeNode = helpers_default.createNode(node_type_default.Text, {
      content: codeContent,
      location: location()
    });
    const values = {
      lang: [
        langNode
      ],
      args: [],
      code: [
        codeNode
      ]
    };
    const raw = {
      lang: language,
      args: [],
      code: codeContent
    };
    const meta = {
      isMultiLine: code.isMultiLine || codeContent.includes("\n"),
      language,
      hasVariables: false
      // Code blocks don't support variable interpolation
    };
    return {
      type: "runCode",
      values,
      raw,
      meta,
      location: location()
    };
  }, "peg$f484");
  var peg$f485 = /* @__PURE__ */ __name(function(language, args, code) {
    helpers_default.debug("RunLanguageCodeWithArgs matched", {
      language,
      args,
      code
    });
    const langNode = helpers_default.createNode(node_type_default.Text, {
      content: language,
      location: location()
    });
    const codeContent = code.content;
    const codeNode = helpers_default.createNode(node_type_default.Text, {
      content: codeContent,
      location: location()
    });
    const values = {
      lang: [
        langNode
      ],
      args: args || [],
      code: [
        codeNode
      ]
    };
    const raw = {
      lang: language,
      args: args ? args.map((arg) => {
        if (arg.type === node_type_default.VariableReference) {
          return "@" + arg.identifier;
        }
        if (arg.type === node_type_default.Argument && arg.value) {
          if (arg.value.type === node_type_default.Text) return arg.value.content;
          if (arg.value.type === node_type_default.VariableReference) return "@" + arg.value.identifier;
        }
        return arg.identifier || "";
      }) : [],
      code: codeContent
    };
    const meta = {
      isMultiLine: code.isMultiLine || codeContent.includes("\n"),
      language,
      hasVariables: false
      // Code blocks don't support variable interpolation
    };
    return {
      type: "runCode",
      values,
      raw,
      meta,
      location: location()
    };
  }, "peg$f485");
  var peg$f486 = /* @__PURE__ */ __name(function(lang) {
    return lang;
  }, "peg$f486");
  var peg$f487 = /* @__PURE__ */ __name(function(language) {
    return language;
  }, "peg$f487");
  var peg$f488 = /* @__PURE__ */ __name(function(args) {
    return args || [];
  }, "peg$f488");
  var peg$f489 = /* @__PURE__ */ __name(function(first, arg) {
    return arg;
  }, "peg$f489");
  var peg$f490 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f490");
  var peg$f491 = /* @__PURE__ */ __name(function(varRef) {
    return varRef;
  }, "peg$f491");
  var peg$f492 = /* @__PURE__ */ __name(function(command) {
    helpers_default.debug("CommandCore matched command", {
      command
    });
    let commandBases = [];
    let rawBases = [];
    let hasScriptRunner = false;
    try {
      const rawCommandString = command.raw;
      const commandSegments = rawCommandString.split(/\s*(\||&&|\|\||;)\s*/);
      for (let i = 0; i < commandSegments.length; i += 2) {
        const segment = commandSegments[i].trim();
        if (!segment) continue;
        const match = segment.match(/^(\S+)/);
        if (match) {
          const cmdBase = match[1];
          const runnerMatch = segment.match(/^(npm|yarn|pnpm|bun)\s+run\s+(\S+)/);
          if (runnerMatch) {
            commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
              command: runnerMatch[1] + " run",
              script: runnerMatch[2],
              isScriptRunner: true,
              location: location()
            }));
            rawBases.push(runnerMatch[1] + " run");
            hasScriptRunner = true;
          } else if (segment.match(/^npx\s+(\S+)/)) {
            const npxMatch = segment.match(/^npx\s+(\S+)/);
            commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
              command: "npx",
              package: npxMatch[1],
              isPackageRunner: true,
              location: location()
            }));
            rawBases.push("npx");
            hasScriptRunner = true;
          } else if (segment.match(/^python\s+-m\s+(\S+)/)) {
            const pythonMatch = segment.match(/^python\s+-m\s+(\S+)/);
            commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
              command: "python -m",
              module: pythonMatch[1],
              location: location()
            }));
            rawBases.push("python -m");
          } else {
            commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
              command: cmdBase,
              location: location()
            }));
            rawBases.push(cmdBase);
          }
        }
      }
    } catch (e) {
      helpers_default.debug("Shell parsing failed, using simple detection", {
        error: e.message
      });
      if (command.parts && command.parts.length > 0) {
        const firstPart = command.parts[0];
        if (firstPart.type === node_type_default.Text && firstPart.content) {
          const cmdText = firstPart.content.trim();
          commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
            command: cmdText,
            location: firstPart.location
          }));
          rawBases.push(cmdText);
        }
      }
    }
    return {
      type: "command",
      subtype: "shellCommand",
      values: {
        command: command.parts,
        commandBases
      },
      raw: {
        command: command.raw,
        commandBases: rawBases
      },
      meta: {
        ...helpers_default.createCommandMetadata(command.parts),
        commandCount: commandBases.length,
        hasScriptRunner
      }
    };
  }, "peg$f492");
  var peg$f493 = /* @__PURE__ */ __name(function(command, params) {
    helpers_default.debug("ParameterizedCommandCore matched", {
      command,
      params
    });
    const commandBases = [];
    const rawBases = [];
    let hasScriptRunner = false;
    if (command.parts && command.parts.length > 0) {
      const firstPart = command.parts[0];
      if (firstPart.type === node_type_default.Text && firstPart.content) {
        const cmdText = firstPart.content.trim();
        commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdText,
          location: firstPart.location
        }));
        rawBases.push(cmdText);
      }
    }
    return {
      type: "command",
      subtype: "parametrizedCommand",
      values: {
        command: command.parts,
        commandBases,
        ...params ? {
          params: params.values
        } : {}
      },
      raw: {
        command: command.raw,
        commandBases: rawBases,
        ...params ? {
          params: params.raw
        } : {}
      },
      meta: {
        ...helpers_default.createCommandMetadata(command.parts),
        commandCount: commandBases.length,
        hasScriptRunner,
        hasParams: !!params
      }
    };
  }, "peg$f493");
  var peg$f494 = /* @__PURE__ */ __name(function(params) {
    return params;
  }, "peg$f494");
  var peg$f495 = /* @__PURE__ */ __name(function(first, param) {
    return param;
  }, "peg$f495");
  var peg$f496 = /* @__PURE__ */ __name(function(first, rest) {
    const allParams = [
      first,
      ...rest
    ];
    const values = allParams.reduce((acc, param) => {
      acc[param.key] = param.value;
      return acc;
    }, {});
    const raw = allParams.map((param) => `${param.key}=${typeof param.value === "string" ? JSON.stringify(param.value) : param.value}`).join(",");
    return {
      values,
      raw
    };
  }, "peg$f496");
  var peg$f497 = /* @__PURE__ */ __name(function(key, value) {
    return {
      key,
      value
    };
  }, "peg$f497");
  var peg$f498 = /* @__PURE__ */ __name(function(path) {
    helpers_default.debug("PathCore matched path", {
      path
    });
    return {
      type: "path",
      subtype: "filesystemPath",
      values: {
        path: path.values.path || path.values.url
      },
      raw: {
        path: path.raw.path || path.raw.url
      },
      meta: path.meta
    };
  }, "peg$f498");
  var peg$f499 = /* @__PURE__ */ __name(function(path, section) {
    helpers_default.debug("SectionPathCore matched", {
      path,
      section
    });
    return {
      type: "path",
      subtype: "sectionPath",
      values: {
        path: path.values.path || path.values.url,
        section: [
          helpers_default.createNode(node_type_default.Text, {
            content: section,
            location: location()
          })
        ]
      },
      raw: {
        path: path.raw.path || path.raw.url,
        section
      },
      meta: {
        ...path.meta,
        hasSection: true
      }
    };
  }, "peg$f499");
  var peg$f500 = /* @__PURE__ */ __name(function(protocol, rest) {
    const fullUrl = `${protocol}:${rest}`;
    helpers_default.debug("URLPathCore matched", {
      fullUrl
    });
    return {
      type: "path",
      subtype: "urlPath",
      values: {
        url: [
          helpers_default.createNode(node_type_default.Text, {
            content: fullUrl,
            location: location()
          })
        ],
        protocol: [
          helpers_default.createNode(node_type_default.Text, {
            content: protocol,
            location: location()
          })
        ]
      },
      raw: {
        url: fullUrl,
        protocol
      },
      meta: {
        isUrl: true,
        protocol
      }
    };
  }, "peg$f500");
  var peg$f501 = /* @__PURE__ */ __name(function(proto) {
    return proto;
  }, "peg$f501");
  var peg$f502 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f502");
  var peg$f503 = /* @__PURE__ */ __name(function(commandRef) {
    helpers_default.debug("RunExecCore matched unified command reference", {
      commandRef
    });
    let values, raw, meta;
    if (commandRef.type === "ExecInvocation") {
      values = {
        identifier: commandRef.commandRef.identifier,
        args: commandRef.commandRef.args || []
      };
      raw = {
        identifier: commandRef.commandRef.name,
        args: commandRef.commandRef.args ? commandRef.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
      meta = {
        argumentCount: commandRef.commandRef.args ? commandRef.commandRef.args.length : 0
      };
    } else {
      values = {
        identifier: [
          commandRef
        ],
        args: []
      };
      raw = {
        identifier: commandRef.identifier,
        args: []
      };
      meta = {
        argumentCount: 0
      };
    }
    return {
      type: "runExec",
      values,
      raw,
      meta
    };
  }, "peg$f503");
  var peg$f504 = /* @__PURE__ */ __name(function(section, path, rename) {
    const result = {
      section,
      path: path.values.path || path.values.url,
      pathSubtype: path.subtype
    };
    if (rename) {
      result.rename = rename;
    }
    result.meta = {
      hasRename: !!rename,
      pathSubtype: path.subtype
    };
    return result;
  }, "peg$f504");
  var peg$f505 = /* @__PURE__ */ __name(function(template) {
    helpers_default.debug("TemplateCore matched template", {
      template
    });
    template.parts.some((part) => part && part.type === node_type_default.VariableReference);
    const isTemplateContent = template.wrapperType === "doubleBracket" || template.wrapperType === "doubleColon" || template.wrapperType === "tripleColon";
    return {
      type: "template",
      subtype: "standardTemplate",
      values: {
        content: template.parts
      },
      raw: {
        content: template.raw
      },
      meta: {
        ...helpers_default.createTemplateMetadata(template.parts, template.wrapperType),
        wrapperType: template.wrapperType,
        isTemplateContent
      }
    };
  }, "peg$f505");
  var peg$f506 = /* @__PURE__ */ __name(function(template, options2) {
    helpers_default.debug("RichTemplateCore matched rich template", {
      template,
      options: options2
    });
    return {
      type: "template",
      subtype: "richTemplate",
      values: {
        content: template.parts,
        ...options2 ? {
          options: options2
        } : {}
      },
      raw: {
        content: template.raw,
        ...options2 ? {
          options: options2.raw
        } : {}
      },
      meta: {
        ...helpers_default.createTemplateMetadata(template.parts, template.wrapperType),
        hasOptions: !!options2
      }
    };
  }, "peg$f506");
  var peg$f507 = /* @__PURE__ */ __name(function(options2) {
    return options2;
  }, "peg$f507");
  var peg$f508 = /* @__PURE__ */ __name(function(first, option) {
    return option;
  }, "peg$f508");
  var peg$f509 = /* @__PURE__ */ __name(function(first, rest) {
    const allOptions = [
      first,
      ...rest
    ];
    const optionsObj = allOptions.reduce((acc, opt) => {
      acc[opt.key] = opt.value;
      return acc;
    }, {});
    return {
      options: optionsObj,
      raw: allOptions.map((opt) => `${opt.key}=${opt.value}`).join(",")
    };
  }, "peg$f509");
  var peg$f510 = /* @__PURE__ */ __name(function(key, value) {
    return {
      key,
      value
    };
  }, "peg$f510");
  var peg$f511 = /* @__PURE__ */ __name(function(id, meta, params, content, withClause, t) {
    return t;
  }, "peg$f511");
  var peg$f512 = /* @__PURE__ */ __name(function(id, meta, params, content, withClause, trust, ending) {
    helpers_default.debug("SlashExe matched with ExeRHSContent", {
      id,
      params,
      content
    });
    const identifierNode = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id
    }, location());
    const processedParams = params || [];
    if (content.type === "WhenExpression") {
      const values2 = {
        identifier: [
          identifierNode
        ],
        params: processedParams,
        content: [
          content
        ]
      };
      const raw2 = {
        identifier: id,
        params: processedParams.map((p) => p.name),
        content: "when: [...]"
        // Simplified representation
      };
      const metaObj2 = {
        parameterCount: processedParams.length,
        isWhenExpression: true,
        ...helpers_default.createSecurityMeta({
          trust
        }),
        ...meta ? {
          riskLevel: meta
        } : {}
      };
      if (meta) {
        values2.metadata = [
          helpers_default.createNode(node_type_default.Text, {
            content: meta,
            location: location()
          })
        ];
        raw2.metadata = meta;
        metaObj2.metadata = {
          type: meta
        };
      }
      if (withClause) {
        values2.withClause = withClause;
        raw2.withClause = withClause;
        metaObj2.withClause = withClause;
      }
      return helpers_default.createStructuredDirective(directive_kind_default.exe, "exeWhen", values2, raw2, metaObj2, location(), "when");
    }
    if (content.type === "ForExpression") {
      const values2 = {
        identifier: [
          identifierNode
        ],
        params: processedParams,
        content: [
          content
        ]
      };
      const raw2 = {
        identifier: id,
        params: processedParams.map((p) => p.name),
        content: "for ... => ..."
        // Simplified representation
      };
      const metaObj2 = {
        parameterCount: processedParams.length,
        isForExpression: true,
        ...helpers_default.createSecurityMeta({
          trust
        }),
        ...meta ? {
          riskLevel: meta
        } : {}
      };
      if (meta) {
        values2.metadata = [
          helpers_default.createNode(node_type_default.Text, {
            content: meta,
            location: location()
          })
        ];
        raw2.metadata = meta;
        metaObj2.metadata = {
          type: meta
        };
      }
      if (withClause) {
        values2.withClause = withClause;
        raw2.withClause = withClause;
        metaObj2.withClause = withClause;
      }
      return helpers_default.createStructuredDirective(directive_kind_default.exe, "exeFor", values2, raw2, metaObj2, location(), "for");
    }
    const subtype = content.subtype;
    const source = content.source;
    const values = {
      identifier: [
        identifierNode
      ],
      ...subtype !== "environment" ? {
        params: processedParams
      } : {},
      ...content.values
    };
    const raw = {
      identifier: id,
      ...subtype !== "environment" ? {
        params: processedParams.map((p) => p.name)
      } : {},
      ...content.raw
    };
    const metaObj = {
      ...subtype !== "environment" ? {
        parameterCount: processedParams.length
      } : {},
      ...content.meta,
      ...helpers_default.createSecurityMeta({
        trust
      }),
      ...meta ? {
        riskLevel: meta
      } : {}
    };
    if (meta) {
      values.metadata = [
        helpers_default.createNode(node_type_default.Text, {
          content: meta,
          location: location()
        })
      ];
      raw.metadata = meta;
      metaObj.metadata = {
        type: meta
      };
    }
    if (withClause) {
      values.withClause = withClause;
      raw.withClause = withClause;
      metaObj.withClause = withClause;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.exe, subtype, values, raw, metaObj, location(), source);
  }, "peg$f512");
  var peg$f513 = /* @__PURE__ */ __name(function(id, content, withClause, t) {
    return t;
  }, "peg$f513");
  var peg$f514 = /* @__PURE__ */ __name(function(id, content, withClause, trust, ending) {
    if (content.subtype !== "environment") {
      helpers_default.mlldError("Invalid /exe syntax. Variable names must start with '@'. Use: /exe @" + id + " = ...", "@", location());
    }
    helpers_default.debug("SlashExe matched environment declaration (no @)", {
      id,
      content
    });
    const identifierNode = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id
    }, location());
    const values = {
      identifier: [
        identifierNode
      ],
      ...content.values
    };
    const raw = {
      identifier: id,
      ...content.raw
    };
    const metaObj = {
      ...content.meta
    };
    if (withClause) {
      values.withClause = withClause;
      raw.withClause = withClause;
      metaObj.withClause = withClause;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.exe, "environment", values, raw, metaObj, location(), "environment");
  }, "peg$f514");
  var peg$f515 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Invalid /exe syntax. Variable names must start with '@'. Use: /exe @" + id + " = ...", "@", location());
  }, "peg$f515");
  var peg$f516 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Invalid /exe syntax. Expected '=' after parameters. Use: /exe @" + id + "(params) = ...", "=", location());
  }, "peg$f516");
  var peg$f517 = /* @__PURE__ */ __name(function(id) {
    let i = peg$currPos;
    let parenDepth = 1;
    while (i < input.length && parenDepth > 0) {
      if (input[i] === "(") parenDepth++;
      else if (input[i] === ")") parenDepth--;
      else if (input[i] === "\n" && parenDepth > 0) return true;
      i++;
    }
    return parenDepth > 0;
  }, "peg$f517");
  var peg$f518 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Unclosed parameters in /exe directive. Expected ')' to close the parameter list.", ")", location());
  }, "peg$f518");
  var peg$f519 = /* @__PURE__ */ __name(function(id, params) {
    helpers_default.mlldError("Missing value in /exe directive. Expected command, code, template, or reference after '='.", "value", location());
  }, "peg$f519");
  var peg$f520 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Invalid /exe syntax. Examples:\n  /exe @cmd(param) = {echo @param}\n  /exe @greet(name) = `Hello @name!`\n  /exe @calc(x) = js {return @x * 2}\n  /exe @alias() = @otherCommand\n  /exe @msg() = "a string value"', "@", location());
  }, "peg$f520");
  var peg$f521 = /* @__PURE__ */ __name(function(field) {
    return field;
  }, "peg$f521");
  var peg$f522 = /* @__PURE__ */ __name(function(params) {
    return params || [];
  }, "peg$f522");
  var peg$f523 = /* @__PURE__ */ __name(function(first, param) {
    return param;
  }, "peg$f523");
  var peg$f524 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f524");
  var peg$f525 = /* @__PURE__ */ __name(function(paramName) {
    return helpers_default.createNode(node_type_default.Parameter, {
      name: paramName,
      location: location()
    });
  }, "peg$f525");
  var peg$f526 = /* @__PURE__ */ __name(function() {
    return {
      type: "test",
      message: "Simple for matched!"
    };
  }, "peg$f526");
  var peg$f527 = /* @__PURE__ */ __name(function(pattern, action, ending) {
    helpers_default.debug("SlashFor matched", {
      pattern,
      action,
      ending
    });
    const meta = {
      hasVariables: true,
      actionType: "single"
    };
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective("for", "for", {
      variable: [
        pattern.variable
      ],
      source: pattern.source,
      action: Array.isArray(action) ? action : [
        action
      ]
    }, {
      variable: pattern.variable.identifier,
      source: helpers_default.reconstructRawString(pattern.source),
      action: helpers_default.reconstructRawString(action)
    }, meta, location());
  }, "peg$f527");
  var peg$f528 = /* @__PURE__ */ __name(function(pattern) {
    helpers_default.mlldError("Missing '=>' in /for directive. Expected: /for @var in @collection => action", "=>", location());
  }, "peg$f528");
  var peg$f529 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Missing 'in' in /for directive. Expected: /for @var in @collection => action", "in", location());
  }, "peg$f529");
  var peg$f530 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /for syntax. Expected: /for @var in @collection => action", "@", location());
  }, "peg$f530");
  var peg$f531 = /* @__PURE__ */ __name(function() {
    let depth = 1;
    let i = peg$currPos;
    while (i < input.length && depth > 0) {
      if (input[i] === "{") depth++;
      else if (input[i] === "}") depth--;
      else if (input[i] === "\n" && depth > 0) return true;
      i++;
    }
    return depth > 0;
  }, "peg$f531");
  var peg$f532 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed import list in /import directive. Expected closing brace for import list.", String.fromCharCode(125), location());
  }, "peg$f532");
  var peg$f533 = /* @__PURE__ */ __name(function() {
    return helpers_default.isMissingFromKeyword(input, peg$currPos);
  }, "peg$f533");
  var peg$f534 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Missing 'from' keyword in /import directive. Expected: /import { items } from "path"`, "from", location());
  }, "peg$f534");
  var peg$f535 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing path in /import directive. Expected a path after 'from' keyword.", "path", location());
  }, "peg$f535");
  var peg$f536 = /* @__PURE__ */ __name(function() {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, '"');
  }, "peg$f536");
  var peg$f537 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Unclosed quoted path in /import directive. Expected closing double quote (").', '"', location());
  }, "peg$f537");
  var peg$f538 = /* @__PURE__ */ __name(function() {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, "'");
  }, "peg$f538");
  var peg$f539 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed quoted path in /import directive. Expected closing single quote.", "'", location());
  }, "peg$f539");
  var peg$f540 = /* @__PURE__ */ __name(function() {
    return helpers_default.isUnclosedArray(input, peg$currPos);
  }, "peg$f540");
  var peg$f541 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed path bracket in /import directive. Expected closing bracket for path.", "]", location());
  }, "peg$f541");
  var peg$f542 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Wildcard imports must have an alias. Use: /import { * as name } from "path"', "as", location());
  }, "peg$f542");
  var peg$f543 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing content in /import directive. Expected import list or path.", String.fromCharCode(123), location());
  }, "peg$f543");
  var peg$f544 = /* @__PURE__ */ __name(function() {
    input[peg$currPos];
    const rest = input.substring(peg$currPos);
    const validStarts = [
      "INPUT",
      "TIME",
      "stdin"
    ];
    const isValidSpecial = validStarts.some((s) => rest.toUpperCase().startsWith(s.toUpperCase()));
    const isValidModule = /^[a-zA-Z_][a-zA-Z0-9_-]*\//.test(rest);
    return !isValidSpecial && !isValidModule;
  }, "peg$f544");
  var peg$f545 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid import source. Expected @INPUT, @TIME, module reference (@author/module), or configured resolver path", "INPUT", location());
  }, "peg$f545");
  var peg$f546 = /* @__PURE__ */ __name(function() {
    return helpers_default.isUnclosedArray(input, peg$currPos);
  }, "peg$f546");
  var peg$f547 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed path bracket in /import shorthand. Expected closing bracket.", "]", location());
  }, "peg$f547");
  var peg$f548 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Invalid /import syntax. Expected: /import "path", /import @module, or /import { items } from "path"', '"', location());
  }, "peg$f548");
  var peg$f549 = /* @__PURE__ */ __name(function(path, name) {
    return name;
  }, "peg$f549");
  var peg$f550 = /* @__PURE__ */ __name(function(path, alias, ttl, tail, comment) {
    helpers_default.debug("SlashImportShorthand matched", {
      path,
      alias,
      ttl,
      tail
    });
    let namespace = alias;
    if (!namespace) {
      const pathStr = path.raw?.path || path.raw?.module || "";
      if (pathStr.startsWith("@") && pathStr.includes("/")) {
        const parts = pathStr.split("/");
        namespace = parts[parts.length - 1].split("@")[0];
      } else if (pathStr.includes("/")) {
        const basename = pathStr.split("/").pop() || "";
        namespace = basename.replace(/\.(mlld|mld|md|json)$/, "").replace(/[^a-zA-Z0-9_]/g, "_");
      } else {
        namespace = pathStr.replace(/\.(mlld|mld|md|json)$/, "").replace(/[^a-zA-Z0-9_]/g, "_");
      }
    }
    const values = {
      namespace: [
        helpers_default.createNode(node_type_default.Text, {
          content: namespace,
          location: location()
        })
      ],
      path: path.values?.path || path.values?.module || (typeof path === "string" ? [
        helpers_default.createNode(node_type_default.Text, {
          content: path,
          location: location()
        })
      ] : path)
    };
    if (ttl) {
      values.ttl = ttl[1];
    }
    if (tail) {
      values.withClause = tail;
    }
    const raw = {
      namespace,
      path: path.raw?.path || path.raw?.module || path
      // Handle string paths like @input
    };
    const meta = {
      path: path.meta || {}
    };
    return helpers_default.createStructuredDirective("import", "importNamespace", values, raw, meta, location(), "path");
  }, "peg$f550");
  var peg$f551 = /* @__PURE__ */ __name(function(imports, path, ttl, tail, comment) {
    helpers_default.debug("SlashImport matched", {
      imports,
      path,
      ttl,
      tail
    });
    const importsRaw = imports.map((item) => {
      if (typeof item === "string") {
        return item;
      } else if (item.original) {
        return `${item.original} as ${item.alias}`;
      } else {
        return item.name;
      }
    }).join(", ");
    let subtype;
    if (imports.length === 1) {
      if (imports[0] === "*") {
        subtype = "importAll";
      } else if (typeof imports[0] === "object" && imports[0].original === "*" && imports[0].alias) {
        subtype = "importNamespace";
      } else {
        subtype = "importSelected";
      }
    } else {
      subtype = "importSelected";
    }
    const values = {
      imports: imports.map((item) => {
        if (typeof item === "string") {
          return helpers_default.createVariableReferenceNode("import", {
            identifier: item
          }, location());
        } else if (item.original) {
          return helpers_default.createVariableReferenceNode("import", {
            identifier: item.original,
            alias: item.alias
          }, item.location || location());
        } else {
          return helpers_default.createVariableReferenceNode("import", {
            identifier: item.name
          }, item.location || location());
        }
      }),
      path: path.values?.path || path.values?.module || path.values?.url || (typeof path === "string" ? [
        helpers_default.createNode(node_type_default.Text, {
          content: path,
          location: location()
        })
      ] : path)
    };
    if (ttl) {
      values.ttl = ttl[1];
    }
    if (tail) {
      values.withClause = tail;
    }
    const raw = {
      imports: importsRaw,
      path: path.raw?.path || path.raw?.module || path.raw?.url || path
      // Handle file, module, and URL paths
    };
    const meta = {
      path: path.meta || {
        isSpecial: typeof path === "string",
        pathSubtype: path.subtype
      }
    };
    return helpers_default.createStructuredDirective(
      "import",
      subtype,
      values,
      raw,
      meta,
      location(),
      "path"
      // Source parameter
    );
  }, "peg$f551");
  var peg$f552 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ImportPath matched @INPUT");
    const matched = text();
    return {
      type: "path",
      subtype: "inputPath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: matched,
            location: location()
          })
        ]
      },
      raw: {
        path: matched
      },
      meta: {
        isSpecial: true,
        source: "stdin"
        // Keep as 'stdin' internally for compatibility
      }
    };
  }, "peg$f552");
  var peg$f553 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ImportPath matched @NOW");
    const matched = text();
    return {
      type: "path",
      subtype: "nowPath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: matched,
            location: location()
          })
        ]
      },
      raw: {
        path: matched
      },
      meta: {
        isSpecial: true,
        source: "now"
      }
    };
  }, "peg$f553");
  var peg$f554 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ImportPath matched @TIME");
    const matched = text();
    return {
      type: "path",
      subtype: "timePath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: matched,
            location: location()
          })
        ]
      },
      raw: {
        path: matched
      },
      meta: {
        isSpecial: true,
        source: "time"
      }
    };
  }, "peg$f554");
  var peg$f555 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ImportPath matched @stdin (deprecated)");
    return {
      type: "path",
      subtype: "inputPath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: "@stdin",
            location: location()
          })
        ]
      },
      raw: {
        path: "@stdin"
      },
      meta: {
        isSpecial: true,
        source: "stdin",
        deprecated: true
      }
    };
  }, "peg$f555");
  var peg$f556 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("ImportAlligatorAdapter processing AlligatorExpression", {
      content
    });
    if (content.options && content.options.section) {
      helpers_default.mlldError("Section extraction is not supported in import paths. Use: /import { items } from <path>", ">", location());
    }
    if (content.source.type === "path") {
      return {
        type: "path",
        subtype: "filePath",
        values: {
          path: content.source.segments
        },
        raw: {
          path: content.source.raw
        },
        meta: content.source.meta
      };
    } else if (content.source.type === "url") {
      helpers_default.mlldError("URL imports are not yet supported. Use: /import { items } from <local-file>", ">", location());
    }
    helpers_default.mlldError("Invalid alligator content in import path", ">", location());
  }, "peg$f556");
  var peg$f557 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("QuotedPath matched with interpolation", {
      content
    });
    const rawPath = helpers_default.reconstructRawString(content);
    return {
      type: "path",
      subtype: "filePath",
      values: {
        path: content
      },
      raw: {
        path: rawPath
      },
      meta: helpers_default.createPathMetadata(rawPath, content)
    };
  }, "peg$f557");
  var peg$f558 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("QuotedPath matched single quotes (literal)", {
      content
    });
    return {
      type: "path",
      subtype: "filePath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content,
            location: location()
          })
        ]
      },
      raw: {
        path: content
      },
      meta: helpers_default.createPathMetadata(content, [
        helpers_default.createNode(node_type_default.Text, {
          content,
          location: location()
        })
      ])
    };
  }, "peg$f558");
  var peg$f559 = /* @__PURE__ */ __name(function(id) {
    const rawModule = `@${id.namespace}${id.path.length > 0 ? "/" + id.path.join("/") : ""}/${id.name}${id.hash ? "@" + id.hash : ""}`;
    return {
      type: "module",
      subtype: "moduleReference",
      values: {
        module: [
          helpers_default.createNode(node_type_default.Text, {
            content: rawModule,
            location: location()
          })
        ]
      },
      raw: {
        module: rawModule
      },
      meta: {
        isModule: true,
        namespace: id.namespace,
        path: id.path,
        name: id.name,
        ...id.hash ? {
          hash: id.hash
        } : {}
      }
    };
  }, "peg$f559");
  var peg$f560 = /* @__PURE__ */ __name(function(namespace, pathAndName, h) {
    return h;
  }, "peg$f560");
  var peg$f561 = /* @__PURE__ */ __name(function(namespace, pathAndName, hash) {
    return {
      namespace,
      path: pathAndName.path,
      name: pathAndName.name,
      ...hash ? {
        hash
      } : {}
    };
  }, "peg$f561");
  var peg$f562 = /* @__PURE__ */ __name(function(segment) {
    return segment;
  }, "peg$f562");
  var peg$f563 = /* @__PURE__ */ __name(function(segments, name) {
    return {
      path: segments,
      name
    };
  }, "peg$f563");
  var peg$f564 = /* @__PURE__ */ __name(function(first, rest) {
    return first + rest.join("");
  }, "peg$f564");
  var peg$f565 = /* @__PURE__ */ __name(function(chars) {
    return chars.length >= 4;
  }, "peg$f565");
  var peg$f566 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f566");
  var peg$f567 = /* @__PURE__ */ __name(function(aliasName) {
    return [
      {
        original: "*",
        alias: aliasName
      }
    ];
  }, "peg$f567");
  var peg$f568 = /* @__PURE__ */ __name(function() {
    return input[peg$currPos] === String.fromCharCode(125);
  }, "peg$f568");
  var peg$f569 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Wildcard imports must have an alias. Use '/import { * as name }' or the shorthand '/import "path/to/file.mld" as name'`, "as", location());
  }, "peg$f569");
  var peg$f570 = /* @__PURE__ */ __name(function(first, item) {
    return item;
  }, "peg$f570");
  var peg$f571 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f571");
  var peg$f572 = /* @__PURE__ */ __name(function() {
    return [];
  }, "peg$f572");
  var peg$f573 = /* @__PURE__ */ __name(function(name, aliasName) {
    return aliasName;
  }, "peg$f573");
  var peg$f574 = /* @__PURE__ */ __name(function(name, alias) {
    if (alias) {
      return {
        original: name,
        alias,
        location: location()
      };
    }
    return {
      name,
      location: location()
    };
  }, "peg$f574");
  var peg$f575 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f575");
  var peg$f576 = /* @__PURE__ */ __name(function(special, path) {
    helpers_default.debug("SpecialVariablePath matched", {
      special,
      path
    });
    const pathParts = [
      special,
      ...path
    ];
    const rawPath = (special.values?.originalForm || "@" + special.values?.identifier) + helpers_default.reconstructRawString(path);
    return {
      type: "path",
      subtype: "specialPath",
      values: {
        path: pathParts
      },
      raw: {
        path: rawPath
      },
      meta: {
        isSpecial: true,
        variable: special.values?.identifier,
        originalForm: special.values?.originalForm
      }
    };
  }, "peg$f576");
  var peg$f577 = /* @__PURE__ */ __name(function(path) {
    helpers_default.debug("SlashOutput quoted path without source matched", {
      path
    });
    const values = {
      target: {
        type: "file",
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: path,
            location: location()
          })
        ],
        raw: `"${path}"`,
        meta: {
          quoted: true
        }
      }
    };
    const raw = {
      target: `"${path}"`
    };
    const meta = {
      targetType: "file",
      hasSource: false,
      legacy: true
    };
    return helpers_default.createStructuredDirective("output", "outputDocument", values, raw, meta, location());
  }, "peg$f577");
  var peg$f578 = /* @__PURE__ */ __name(function(source, target, f) {
    return f;
  }, "peg$f578");
  var peg$f579 = /* @__PURE__ */ __name(function(source, target, format) {
    helpers_default.debug("SlashOutput enhanced syntax matched", {
      source,
      target,
      format
    });
    const values = {
      source: source.values,
      target
    };
    const raw = {
      source: source.raw,
      target: target.raw
    };
    const meta = {
      sourceType: source.type,
      targetType: target.type,
      hasSource: true,
      ...format ? {
        format,
        explicitFormat: true
      } : {}
    };
    let subtype = "outputFile";
    if (target.type === "stream") {
      subtype = "outputStream";
    } else if (target.type === "env") {
      subtype = "outputEnv";
    } else if (target.type === "resolver") {
      subtype = "outputResolver";
    }
    return helpers_default.createStructuredDirective("output", subtype, values, raw, meta, location());
  }, "peg$f579");
  var peg$f580 = /* @__PURE__ */ __name(function(source, path) {
    helpers_default.debug("SlashOutput quoted path with source matched", {
      source,
      path
    });
    const values = {
      source: source.values,
      target: {
        type: "file",
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: path,
            location: location()
          })
        ],
        raw: `"${path}"`,
        meta: {
          quoted: true
        }
      }
    };
    const raw = {
      source: source.raw,
      target: `"${path}"`
    };
    const meta = {
      sourceType: source.type,
      targetType: "file",
      hasSource: true,
      quoted: true
    };
    return helpers_default.createStructuredDirective("output", "outputFile", values, raw, meta, location());
  }, "peg$f580");
  var peg$f581 = /* @__PURE__ */ __name(function(target, f) {
    return f;
  }, "peg$f581");
  var peg$f582 = /* @__PURE__ */ __name(function(target, format) {
    helpers_default.debug("SlashOutput enhanced syntax without source matched", {
      target,
      format
    });
    const values = {
      target
    };
    const raw = {
      target: target.raw
    };
    const meta = {
      targetType: target.type,
      hasSource: false,
      ...format ? {
        format,
        explicitFormat: true
      } : {}
    };
    let subtype = "outputDocument";
    if (target.type !== "file") {
      subtype = "output" + target.type.charAt(0).toUpperCase() + target.type.slice(1);
    }
    return helpers_default.createStructuredDirective("output", subtype, values, raw, meta, location());
  }, "peg$f582");
  var peg$f583 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos).trim();
    return rest.startsWith("stdout") || rest.startsWith("stderr") || rest.startsWith("env") || rest.startsWith("@");
  }, "peg$f583");
  var peg$f584 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Missing 'to' keyword in /output directive. Expected: /output @variable to "path"`, "to", location());
  }, "peg$f584");
  var peg$f585 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing target in /output directive. Expected path, stdout, stderr, or env after 'to'.", "path", location());
  }, "peg$f585");
  var peg$f586 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing target in /output directive. Expected path, stdout, stderr, or env after 'to'.", "path", location());
  }, "peg$f586");
  var peg$f587 = /* @__PURE__ */ __name(function() {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, '"');
  }, "peg$f587");
  var peg$f588 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Unclosed quoted path in /output directive. Expected closing double quote (").', '"', location());
  }, "peg$f588");
  var peg$f589 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing format in /output directive. Expected format type after 'as' (e.g., json, xml, csv).", "format", location());
  }, "peg$f589");
  var peg$f590 = /* @__PURE__ */ __name(function() {
    const nextChar = input[peg$currPos];
    return !/[a-zA-Z_]/.test(nextChar);
  }, "peg$f590");
  var peg$f591 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid variable reference in /output directive. Variable names must start with a letter or underscore.", "identifier", location());
  }, "peg$f591");
  var peg$f592 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing content in /output directive. Expected source or target specification.", "@", location());
  }, "peg$f592");
  var peg$f593 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos).trim();
    return rest.length === 0 || /[^A-Z0-9_]/.test(rest[0]);
  }, "peg$f593");
  var peg$f594 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid environment variable name in /output directive. Expected: env:VARIABLE_NAME", "VARIABLE_NAME", location());
  }, "peg$f594");
  var peg$f595 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Invalid /output syntax. Expected: /output @variable to "path", /output "path", or /output @variable to stdout/stderr/env. Note: String literals cannot be used as output sources. To output text content, first assign it to a variable: /var @content = "your text", then use: /output @content to "file.txt"', "@", location());
  }, "peg$f595");
  var peg$f596 = /* @__PURE__ */ __name(function(args) {
    return args || [];
  }, "peg$f596");
  var peg$f597 = /* @__PURE__ */ __name(function(first, arg) {
    return arg;
  }, "peg$f597");
  var peg$f598 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f598");
  var peg$f599 = /* @__PURE__ */ __name(function(str) {
    return helpers_default.createNode(node_type_default.Text, {
      content: str,
      location: location()
    });
  }, "peg$f599");
  var peg$f600 = /* @__PURE__ */ __name(function(varRef) {
    return varRef;
  }, "peg$f600");
  var peg$f601 = /* @__PURE__ */ __name(function(val) {
    return helpers_default.createNode(node_type_default.Text, {
      content: val.trim(),
      location: location()
    });
  }, "peg$f601");
  var peg$f602 = /* @__PURE__ */ __name(function(id, content, ttl, tail, comment) {
    helpers_default.debug("SlashPath matched double quoted string with interpolation", {
      id,
      content,
      ttl,
      tail
    });
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    content.some((part) => part && part.type === node_type_default.VariableReference);
    const values = {
      identifier: [
        idNode
      ],
      path: content
    };
    if (ttl) {
      values.ttl = ttl[1];
    }
    if (tail) {
      values.withClause = tail;
    }
    return helpers_default.createStructuredDirective("path", "pathAssignment", values, {}, {
      path: helpers_default.createPathMetadata(helpers_default.reconstructRawString(content), content)
    }, location(), "path");
  }, "peg$f602");
  var peg$f603 = /* @__PURE__ */ __name(function(id, content, ttl, tail, comment) {
    helpers_default.debug("SlashPath matched single quoted string (literal)", {
      id,
      content,
      ttl,
      tail
    });
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    const pathParts = [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
    const values = {
      identifier: [
        idNode
      ],
      path: pathParts
    };
    if (ttl) {
      values.ttl = ttl[1];
    }
    if (tail) {
      values.withClause = tail;
    }
    return helpers_default.createStructuredDirective("path", "pathAssignment", values, {}, {
      path: helpers_default.createPathMetadata(content, pathParts)
    }, location(), "path");
  }, "peg$f603");
  var peg$f604 = /* @__PURE__ */ __name(function(id, path, ttl, tail, comment) {
    helpers_default.debug("SlashPath matched normal path", {
      id,
      path,
      ttl,
      tail
    });
    let processedPath = path.raw.path || path.raw.url;
    if (processedPath.includes("@.")) {
      processedPath = processedPath.replace(/@\./g, "@PROJECTPATH");
    }
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    const processedPathParts = [
      ...path.values.path || path.values.parts || []
    ];
    for (let i = 0; i < processedPathParts.length; i++) {
      const part = processedPathParts[i];
      if (part.type === node_type_default.VariableReference && part.identifier === ".") {
        const newNode = {
          ...part
        };
        newNode.identifier = "PROJECTPATH";
        processedPathParts[i] = newNode;
      }
    }
    const values = {
      identifier: [
        idNode
      ],
      path: processedPathParts
    };
    if (ttl) {
      values.ttl = ttl[1];
    }
    if (tail) {
      values.withClause = tail;
    }
    return helpers_default.createStructuredDirective(
      "path",
      "pathAssignment",
      values,
      {},
      {
        path: {
          ...path.meta,
          pathSubtype: path.subtype
          // Preserve the specific path type
        }
      },
      location(),
      "path"
      // Source parameter
    );
  }, "peg$f604");
  var peg$f605 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f605");
  var peg$f606 = /* @__PURE__ */ __name(function() {
    return text();
  }, "peg$f606");
  var peg$f607 = /* @__PURE__ */ __name(function(security, command, tail, comment) {
    const securityOptions = security ? security[0] : null;
    helpers_default.debug("SlashRun matched quoted command", {
      command,
      securityOptions,
      tail
    });
    const commandLocation = location();
    const parts = helpers_default.parseCommandContent(command, commandLocation);
    let commandBases = [];
    let rawBases = [];
    if (parts.length > 0 && parts[0].type === node_type_default.Text) {
      const cmdMatch = parts[0].content.match(/^(\S+)/);
      if (cmdMatch) {
        commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdMatch[1],
          location: location()
        }));
        rawBases.push(cmdMatch[1]);
      }
    }
    const meta = {
      isMultiLine: false,
      commandCount: commandBases.length,
      hasScriptRunner: false,
      ...helpers_default.createSecurityMeta(securityOptions),
      ...comment ? {
        comment
      } : {}
    };
    const values = {
      command: parts,
      commandBases
    };
    const raw = {
      command,
      commandBases: rawBases
    };
    if (tail) {
      values.withClause = tail;
      raw.withClause = tail;
      meta.withClause = tail;
    }
    return helpers_default.createStructuredDirective("run", "runCommand", values, raw, meta, location(), "command");
  }, "peg$f607");
  var peg$f608 = /* @__PURE__ */ __name(function(security, content, tail, comment) {
    const securityOptions = security ? security[0] : null;
    helpers_default.debug("SlashRun matched command", {
      content,
      securityOptions,
      tail
    });
    const meta = {
      ...content.meta,
      ...helpers_default.createSecurityMeta(securityOptions),
      ...comment ? {
        comment
      } : {}
    };
    const values = content.values;
    const raw = content.raw;
    if (tail) {
      values.withClause = tail;
      raw.withClause = tail;
      meta.withClause = tail;
    }
    return helpers_default.createStructuredDirective("run", content.subtype, values, raw, meta, location(), content.type);
  }, "peg$f608");
  var peg$f609 = /* @__PURE__ */ __name(function(security, codeCore, tail, comment) {
    const securityOptions = security ? security[0] : null;
    helpers_default.debug("SlashRun matched with language code pattern", {
      codeCore,
      securityOptions,
      tail
    });
    const values = codeCore.values;
    const raw = codeCore.raw;
    const meta = {
      ...codeCore.meta,
      ...helpers_default.createSecurityMeta(securityOptions),
      ...comment ? {
        comment
      } : {}
    };
    if (tail) {
      values.withClause = tail;
      raw.withClause = tail;
      meta.withClause = tail;
    }
    return helpers_default.createStructuredDirective("run", "runCode", values, raw, meta, location(), "code");
  }, "peg$f609");
  var peg$f610 = /* @__PURE__ */ __name(function(security, commandRef, comment) {
    const securityOptions = security ? security[0] : null;
    helpers_default.debug("SlashRun matched unified command reference", {
      commandRef,
      securityOptions
    });
    let values, raw, meta;
    if (commandRef.type === "ExecInvocation") {
      values = {
        identifier: commandRef.commandRef.identifier,
        args: commandRef.commandRef.args || []
      };
      let rawIdentifier = commandRef.commandRef.name;
      if (commandRef.commandRef.identifier && commandRef.commandRef.identifier.length > 0) {
        const varRef = commandRef.commandRef.identifier[0];
        if (varRef.type === node_type_default.VariableReference) {
          rawIdentifier = varRef.identifier;
          if (varRef.fields && varRef.fields.length > 0) {
            rawIdentifier += varRef.fields.map((f) => "." + f.value).join("");
          }
        }
      }
      raw = {
        identifier: rawIdentifier,
        args: commandRef.commandRef.args ? commandRef.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
      meta = {
        argumentCount: commandRef.commandRef.args ? commandRef.commandRef.args.length : 0,
        ...helpers_default.createSecurityMeta(securityOptions),
        ...comment ? {
          comment
        } : {}
      };
      if (commandRef.withClause) {
        values.withClause = commandRef.withClause;
        raw.withClause = commandRef.withClause;
        meta.withClause = commandRef.withClause;
      }
    } else if (commandRef.type === "VariableReferenceWithTail") {
      values = {
        identifier: [
          commandRef.variable
        ],
        args: []
      };
      raw = {
        identifier: commandRef.variable.identifier,
        args: []
      };
      meta = {
        argumentCount: 0,
        ...helpers_default.createSecurityMeta(securityOptions),
        ...comment ? {
          comment
        } : {}
      };
      if (commandRef.withClause) {
        values.withClause = commandRef.withClause;
        raw.withClause = commandRef.withClause;
        meta.withClause = commandRef.withClause;
      }
    } else {
      values = {
        identifier: [
          commandRef
        ],
        args: []
      };
      raw = {
        identifier: commandRef.identifier,
        args: []
      };
      meta = {
        argumentCount: 0,
        ...helpers_default.createSecurityMeta(securityOptions),
        ...comment ? {
          comment
        } : {}
      };
    }
    return helpers_default.createStructuredDirective("run", "runExec", values, raw, meta, location(), "exec");
  }, "peg$f610");
  var peg$f611 = /* @__PURE__ */ __name(function() {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, '"');
  }, "peg$f611");
  var peg$f612 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Unclosed quoted command in /run directive. Expected closing double quote (").', '"', location());
  }, "peg$f612");
  var peg$f613 = /* @__PURE__ */ __name(function() {
    return helpers_default.isUnclosedObject(input, peg$currPos);
  }, "peg$f613");
  var peg$f614 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed command brackets in /run directive. Expected closing brace for command.", String.fromCharCode(125), location());
  }, "peg$f614");
  var peg$f615 = /* @__PURE__ */ __name(function(lang) {
    const validLangs = [
      "js",
      "javascript",
      "node",
      "python",
      "py",
      "bash",
      "sh"
    ];
    return validLangs.includes(lang.toLowerCase());
  }, "peg$f615");
  var peg$f616 = /* @__PURE__ */ __name(function(lang) {
    helpers_default.mlldError("Invalid code syntax in /run directive. Expected code block or arguments after language identifier: " + lang, String.fromCharCode(123), location());
  }, "peg$f616");
  var peg$f617 = /* @__PURE__ */ __name(function(lang) {
    const validLangs = [
      "js",
      "javascript",
      "node",
      "python",
      "py",
      "bash",
      "sh"
    ];
    return validLangs.includes(lang.toLowerCase());
  }, "peg$f617");
  var peg$f618 = /* @__PURE__ */ __name(function(lang) {
    helpers_default.mlldError("Missing code block in /run directive. Expected code block after language: " + lang, String.fromCharCode(123), location());
  }, "peg$f618");
  var peg$f619 = /* @__PURE__ */ __name(function() {
    const nextChar = input[peg$currPos];
    return !/[a-zA-Z_]/.test(nextChar);
  }, "peg$f619");
  var peg$f620 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid exec reference in /run directive. Variable names must start with a letter or underscore.", "identifier", location());
  }, "peg$f620");
  var peg$f621 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing content in /run directive. Expected command, code block, or exec reference.", String.fromCharCode(123), location());
  }, "peg$f621");
  var peg$f622 = /* @__PURE__ */ __name(function(lang) {
    return helpers_default.isUnclosedObject(input, peg$currPos);
  }, "peg$f622");
  var peg$f623 = /* @__PURE__ */ __name(function(lang) {
    helpers_default.mlldError("Unclosed code block in /run directive. Expected closing brace for " + lang + " code.", String.fromCharCode(125), location());
  }, "peg$f623");
  var peg$f624 = /* @__PURE__ */ __name(function(lang) {
    return helpers_default.isUnclosedObject(input, peg$currPos);
  }, "peg$f624");
  var peg$f625 = /* @__PURE__ */ __name(function(lang) {
    helpers_default.mlldError("Unclosed code block in /run directive. Expected closing brace for " + lang + " code.", String.fromCharCode(125), location());
  }, "peg$f625");
  var peg$f626 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Invalid /run syntax. Expected: /run "command", /run {command}, /run language {code}, or /run @exec', String.fromCharCode(123));
  }, "peg$f626");
  var peg$f627 = /* @__PURE__ */ __name(function(codeCore) {
    helpers_default.debug("RunDirectiveRef matched language + code in RHS", {
      codeCore
    });
    const values = codeCore.values;
    const raw = codeCore.raw;
    const meta = {
      ...codeCore.meta,
      isRHSRef: true
    };
    return helpers_default.createStructuredDirective("run", "runCode", values, raw, meta, location(), "code");
  }, "peg$f627");
  var peg$f628 = /* @__PURE__ */ __name(function(commandRef) {
    helpers_default.debug("RunDirectiveRef matched unified exec reference in RHS", {
      commandRef
    });
    let values, raw, meta;
    if (commandRef.type === "ExecInvocation") {
      values = {
        identifier: commandRef.commandRef.identifier,
        args: commandRef.commandRef.args || []
      };
      let rawIdentifier = commandRef.commandRef.name;
      if (commandRef.commandRef.identifier && commandRef.commandRef.identifier.length > 0) {
        const varRef = commandRef.commandRef.identifier[0];
        if (varRef.type === node_type_default.VariableReference) {
          rawIdentifier = varRef.identifier;
          if (varRef.fields && varRef.fields.length > 0) {
            rawIdentifier += varRef.fields.map((f) => "." + f.value).join("");
          }
        }
      }
      raw = {
        identifier: rawIdentifier,
        args: commandRef.commandRef.args ? commandRef.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
      meta = {
        argumentCount: commandRef.commandRef.args ? commandRef.commandRef.args.length : 0,
        isRHSRef: true
      };
    } else {
      values = {
        identifier: [
          commandRef
        ],
        args: []
      };
      raw = {
        identifier: commandRef.identifier,
        args: []
      };
      meta = {
        argumentCount: 0,
        isRHSRef: true
      };
    }
    return helpers_default.createStructuredDirective("run", "runExec", values, raw, meta, location(), "exec");
  }, "peg$f628");
  var peg$f629 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("RunDirectiveRef matched command in RHS", {
      content
    });
    return helpers_default.createStructuredDirective("run", content.subtype, content.values, content.raw, {
      ...content.meta,
      isRHSRef: true
    }, location());
  }, "peg$f629");
  var peg$f630 = /* @__PURE__ */ __name(function(args) {
    return args || [];
  }, "peg$f630");
  var peg$f631 = /* @__PURE__ */ __name(function(first, arg) {
    return arg;
  }, "peg$f631");
  var peg$f632 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f632");
  var peg$f633 = /* @__PURE__ */ __name(function(str) {
    return helpers_default.createNode(node_type_default.Text, {
      content: str,
      location: location()
    });
  }, "peg$f633");
  var peg$f634 = /* @__PURE__ */ __name(function(varRef) {
    return varRef;
  }, "peg$f634");
  var peg$f635 = /* @__PURE__ */ __name(function(varRef) {
    return varRef;
  }, "peg$f635");
  var peg$f636 = /* @__PURE__ */ __name(function(val) {
    return helpers_default.createNode(node_type_default.Text, {
      content: val.trim(),
      location: location()
    });
  }, "peg$f636");
  var peg$f637 = /* @__PURE__ */ __name(function(expr, ending) {
    helpers_default.debug("SlashShow matched foreach expression", {
      expr,
      ending
    });
    const foreachValue = expr.value;
    const values = {
      foreach: foreachValue
    };
    if (foreachValue.with) {
      values.withClause = foreachValue.with;
    }
    let rawString = "foreach ";
    if (foreachValue.execInvocation.type === "ExecInvocation") {
      rawString += `@${foreachValue.execInvocation.commandRef.name}(...)`;
    } else {
      rawString += `@${foreachValue.execInvocation.identifier || "unknown"}(...)`;
    }
    const raw = {
      foreach: rawString
    };
    if (foreachValue.with) {
      raw.withClause = "with { ... }";
    }
    const meta = {
      isForeach: true,
      hasExecInvocation: true
    };
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.show, "showForeach", values, raw, meta, location(), "foreach");
  }, "peg$f637");
  var peg$f638 = /* @__PURE__ */ __name(function(content) {
    return content.type === "doubleBracketSection";
  }, "peg$f638");
  var peg$f639 = /* @__PURE__ */ __name(function(content, rename, ending) {
    helpers_default.debug("SlashShow matched double-bracketed path section", {
      content,
      rename,
      ending
    });
    const rawPath = content.raw.split(" # ")[0];
    const sectionText = content.section;
    const values = {
      sectionTitle: content.sectionNodes || [
        helpers_default.createNode(node_type_default.Text, {
          content: sectionText,
          location: location()
        })
      ],
      path: content.parts
    };
    if (rename) {
      values.newTitle = rename;
    }
    const raw = {
      sectionTitle: sectionText,
      path: rawPath
    };
    if (rename) {
      raw.newTitle = rename[0].content;
    }
    const meta = {
      path: helpers_default.createPathMetadata(rawPath, content.parts)
    };
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective(
      directive_kind_default.show,
      "showPathSection",
      values,
      raw,
      meta,
      location(),
      "section"
      // Added source parameter
    );
  }, "peg$f639");
  var peg$f640 = /* @__PURE__ */ __name(function(content, rename, ending) {
    helpers_default.debug("SlashShow matched load content expression", {
      content,
      rename,
      ending
    });
    const values = {
      loadContent: content
    };
    if (rename) {
      values.newTitle = rename;
    }
    const raw = {
      loadContent: text()
    };
    if (rename) {
      raw.newTitle = rename[0].content;
    }
    const meta = {
      hasSection: content.options && content.options.section,
      sourceType: content.source.type
    };
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.show, "showLoadContent", values, raw, meta, location(), "load-content");
  }, "peg$f640");
  var peg$f641 = /* @__PURE__ */ __name(function(security, template, headerLevel, underHeader, ending) {
    const securityOptions = security ? security[0] : null;
    helpers_default.debug("SlashShow matched template content", {
      template,
      headerLevel,
      underHeader,
      ending
    });
    const headerLevelValue = headerLevel ? headerLevel : null;
    const underHeaderValue = underHeader ? underHeader : null;
    const values = {
      content: template.values.content
    };
    if (headerLevelValue) {
      values.headerLevel = [
        helpers_default.createNode(node_type_default.Number, {
          value: headerLevelValue.value,
          raw: headerLevelValue.raw,
          location: location()
        })
      ];
    }
    if (underHeaderValue) {
      values.underHeader = [
        helpers_default.createNode(node_type_default.Text, {
          content: underHeaderValue,
          raw: underHeaderValue,
          location: location()
        })
      ];
    }
    const raw = {
      content: template.raw.content
    };
    if (headerLevelValue) {
      raw.headerLevel = headerLevelValue.raw;
    }
    if (underHeaderValue) {
      raw.underHeader = underHeaderValue;
    }
    const meta = {
      isTemplateContent: true,
      ...template.meta,
      ...helpers_default.createSecurityMeta(securityOptions)
    };
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective(
      directive_kind_default.show,
      "showTemplate",
      values,
      raw,
      meta,
      location(),
      "template"
      // Added source parameter
    );
  }, "peg$f641");
  var peg$f642 = /* @__PURE__ */ __name(function(security, varRef, headerLevel, underHeader, ending) {
    const securityOptions = security ? security[0] : null;
    helpers_default.debug("SlashShow matched variable reference", {
      varRef,
      headerLevel,
      underHeader,
      ending
    });
    const id = varRef.identifier;
    const headerLevelValue = headerLevel ? headerLevel : null;
    const underHeaderValue = underHeader ? underHeader : null;
    const values = {
      variable: [
        varRef
      ]
    };
    if (headerLevelValue) {
      values.headerLevel = [
        helpers_default.createNode(node_type_default.Number, {
          value: headerLevelValue.value,
          raw: headerLevelValue.raw,
          location: location()
        })
      ];
    }
    if (underHeaderValue) {
      values.underHeader = [
        helpers_default.createNode(node_type_default.Text, {
          content: underHeaderValue,
          raw: underHeaderValue,
          location: location()
        })
      ];
    }
    const raw = {
      variable: `@${id}`
    };
    if (headerLevelValue) {
      raw.headerLevel = headerLevelValue.raw;
    }
    if (underHeaderValue) {
      raw.underHeader = underHeaderValue;
    }
    const meta = {
      ...helpers_default.createSecurityMeta(securityOptions)
    };
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective(
      directive_kind_default.show,
      "showVariable",
      values,
      raw,
      meta,
      location(),
      "variable"
      // Added source parameter
    );
  }, "peg$f642");
  var peg$f643 = /* @__PURE__ */ __name(function(invocation, headerLevel, underHeader, ending) {
    helpers_default.debug("SlashShow matched unified reference with tail modifiers", {
      invocation,
      headerLevel,
      underHeader,
      ending
    });
    const isExecInvocation = invocation.type === "ExecInvocation";
    const commandRef = isExecInvocation ? invocation.commandRef : null;
    const hasParentheses = isExecInvocation && commandRef.args !== null && commandRef.args !== void 0;
    const headerLevelValue = headerLevel ? headerLevel : null;
    const underHeaderValue = underHeader ? underHeader : null;
    const values = {
      invocation
    };
    if (headerLevelValue) {
      values.headerLevel = [
        helpers_default.createNode(node_type_default.Number, {
          value: headerLevelValue.value,
          raw: headerLevelValue.raw,
          location: location()
        })
      ];
    }
    if (underHeaderValue) {
      values.underHeader = [
        helpers_default.createNode(node_type_default.Text, {
          content: underHeaderValue,
          raw: underHeaderValue,
          location: location()
        })
      ];
    }
    const raw = {};
    if (isExecInvocation) {
      raw.invocation = commandRef.name;
      raw.arguments = commandRef.args ? commandRef.args.map((arg) => {
        if (arg.type === node_type_default.Text) return arg.content;
        if (arg.type === node_type_default.VariableReference) return `@${arg.identifier}`;
        return arg;
      }).join(", ") : "";
    } else {
      const variable = invocation.variable || invocation;
      raw.variable = `@${variable.identifier}${variable.fields ? variable.fields.map((f) => `.${f.value || f.name || f.index}`).join("") : ""}`;
    }
    if (headerLevelValue) {
      raw.headerLevel = headerLevelValue.raw;
    }
    if (underHeaderValue) {
      raw.underHeader = underHeaderValue;
    }
    const meta = {
      hasParentheses,
      argumentCount: isExecInvocation && commandRef.args ? commandRef.args.length : 0
    };
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    const subtype = isExecInvocation ? "showInvocation" : "showVariable";
    return helpers_default.createStructuredDirective(directive_kind_default.show, subtype, values, raw, meta, location(), "invocation");
  }, "peg$f643");
  var peg$f644 = /* @__PURE__ */ __name(function(security, content, headerLevel, underHeader, ending) {
    const securityOptions = security ? security[0] : null;
    helpers_default.debug("SlashShow matched quoted string", {
      content,
      headerLevel,
      underHeader,
      securityOptions,
      ending
    });
    const path = {
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content,
            location: location()
          })
        ]
      },
      meta: helpers_default.createPathMetadata(content, [
        helpers_default.createNode(node_type_default.Text, {
          content,
          location: location()
        })
      ])
    };
    const headerLevelValue = headerLevel ? headerLevel : null;
    const underHeaderValue = underHeader ? underHeader : null;
    const values = {
      path: path.values.path
    };
    if (headerLevelValue) {
      values.headerLevel = [
        helpers_default.createNode(node_type_default.Number, {
          value: headerLevelValue.value,
          raw: headerLevelValue.raw,
          location: location()
        })
      ];
    }
    if (underHeaderValue) {
      values.underHeader = [
        helpers_default.createNode(node_type_default.Text, {
          content: underHeaderValue,
          raw: underHeaderValue,
          location: location()
        })
      ];
    }
    const raw = {
      path: content
    };
    if (headerLevelValue) {
      raw.headerLevel = headerLevelValue.raw;
    }
    if (underHeaderValue) {
      raw.underHeader = underHeaderValue;
    }
    const meta = {
      path: path.meta,
      ...helpers_default.createSecurityMeta(securityOptions)
    };
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.show, "showPath", values, raw, meta, location(), "path");
  }, "peg$f644");
  var peg$f645 = /* @__PURE__ */ __name(function(path, s) {
    return s;
  }, "peg$f645");
  var peg$f646 = /* @__PURE__ */ __name(function(path, security, headerLevel, underHeader, ending) {
    helpers_default.debug("SlashShow matched path", {
      path,
      headerLevel,
      underHeader,
      security,
      ending
    });
    const headerLevelValue = headerLevel ? headerLevel : null;
    const underHeaderValue = underHeader ? underHeader : null;
    const values = {
      path: path.values.path || path.values.url
    };
    if (headerLevelValue) {
      values.headerLevel = [
        helpers_default.createNode(node_type_default.Number, {
          value: headerLevelValue.value,
          raw: headerLevelValue.raw,
          location: location()
        })
      ];
    }
    if (underHeaderValue) {
      values.underHeader = [
        helpers_default.createNode(node_type_default.Text, {
          content: underHeaderValue,
          raw: underHeaderValue,
          location: location()
        })
      ];
    }
    const raw = {
      path: path.raw.path || path.raw.url
    };
    if (headerLevelValue) {
      raw.headerLevel = headerLevelValue.raw;
    }
    if (underHeaderValue) {
      raw.underHeader = underHeaderValue;
    }
    const meta = {
      path: {
        ...path.meta,
        pathSubtype: path.subtype
        // Preserve the specific path type
      },
      ...helpers_default.createSecurityMeta(security)
    };
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective(
      directive_kind_default.show,
      "showPath",
      values,
      raw,
      meta,
      location(),
      "path"
      // Added source parameter
    );
  }, "peg$f646");
  var peg$f647 = /* @__PURE__ */ __name(function() {
    let i = peg$currPos;
    let depth = 1;
    while (i < input.length - 1 && depth > 0) {
      if (input[i] === "[" && input[i + 1] === "[") {
        depth++;
        i += 2;
      } else if (input[i] === "]" && input[i + 1] === "]") {
        depth--;
        i += 2;
      } else {
        i++;
      }
    }
    return depth > 0;
  }, "peg$f647");
  var peg$f648 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed double brackets in /show directive. Expected closing ']]' for path section expression.", "]]", location());
  }, "peg$f648");
  var peg$f649 = /* @__PURE__ */ __name(function() {
    let i = peg$currPos;
    while (i < input.length) {
      if (input[i] === ">") return false;
      if (input[i] === "\n") return true;
      i++;
    }
    return true;
  }, "peg$f649");
  var peg$f650 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed alligator bracket in /show directive. Expected closing '>' for content loading.", ">", location());
  }, "peg$f650");
  var peg$f651 = /* @__PURE__ */ __name(function() {
    const nextChar = input[peg$currPos];
    return !/[a-zA-Z_]/.test(nextChar);
  }, "peg$f651");
  var peg$f652 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid variable reference in /show directive. Variable names must start with a letter or underscore.", "identifier", location());
  }, "peg$f652");
  var peg$f653 = /* @__PURE__ */ __name(function() {
    let i = peg$currPos;
    while (i < input.length) {
      if (input[i] === "`" && input[i - 1] !== "\\") return false;
      if (input[i] === "\n") return true;
      i++;
    }
    return true;
  }, "peg$f653");
  var peg$f654 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed backtick template in /show directive. Expected closing backtick (`).", "`", location());
  }, "peg$f654");
  var peg$f655 = /* @__PURE__ */ __name(function() {
    return helpers_default.isUnclosedTemplate(input, peg$currPos);
  }, "peg$f655");
  var peg$f656 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed double-colon template in /show directive. Expected closing '::' delimiter.", "::", location());
  }, "peg$f656");
  var peg$f657 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing content in /show directive. Expected template, variable, or path to show.", "@", location());
  }, "peg$f657");
  var peg$f658 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos).trim();
    return !rest.startsWith("@") && !rest.startsWith("<");
  }, "peg$f658");
  var peg$f659 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid foreach syntax in /show directive. Expected '@command(@arrays)' or '<@array.field # section>' after 'foreach'.", "foreach", location());
  }, "peg$f659");
  var peg$f660 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /show syntax. Expected: /show `template`, /show @variable, /show <path>, or /show <path # section>", "`", location());
  }, "peg$f660");
  var peg$f661 = /* @__PURE__ */ __name(function(content) {
    return {
      subtype: "showLoadContent",
      values: {
        loadContent: content
      },
      raw: {
        loadContent: content.source.raw
      },
      meta: {
        sourceType: content.source.type
      }
    };
  }, "peg$f661");
  var peg$f662 = /* @__PURE__ */ __name(function(path) {
    return {
      subtype: "showPath",
      values: {
        path
      },
      raw: {
        path: helpers_default.reconstructRawString(path)
      },
      meta: {
        path: helpers_default.createPathMetadata(helpers_default.reconstructRawString(path), path)
      }
    };
  }, "peg$f662");
  var peg$f663 = /* @__PURE__ */ __name(function(path) {
    return {
      subtype: "showPath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: path,
            location: location()
          })
        ]
      },
      raw: {
        path
      },
      meta: {}
    };
  }, "peg$f663");
  var peg$f664 = /* @__PURE__ */ __name(function(id, accessElements) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...accessElements.length > 0 ? {
        fields: accessElements
      } : {}
    }, location());
  }, "peg$f664");
  var peg$f665 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f665");
  var peg$f666 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f666");
  var peg$f667 = /* @__PURE__ */ __name(function(level) {
    const value = level.length;
    const raw = level.join("");
    return {
      value,
      raw
    };
  }, "peg$f667");
  var peg$f668 = /* @__PURE__ */ __name(function(header) {
    return header.trim();
  }, "peg$f668");
  var peg$f669 = /* @__PURE__ */ __name(function(title) {
    return title;
  }, "peg$f669");
  var peg$f670 = /* @__PURE__ */ __name(function(first, arg) {
    return arg;
  }, "peg$f670");
  var peg$f671 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f671");
  var peg$f672 = /* @__PURE__ */ __name(function(str) {
    return {
      type: "string",
      value: str
    };
  }, "peg$f672");
  var peg$f673 = /* @__PURE__ */ __name(function(varRef) {
    return {
      type: "variable",
      value: varRef
    };
  }, "peg$f673");
  var peg$f674 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f674");
  var peg$f675 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f675");
  var peg$f676 = /* @__PURE__ */ __name(function(id, value, ending) {
    helpers_default.debug("AtVar matched", {
      id,
      value,
      ending
    });
    let tail = ending.tail;
    const security = ending.security;
    const comment = ending.comment;
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    let processedValue;
    let metaInfo = {};
    if (value && value.content && value.wrapperType) {
      processedValue = value.content;
      if (processedValue.length === 0) {
        processedValue = [
          helpers_default.createNode(node_type_default.Text, {
            content: "",
            location: location()
          })
        ];
      }
      metaInfo.wrapperType = value.wrapperType;
      metaInfo.inferredType = "template";
      if (value.withClause) {
        tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
      }
    } else if (value && value.type === "object") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "object";
    } else if (value && value.type === "array") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "array";
      metaInfo.isEmptyArray = value.items.length === 0;
    } else if (value && value.type === "load-content") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = value.options && value.options.section ? "section-content" : "file-content";
      metaInfo.sourceType = value.source.type;
    } else if (value && value.type === "section") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "section-content";
    } else if (Array.isArray(value)) {
      processedValue = value;
      metaInfo.inferredType = "file-content";
    } else if (value && value.type === "variableReference") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "reference";
      if (value.pipes && value.pipes.length > 0) {
        const pipeline = value.pipes.map((pipe) => ({
          identifier: [
            helpers_default.createVariableReferenceNode("varIdentifier", {
              identifier: pipe.transform
            }, location())
          ],
          args: pipe.args || [],
          fields: [],
          rawIdentifier: pipe.transform,
          rawArgs: pipe.args || []
        }));
        tail = tail ? Object.assign({}, {
          pipeline
        }, tail) : {
          pipeline
        };
      }
    } else if (value && value.type === "VariableReferenceWithTail") {
      processedValue = [
        value.variable
      ];
      metaInfo.inferredType = "reference";
      if (value.withClause) {
        tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
      }
    } else if (value && value.type === "nestedDirective") {
      processedValue = [
        value.directive
      ];
      metaInfo.inferredType = "computed";
      metaInfo.isDataValue = true;
    } else if (value && value.type === "code") {
      processedValue = [
        {
          type: "code",
          language: value.language,
          code: value.code
        }
      ];
      metaInfo.inferredType = "computed";
      metaInfo.language = value.language;
      metaInfo.hasRunKeyword = value.hasRunKeyword;
    } else if (value && value.type === "command") {
      processedValue = [
        {
          type: "command",
          command: value.command
        }
      ];
      metaInfo.inferredType = "computed";
      metaInfo.hasRunKeyword = value.hasRunKeyword;
    } else if (value && value.type === "foreach-command") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "computed";
      metaInfo.isForeach = true;
    } else if (value && (value.type === "BinaryExpression" || value.type === "TernaryExpression" || value.type === "UnaryExpression")) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "expression";
      metaInfo.expressionType = value.type;
    } else if (typeof value === "number" || typeof value === "boolean" || value === null) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "primitive";
      metaInfo.primitiveType = value === null ? "null" : typeof value;
    } else {
      processedValue = Array.isArray(value) ? value : [
        value
      ];
      metaInfo.inferredType = "unknown";
    }
    const values = {
      identifier: [
        idNode
      ],
      value: processedValue
    };
    if (tail) {
      values.withClause = tail;
      metaInfo.withClause = tail;
    }
    if (security) {
      metaInfo.security = security;
    }
    if (comment) {
      metaInfo.comment = comment;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.var, "var", values, {}, metaInfo, location());
  }, "peg$f676");
  var peg$f677 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.isUnclosedArray(input, peg$currPos);
  }, "peg$f677");
  var peg$f678 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Unclosed array in /var directive. Expected ']' to close the array.", "]", location());
  }, "peg$f678");
  var peg$f679 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.isUnclosedObject(input, peg$currPos);
  }, "peg$f679");
  var peg$f680 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Unclosed object in /var directive. Expected closing brace to close the object.", String.fromCharCode(125), location());
  }, "peg$f680");
  var peg$f681 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, '"');
  }, "peg$f681");
  var peg$f682 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError('Unclosed string in /var directive. Expected closing double quote (").', '"', location());
  }, "peg$f682");
  var peg$f683 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, "'");
  }, "peg$f683");
  var peg$f684 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Unclosed string in /var directive. Expected closing single quote.", "'", location());
  }, "peg$f684");
  var peg$f685 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.isUnclosedTemplate(input, peg$currPos);
  }, "peg$f685");
  var peg$f686 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Unclosed template in /var directive. Expected closing '::' delimiter.", "::", location());
  }, "peg$f686");
  var peg$f687 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Missing value in /var directive. Expected a value after '=' for variable '@" + id + "'.", "value", location());
  }, "peg$f687");
  var peg$f688 = /* @__PURE__ */ __name(function(id) {
    const rest = input.substring(peg$currPos).trim();
    return rest.length > 0 && rest[0] !== "=";
  }, "peg$f688");
  var peg$f689 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Invalid /var syntax. Expected '=' after variable name '@" + id + "'.", "=", location());
  }, "peg$f689");
  var peg$f690 = /* @__PURE__ */ __name(function(id) {
    const varLoc = location();
    helpers_default.mlldError("Missing '@' before variable name in /var directive. Use: /var @" + id + " = value", "@", varLoc);
  }, "peg$f690");
  var peg$f691 = /* @__PURE__ */ __name(function() {
    const nextChar = input[peg$currPos];
    return !/[a-zA-Z_]/.test(nextChar);
  }, "peg$f691");
  var peg$f692 = /* @__PURE__ */ __name(function() {
    const atLoc = location();
    helpers_default.mlldError("Invalid variable name in /var directive. Variable names must start with a letter or underscore.", "identifier", atLoc);
  }, "peg$f692");
  var peg$f693 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /var syntax. Expected: /var @name = value", "@", location());
  }, "peg$f693");
  var peg$f694 = /* @__PURE__ */ __name(function(id, prop) {
    return prop;
  }, "peg$f694");
  var peg$f695 = /* @__PURE__ */ __name(function(id, tail) {
    const fullVar = "@" + id + (tail.length > 0 ? "." + tail.join(".") : "");
    helpers_default.mlldError("Invalid /when syntax. Missing ':' after variable.\\n\\nThe syntax /when " + fullVar + " [...] requires a colon after the variable.\\nThis is the block form that compares the variable value against each condition.\\n\\nCorrect syntax:\\n  /when " + fullVar + ': [\\n    "value1" => /show "First case"\\n    "value2" => /show "Second case"\\n  ]\\n\\nOr use the simple form without brackets:\\n  /when ' + fullVar + ' => /show "Action"', ":", location());
  }, "peg$f695");
  var peg$f696 = /* @__PURE__ */ __name(function(id) {
    return id;
  }, "peg$f696");
  var peg$f697 = /* @__PURE__ */ __name(function(variable) {
    let i = peg$currPos;
    let depth = 1;
    while (i < input.length && depth > 0) {
      if (input[i] === "[") depth++;
      else if (input[i] === "]") depth--;
      else if (input[i] === "=" && i + 1 < input.length && input[i + 1] === ">" && depth === 1) {
        return true;
      }
      i++;
    }
    return false;
  }, "peg$f697");
  var peg$f698 = /* @__PURE__ */ __name(function(variable) {
    helpers_default.mlldError(`Invalid /when syntax. The 'any:' modifier requires a block action after the conditions.\\nIndividual actions are not allowed with 'any:'.\\n\\nIncorrect: /when @var any: [@cond1 => action1, @cond2 => action2]\\nCorrect:   /when @var any: [@cond1, @cond2] => /show "Any matched"`, "=>", location());
  }, "peg$f698");
  var peg$f699 = /* @__PURE__ */ __name(function(modifier, conditions, a) {
    return a;
  }, "peg$f699");
  var peg$f700 = /* @__PURE__ */ __name(function(modifier, conditions, action) {
    helpers_default.debug("WhenBareBlockWithModifierForm matched", {
      modifier,
      conditions,
      action
    });
    const values = {
      conditions,
      modifier: [
        modifier
      ]
    };
    if (action) {
      values.action = action;
    }
    const raw = {
      modifier: modifier.content,
      conditions: conditions.map((c) => ({
        condition: helpers_default.reconstructRawString(c.condition),
        action: c.action ? helpers_default.reconstructRawString(c.action) : void 0
      }))
    };
    if (action) {
      raw.action = helpers_default.reconstructRawString(action);
    }
    return helpers_default.createStructuredDirective("when", "whenBlock", values, raw, {
      modifier: modifier.content,
      conditionCount: conditions.length,
      hasVariable: false
    }, location());
  }, "peg$f700");
  var peg$f701 = /* @__PURE__ */ __name(function(condition) {
    helpers_default.mlldError("Invalid /when syntax. Expected '=>' after condition. Use: /when @condition => action", "=>", location());
  }, "peg$f701");
  var peg$f702 = /* @__PURE__ */ __name(function(condition) {
    helpers_default.mlldError("Missing action in /when directive. Expected a directive after '=>'.", "directive", location());
  }, "peg$f702");
  var peg$f703 = /* @__PURE__ */ __name(function(id) {
    return id;
  }, "peg$f703");
  var peg$f704 = /* @__PURE__ */ __name(function(variable) {
    let i = peg$currPos;
    let depth = 1;
    let hasIndividualActions = false;
    let hasBlockAction = false;
    while (i < input.length && depth > 0) {
      if (input[i] === "[") depth++;
      else if (input[i] === "]") depth--;
      else if (input[i] === "=" && i + 1 < input.length && input[i + 1] === ">" && depth === 1) {
        hasIndividualActions = true;
      }
      i++;
    }
    if (depth === 0 && i < input.length) {
      while (i < input.length && (input[i] === " " || input[i] === "	" || input[i] === "\n")) i++;
      if (i + 1 < input.length && input[i] === "=" && input[i + 1] === ">") {
        hasBlockAction = true;
      }
    }
    return hasIndividualActions && hasBlockAction;
  }, "peg$f704");
  var peg$f705 = /* @__PURE__ */ __name(function(variable) {
    helpers_default.mlldError(`Invalid /when syntax. The 'all:' modifier cannot have both individual actions and a block action.\\nUse either:\\n  /when @var all: [@cond1 => action1, @cond2 => action2]  (individual actions)\\n  /when @var all: [@cond1, @cond2] => /show "All matched"  (block action)`, "]", location());
  }, "peg$f705");
  var peg$f706 = /* @__PURE__ */ __name(function(id) {
    return id;
  }, "peg$f706");
  var peg$f707 = /* @__PURE__ */ __name(function(variable, modifier) {
    let i = peg$currPos;
    let depth = 1;
    while (i < input.length && depth > 0) {
      if (input[i] === "[") depth++;
      else if (input[i] === "]") depth--;
      else if (input[i] === "\n" && depth > 0) {
        let j = i + 1;
        while (j < input.length && (input[j] === " " || input[j] === "	")) j++;
        if (j < input.length && input[j] === "/") return true;
      }
      i++;
    }
    return depth > 0;
  }, "peg$f707");
  var peg$f708 = /* @__PURE__ */ __name(function(variable, modifier) {
    helpers_default.mlldError("Unclosed brackets in /when directive. Expected ']' to close the condition list.", "]", location());
  }, "peg$f708");
  var peg$f709 = /* @__PURE__ */ __name(function(id) {
    return id;
  }, "peg$f709");
  var peg$f710 = /* @__PURE__ */ __name(function(variable, modifier) {
    return modifier !== "first" && modifier !== "all" && modifier !== "any";
  }, "peg$f710");
  var peg$f711 = /* @__PURE__ */ __name(function(variable, modifier) {
    helpers_default.mlldError("Invalid /when modifier: '" + modifier + "'. Valid modifiers are: 'first', 'all', 'any'.\\nExamples:\\n  /when @var first: [...] => action\\n  /when @var all: [...] => action\\n  /when @var any: [...] => action", "modifier", location());
  }, "peg$f711");
  var peg$f712 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /when syntax. Valid forms:\\n  /when @condition => action          (simple form)\\n  /when @variable: [...]              (switch form)\\n  /when @var first: [...] => action   (block form with modifier)\\n  /when [...] => action               (bare block form)", "@", location());
  }, "peg$f712");
  var peg$f713 = /* @__PURE__ */ __name(function(condition, action) {
    helpers_default.debug("WhenSimpleForm matched", {
      condition,
      action
    });
    return helpers_default.createStructuredDirective("when", "whenSimple", {
      condition,
      action
    }, {
      condition: helpers_default.reconstructRawString(condition),
      action: helpers_default.reconstructRawString(action)
    }, {
      hasVariables: condition.some((n) => n.type === node_type_default.VariableReference)
    }, location());
  }, "peg$f713");
  var peg$f714 = /* @__PURE__ */ __name(function(expression, conditions) {
    helpers_default.debug("WhenMatchForm matched", {
      expression,
      conditions
    });
    return helpers_default.createStructuredDirective("when", "whenMatch", {
      expression,
      conditions
    }, {
      expression: helpers_default.reconstructRawString(expression),
      conditions: conditions.map((c) => ({
        condition: helpers_default.reconstructRawString(c.condition),
        action: c.action ? helpers_default.reconstructRawString(c.action) : void 0
      }))
    }, {
      conditionCount: conditions.length
    }, location());
  }, "peg$f714");
  var peg$f715 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
  }, "peg$f715");
  var peg$f716 = /* @__PURE__ */ __name(function(variable, modifier, conditions, a) {
    return a;
  }, "peg$f716");
  var peg$f717 = /* @__PURE__ */ __name(function(variable, modifier, conditions, action) {
    helpers_default.debug("WhenBlockForm matched", {
      variable,
      modifier,
      conditions,
      action
    });
    const values = {
      conditions
    };
    if (modifier) {
      values.modifier = [
        modifier
      ];
    }
    if (variable) {
      values.variable = [
        variable
      ];
    }
    if (action) {
      values.action = action;
    }
    const raw = {
      modifier: modifier.content,
      conditions: conditions.map((c) => ({
        condition: helpers_default.reconstructRawString(c.condition),
        action: c.action ? helpers_default.reconstructRawString(c.action) : void 0
      }))
    };
    if (variable) {
      raw.variable = variable;
    }
    if (action) {
      raw.action = helpers_default.reconstructRawString(action);
    }
    return helpers_default.createStructuredDirective("when", "whenBlock", values, raw, {
      modifier: modifier ? modifier.content : "default",
      conditionCount: conditions.length,
      hasVariable: !!variable
    }, location());
  }, "peg$f717");
  var peg$f718 = /* @__PURE__ */ __name(function(conditions) {
    helpers_default.debug("WhenBareBlockForm matched", {
      conditions
    });
    const values = {
      conditions
    };
    const raw = {
      conditions: conditions.map((c) => ({
        condition: helpers_default.reconstructRawString(c.condition),
        action: c.action ? helpers_default.reconstructRawString(c.action) : void 0
      }))
    };
    return helpers_default.createStructuredDirective("when", "whenBlock", values, raw, {
      modifier: "default",
      conditionCount: conditions.length,
      hasVariable: false
    }, location());
  }, "peg$f718");
  var peg$f719 = /* @__PURE__ */ __name(function(mod) {
    return helpers_default.createNode(node_type_default.Text, {
      content: mod,
      location: location()
    });
  }, "peg$f719");
  var peg$f720 = /* @__PURE__ */ __name(function(expr) {
    return [
      expr
    ];
  }, "peg$f720");
  var peg$f721 = /* @__PURE__ */ __name(function(condition) {
    return [
      helpers_default.createNode("Negation", {
        condition,
        location: location()
      })
    ];
  }, "peg$f721");
  var peg$f722 = /* @__PURE__ */ __name(function(invocation) {
    return [
      invocation
    ];
  }, "peg$f722");
  var peg$f723 = /* @__PURE__ */ __name(function(varRef) {
    return [
      varRef
    ];
  }, "peg$f723");
  var peg$f724 = /* @__PURE__ */ __name(function() {
    return [
      $1
    ];
  }, "peg$f724");
  var peg$f725 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: String(value),
        location: location()
      })
    ];
  }, "peg$f725");
  var peg$f726 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: String(value),
        location: location()
      })
    ];
  }, "peg$f726");
  var peg$f727 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: value,
        location: location()
      })
    ];
  }, "peg$f727");
  var peg$f728 = /* @__PURE__ */ __name(function(expr) {
    return [
      expr
    ];
  }, "peg$f728");
  var peg$f729 = /* @__PURE__ */ __name(function(condition) {
    return [
      helpers_default.createNode("Negation", {
        condition,
        location: location()
      })
    ];
  }, "peg$f729");
  var peg$f730 = /* @__PURE__ */ __name(function(invocation) {
    return [
      invocation
    ];
  }, "peg$f730");
  var peg$f731 = /* @__PURE__ */ __name(function(varRef) {
    return [
      varRef
    ];
  }, "peg$f731");
  var peg$f732 = /* @__PURE__ */ __name(function() {
    return [
      $1
    ];
  }, "peg$f732");
  var peg$f733 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: String(value),
        location: location()
      })
    ];
  }, "peg$f733");
  var peg$f734 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: String(value),
        location: location()
      })
    ];
  }, "peg$f734");
  var peg$f735 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: value,
        location: location()
      })
    ];
  }, "peg$f735");
  var peg$f736 = /* @__PURE__ */ __name(function(first, pair) {
    return pair;
  }, "peg$f736");
  var peg$f737 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f737");
  var peg$f738 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Comma separators are not allowed in /when conditions. For readability, /when conditions must be separated by whitespace (newlines or spaces) instead of commas.\n\u{1F4A1} Remove the comma and use a newline or space:\n   /when expr: [value1 => action1, value2 => action2]  \u274C\n   /when expr: [value1 => action1  value2 => action2]  \u2705\n   /when expr: [\n     value1 => action1\n     value2 => action2\n   ]  \u2705", "whitespace", location());
  }, "peg$f738");
  var peg$f739 = /* @__PURE__ */ __name(function(condition, a) {
    return a;
  }, "peg$f739");
  var peg$f740 = /* @__PURE__ */ __name(function(condition, action) {
    return {
      condition,
      action
    };
  }, "peg$f740");
  var peg$f741 = /* @__PURE__ */ __name(function(first, d) {
    return d;
  }, "peg$f741");
  var peg$f742 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ].flat();
  }, "peg$f742");
  var peg$f743 = /* @__PURE__ */ __name(function(source, target) {
    helpers_default.debug("WhenActionDirective: Enhanced output matched!");
    const values = {
      target
    };
    const raw = {
      target: target.raw
    };
    let subtype = "outputDocument";
    const meta = {
      hasSource: false,
      targetType: target.type,
      enhanced: true
    };
    if (source) {
      values.source = source.values;
      raw.source = source.raw;
      meta.hasSource = true;
      meta.sourceType = source.type;
      subtype = source.subtype;
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "output",
        subtype,
        values,
        raw,
        meta,
        location: location()
      })
    ];
  }, "peg$f743");
  var peg$f744 = /* @__PURE__ */ __name(function(varRef) {
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "show",
        subtype: "showVariable",
        values: {
          variable: [
            varRef
          ]
        },
        raw: {
          variable: "@" + varRef.identifier
        },
        meta: {},
        location: location()
      })
    ];
  }, "peg$f744");
  var peg$f745 = /* @__PURE__ */ __name(function(invocation) {
    const isExecInvocation = invocation.type === "ExecInvocation";
    const subtype = isExecInvocation ? "showExecInvocation" : "showVariable";
    const rawValue = isExecInvocation ? invocation.commandRef.name : `@${invocation.variable.identifier}`;
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "show",
        subtype,
        values: {
          [isExecInvocation ? "execInvocation" : "variable"]: invocation
        },
        raw: {
          [isExecInvocation ? "execInvocation" : "variable"]: rawValue
        },
        meta: {},
        location: location()
      })
    ];
  }, "peg$f745");
  var peg$f746 = /* @__PURE__ */ __name(function(template) {
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "show",
        subtype: "showTemplate",
        values: template.values,
        raw: template.raw,
        meta: template.meta,
        location: location()
      })
    ];
  }, "peg$f746");
  var peg$f747 = /* @__PURE__ */ __name(function(id, value) {
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    let processedValue;
    let metaInfo = {};
    if (value && value.content && value.wrapperType) {
      processedValue = value.content;
      metaInfo.wrapperType = value.wrapperType;
      metaInfo.inferredType = "template";
    } else if (value && value.type === "object") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "object";
    } else if (value && value.type === "array") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "array";
    } else if (value && value.type === "ExecInvocation") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "variableReference") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "VariableReferenceWithTail") {
      processedValue = [
        value.variable
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "nestedDirective") {
      processedValue = [
        value.directive
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "code") {
      processedValue = [
        {
          type: "code",
          language: value.language,
          code: value.code
        }
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "command") {
      processedValue = [
        {
          type: "command",
          command: value.command
        }
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "foreach-command") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "computed";
    } else if (typeof value === "number" || typeof value === "boolean" || value === null) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "primitive";
    } else if (typeof value === "string") {
      processedValue = [
        helpers_default.createNode(node_type_default.Text, {
          content: value,
          location: location()
        })
      ];
      metaInfo.inferredType = "text";
    } else {
      processedValue = Array.isArray(value) ? value : [
        value
      ];
      metaInfo.inferredType = "unknown";
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "var",
        subtype: "var",
        values: {
          identifier: [
            idNode
          ],
          value: processedValue
        },
        raw: {
          identifier: id,
          value: helpers_default.reconstructRawString(processedValue)
        },
        meta: metaInfo,
        location: location()
      })
    ];
  }, "peg$f747");
  var peg$f748 = /* @__PURE__ */ __name(function(invocation) {
    const isExecInvocation = invocation.type === "ExecInvocation";
    const subtype = isExecInvocation ? "runExecReference" : "runVariable";
    const rawValue = isExecInvocation ? invocation.commandRef.name : `@${invocation.variable.identifier}`;
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "run",
        subtype,
        values: {
          [isExecInvocation ? "execRef" : "varRef"]: invocation
        },
        raw: {
          [isExecInvocation ? "execRef" : "varRef"]: rawValue
        },
        meta: {
          hasWithClause: !!invocation.withClause
        },
        location: location()
      })
    ];
  }, "peg$f748");
  var peg$f749 = /* @__PURE__ */ __name(function(command) {
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "run",
        subtype: "runCommand",
        values: command.values,
        raw: command.raw,
        meta: command.meta,
        location: location()
      })
    ];
  }, "peg$f749");
  var peg$f750 = /* @__PURE__ */ __name(function(source, path) {
    helpers_default.debug("WhenActionDirective: Bracket output matched");
    const values = {
      target: {
        type: "file",
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: path,
            location: location()
          })
        ],
        raw: path,
        meta: {
          bracketed: true
        }
      }
    };
    const raw = {
      target: `[${path}]`
    };
    let subtype = "outputDocument";
    const meta = {
      hasSource: false,
      targetType: "file",
      legacy: true
    };
    if (source) {
      values.source = source.values;
      raw.source = source.raw;
      meta.hasSource = true;
      meta.sourceType = source.type;
      subtype = source.subtype;
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "output",
        subtype,
        values,
        raw,
        meta,
        location: location()
      })
    ];
  }, "peg$f750");
  var peg$f751 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f751");
  var peg$f752 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f752");
  var peg$f753 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("").trim();
  }, "peg$f753");
  var peg$f754 = /* @__PURE__ */ __name(function(id) {
    return {
      type: "variable",
      subtype: "outputVariable",
      values: [
        helpers_default.createVariableReferenceNode("identifier", {
          identifier: id
        }, location())
      ],
      raw: "@" + id
    };
  }, "peg$f754");
  var peg$f755 = /* @__PURE__ */ __name(function(str) {
    return {
      type: "literal",
      subtype: "outputLiteral",
      values: [
        helpers_default.createNode(node_type_default.Text, {
          content: str,
          location: location()
        })
      ],
      raw: '"' + str + '"'
    };
  }, "peg$f755");
  var peg$f756 = /* @__PURE__ */ __name(function(stream) {
    return {
      type: "stream",
      stream,
      raw: stream
    };
  }, "peg$f756");
  var peg$f757 = /* @__PURE__ */ __name(function(name) {
    return name;
  }, "peg$f757");
  var peg$f758 = /* @__PURE__ */ __name(function(varname) {
    return {
      type: "env",
      varname: varname || null,
      raw: varname ? `env:${varname}` : "env"
    };
  }, "peg$f758");
  var peg$f759 = /* @__PURE__ */ __name(function(str) {
    return {
      type: "file",
      path: [
        helpers_default.createNode(node_type_default.Text, {
          content: str,
          location: location()
        })
      ],
      raw: `"${str}"`,
      meta: {
        quoted: true
      }
    };
  }, "peg$f759");
  var peg$f760 = /* @__PURE__ */ __name(function(id, value) {
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    let processedValue;
    let metaInfo = {
      implicit: true
    };
    if (value && value.content && value.wrapperType) {
      processedValue = value.content;
      metaInfo.wrapperType = value.wrapperType;
      metaInfo.inferredType = "template";
    } else if (value && value.type === "object") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "object";
    } else if (value && value.type === "array") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "array";
    } else if (value && value.type === "ExecInvocation") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "variableReference") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "VariableReferenceWithTail") {
      processedValue = [
        value.variable
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "nestedDirective") {
      processedValue = [
        value.directive
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "code") {
      processedValue = [
        {
          type: "code",
          language: value.language,
          code: value.code
        }
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "command") {
      processedValue = [
        {
          type: "command",
          command: value.command
        }
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "foreach-command") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "computed";
    } else if (typeof value === "number" || typeof value === "boolean" || value === null) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "primitive";
    } else if (typeof value === "string") {
      processedValue = [
        helpers_default.createNode(node_type_default.Text, {
          content: value,
          location: location()
        })
      ];
      metaInfo.inferredType = "text";
    } else {
      processedValue = Array.isArray(value) ? value : [
        value
      ];
      metaInfo.inferredType = "unknown";
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "var",
        subtype: "var",
        values: {
          identifier: [
            idNode
          ],
          value: processedValue
        },
        raw: {
          identifier: id,
          value: helpers_default.reconstructRawString(processedValue)
        },
        meta: metaInfo,
        location: location()
      })
    ];
  }, "peg$f760");
  var peg$f761 = /* @__PURE__ */ __name(function(name, args, value) {
    const ref = {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args: args || [],
      isCommandReference: true
    };
    let processedValue;
    let metaInfo = {
      implicit: true
    };
    if (value && value.content && value.wrapperType) {
      processedValue = value.content;
      metaInfo.wrapperType = value.wrapperType;
      metaInfo.inferredType = "template";
    } else if (value && value.type === "ExecInvocation") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "variableReference") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "VariableReferenceWithTail") {
      processedValue = [
        value.variable
      ];
      metaInfo.inferredType = "reference";
    } else {
      processedValue = Array.isArray(value) ? value : [
        value
      ];
      metaInfo.inferredType = "unknown";
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "exe",
        subtype: "exe",
        values: {
          commandRef: ref,
          value: processedValue
        },
        raw: {
          commandRef: name,
          value: helpers_default.reconstructRawString(processedValue)
        },
        meta: metaInfo,
        location: location()
      })
    ];
  }, "peg$f761");
  var peg$f762 = /* @__PURE__ */ __name(function(name, args, tail) {
    const ref = {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args: args || [],
      isCommandReference: true
    };
    const invocation = helpers_default.createExecInvocation(ref, tail || null, location());
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "run",
        subtype: "runExecReference",
        values: {
          execRef: invocation
        },
        raw: {
          execRef: name
        },
        meta: {
          implicit: true,
          hasWithClause: !!tail
        },
        location: location()
      })
    ];
  }, "peg$f762");
  var peg$f763 = /* @__PURE__ */ __name(function(template) {
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "show",
        subtype: "showTemplate",
        values: template.values,
        raw: template.raw,
        meta: {
          ...template.meta,
          implicit: true
        },
        location: location()
      })
    ];
  }, "peg$f763");
  var peg$f764 = /* @__PURE__ */ __name(function(content) {
    return content && (content.type === "code" || content.type === "command" || content.content && content.wrapperType || content.type === "object" || content.type === "array");
  }, "peg$f764");
  var peg$f765 = /* @__PURE__ */ __name(function(content) {
    let directive, subtype, values, raw;
    const metaInfo = {
      implicit: true
    };
    if (content.type === "code") {
      directive = "run";
      subtype = "runCode";
      values = {
        language: content.language,
        code: content.code
      };
      raw = {
        language: content.language,
        code: content.code
      };
    } else if (content.type === "command") {
      directive = "run";
      subtype = "runCommand";
      values = {
        command: content.command
      };
      raw = {
        command: helpers_default.reconstructRawString(content.command)
      };
    } else if (content.content && content.wrapperType) {
      directive = "show";
      subtype = "showTemplate";
      values = {
        content: content.content
      };
      raw = {
        content: helpers_default.reconstructRawString(content.content)
      };
      metaInfo.wrapperType = content.wrapperType;
    } else {
      directive = "show";
      subtype = "showValue";
      values = {
        value: [
          content
        ]
      };
      raw = {
        value: helpers_default.reconstructRawString([
          content
        ])
      };
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: directive,
        subtype,
        values,
        raw,
        meta: metaInfo,
        location: location()
      })
    ];
  }, "peg$f765");
  var peg$currPos = options.peg$currPos | 0;
  var peg$savedPos = peg$currPos;
  var peg$posDetailsCache = [
    {
      line: 1,
      column: 1
    }
  ];
  var peg$maxFailPos = peg$currPos;
  var peg$maxFailExpected = options.peg$maxFailExpected || [];
  var peg$silentFails = options.peg$silentFails | 0;
  var peg$result;
  if (options.startRule) {
    if (!(options.startRule in peg$startRuleFunctions)) {
      throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
    }
    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
  }
  function text() {
    return input.substring(peg$savedPos, peg$currPos);
  }
  __name(text, "text");
  function offset() {
    return peg$savedPos;
  }
  __name(offset, "offset");
  function range() {
    return {
      source: peg$source,
      start: peg$savedPos,
      end: peg$currPos
    };
  }
  __name(range, "range");
  function location() {
    return peg$computeLocation(peg$savedPos, peg$currPos);
  }
  __name(location, "location");
  function expected(description, location2) {
    location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);
    throw peg$buildStructuredError([
      peg$otherExpectation(description)
    ], input.substring(peg$savedPos, peg$currPos), location2);
  }
  __name(expected, "expected");
  function error(message, location2) {
    location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);
    throw peg$buildSimpleError(message, location2);
  }
  __name(error, "error");
  function peg$literalExpectation(text2, ignoreCase) {
    return {
      type: "literal",
      text: text2,
      ignoreCase
    };
  }
  __name(peg$literalExpectation, "peg$literalExpectation");
  function peg$classExpectation(parts, inverted, ignoreCase) {
    return {
      type: "class",
      parts,
      inverted,
      ignoreCase
    };
  }
  __name(peg$classExpectation, "peg$classExpectation");
  function peg$anyExpectation() {
    return {
      type: "any"
    };
  }
  __name(peg$anyExpectation, "peg$anyExpectation");
  function peg$endExpectation() {
    return {
      type: "end"
    };
  }
  __name(peg$endExpectation, "peg$endExpectation");
  function peg$otherExpectation(description) {
    return {
      type: "other",
      description
    };
  }
  __name(peg$otherExpectation, "peg$otherExpectation");
  function peg$computePosDetails(pos) {
    var details = peg$posDetailsCache[pos];
    var p;
    if (details) {
      return details;
    } else {
      if (pos >= peg$posDetailsCache.length) {
        p = peg$posDetailsCache.length - 1;
      } else {
        p = pos;
        while (!peg$posDetailsCache[--p]) {
        }
      }
      details = peg$posDetailsCache[p];
      details = {
        line: details.line,
        column: details.column
      };
      while (p < pos) {
        if (input.charCodeAt(p) === 10) {
          details.line++;
          details.column = 1;
        } else {
          details.column++;
        }
        p++;
      }
      peg$posDetailsCache[pos] = details;
      return details;
    }
  }
  __name(peg$computePosDetails, "peg$computePosDetails");
  function peg$computeLocation(startPos, endPos, offset2) {
    var startPosDetails = peg$computePosDetails(startPos);
    var endPosDetails = peg$computePosDetails(endPos);
    var res = {
      source: peg$source,
      start: {
        offset: startPos,
        line: startPosDetails.line,
        column: startPosDetails.column
      },
      end: {
        offset: endPos,
        line: endPosDetails.line,
        column: endPosDetails.column
      }
    };
    if (offset2 && peg$source && typeof peg$source.offset === "function") {
      res.start = peg$source.offset(res.start);
      res.end = peg$source.offset(res.end);
    }
    return res;
  }
  __name(peg$computeLocation, "peg$computeLocation");
  function peg$fail(expected2) {
    if (peg$currPos < peg$maxFailPos) {
      return;
    }
    if (peg$currPos > peg$maxFailPos) {
      peg$maxFailPos = peg$currPos;
      peg$maxFailExpected = [];
    }
    peg$maxFailExpected.push(expected2);
  }
  __name(peg$fail, "peg$fail");
  function peg$buildSimpleError(message, location2) {
    return new peg$SyntaxError(message, null, null, location2);
  }
  __name(peg$buildSimpleError, "peg$buildSimpleError");
  function peg$buildStructuredError(expected2, found, location2) {
    return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected2, found), expected2, found, location2);
  }
  __name(peg$buildStructuredError, "peg$buildStructuredError");
  function peg$parseStart() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseFrontmatter();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    s2 = [];
    s3 = peg$parseLineStartComment();
    if (s3 === peg$FAILED) {
      s3 = peg$parseComment();
      if (s3 === peg$FAILED) {
        s3 = peg$parseMlldRunFence();
        if (s3 === peg$FAILED) {
          s3 = peg$parseCodeFence();
          if (s3 === peg$FAILED) {
            s3 = peg$parseDirective();
            if (s3 === peg$FAILED) {
              s3 = peg$parseVariable();
              if (s3 === peg$FAILED) {
                s3 = peg$parseTextBlock();
              }
            }
          }
        }
      }
    }
    while (s3 !== peg$FAILED) {
      s2.push(s3);
      s3 = peg$parseLineStartComment();
      if (s3 === peg$FAILED) {
        s3 = peg$parseComment();
        if (s3 === peg$FAILED) {
          s3 = peg$parseMlldRunFence();
          if (s3 === peg$FAILED) {
            s3 = peg$parseCodeFence();
            if (s3 === peg$FAILED) {
              s3 = peg$parseDirective();
              if (s3 === peg$FAILED) {
                s3 = peg$parseVariable();
                if (s3 === peg$FAILED) {
                  s3 = peg$parseTextBlock();
                }
              }
            }
          }
        }
      }
    }
    peg$savedPos = s0;
    s0 = peg$f0(s1, s2);
    return s0;
  }
  __name(peg$parseStart, "peg$parseStart");
  function peg$parseInterDirectiveNewline() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r0.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e0);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r0.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
    }
    s2 = peg$parseLineTerminator();
    if (s2 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s3 = peg$f1(s1, s2);
      if (s3) {
        s3 = void 0;
      } else {
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f2(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseInterDirectiveNewline, "peg$parseInterDirectiveNewline");
  function peg$parseContentEOL() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r0.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e0);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r0.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
    }
    s2 = peg$parseLineTerminator();
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f3(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseContentEOL, "peg$parseContentEOL");
  function peg$parseDirectiveEOL() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    peg$silentFails++;
    s1 = peg$parseLineTerminator();
    if (s1 === peg$FAILED) {
      s1 = peg$parseEOF();
    }
    peg$silentFails--;
    if (s1 !== peg$FAILED) {
      peg$currPos = s0;
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parse_();
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r0.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r0.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
      }
      s3 = peg$currPos;
      peg$silentFails++;
      s4 = peg$parseLineTerminator();
      if (s4 === peg$FAILED) {
        s4 = peg$parseEOF();
      }
      peg$silentFails--;
      if (s4 !== peg$FAILED) {
        peg$currPos = s3;
        s3 = void 0;
      } else {
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        s1 = [
          s1,
          s2,
          s3
        ];
        s0 = s1;
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseDirectiveEOL, "peg$parseDirectiveEOL");
  function peg$parseLineStartComment() {
    var s0, s1, s2, s4;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f4();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCommentMarker();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseCommentContent();
        peg$savedPos = s0;
        s0 = peg$f5(s2, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseLineStartComment, "peg$parseLineStartComment");
  function peg$parseComment() {
    var s0, s1, s3;
    s0 = peg$currPos;
    s1 = peg$parseCommentMarker();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseCommentContent();
      peg$savedPos = s0;
      s0 = peg$f6(s1, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseComment, "peg$parseComment");
  function peg$parseCommentMarker() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c0) {
      s1 = peg$c0;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e1);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f7();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 2) === peg$c1) {
        s1 = peg$c1;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e2);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f8();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseCommentMarker, "peg$parseCommentMarker");
  function peg$parseCommentContent() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r1.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e3);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r1.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e3);
        }
      }
    }
    if (input.charCodeAt(peg$currPos) === 10) {
      s2 = peg$c2;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e4);
      }
    }
    if (s2 === peg$FAILED) {
      s2 = null;
    }
    peg$savedPos = s0;
    s0 = peg$f9(s1);
    return s0;
  }
  __name(peg$parseCommentContent, "peg$parseCommentContent");
  function peg$parseInlineComment() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    s2 = peg$parseCommentMarker();
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseCommentContent();
      peg$savedPos = s0;
      s0 = peg$f10(s2, s4);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseInlineComment, "peg$parseInlineComment");
  function peg$parseTextBlock() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseTextPart();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseTextPart();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseTextPart();
      }
      peg$savedPos = s0;
      s0 = peg$f11(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTextBlock, "peg$parseTextBlock");
  function peg$parseTextPart() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f12();
    if (s1) {
      s1 = peg$FAILED;
    } else {
      s1 = void 0;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.substr(peg$currPos, 2) === peg$c3) {
        s3 = peg$c3;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e5);
        }
      }
      if (s3 === peg$FAILED) {
        if (input.substr(peg$currPos, 2) === peg$c4) {
          s3 = peg$c4;
          peg$currPos += 2;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s3 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c5) {
            s3 = peg$c5;
            peg$currPos += 2;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e7);
            }
          }
          if (s3 === peg$FAILED) {
            s3 = peg$parseBacktickSequence();
          }
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s3 = peg$f13();
        if (s3) {
          s3 = void 0;
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f14(s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTextPart, "peg$parseTextPart");
  function peg$parseDirective() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f15();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r2.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e9);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r2.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e9);
          }
        }
      }
      s3 = peg$parseSlashVar();
      if (s3 === peg$FAILED) {
        s3 = peg$parseSlashShow();
        if (s3 === peg$FAILED) {
          s3 = peg$parseSlashExe();
          if (s3 === peg$FAILED) {
            s3 = peg$parseSlashFor();
            if (s3 === peg$FAILED) {
              s3 = peg$parseSlashRun();
              if (s3 === peg$FAILED) {
                s3 = peg$parseSlashPath();
                if (s3 === peg$FAILED) {
                  s3 = peg$parseSlashImport();
                  if (s3 === peg$FAILED) {
                    s3 = peg$parseSlashOutput();
                    if (s3 === peg$FAILED) {
                      s3 = peg$parseSlashWhen();
                    }
                  }
                }
              }
            }
          }
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f16(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseDirective, "peg$parseDirective");
  function peg$parseMlldRunFence() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c6) {
      s1 = peg$c6;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e10);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 8) === peg$c7) {
        s2 = peg$c7;
        peg$currPos += 8;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e11);
        }
      }
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 10) {
          s3 = peg$c2;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e4);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = [];
          s5 = peg$currPos;
          s6 = peg$currPos;
          peg$silentFails++;
          s7 = peg$currPos;
          if (input.substr(peg$currPos, 3) === peg$c6) {
            s8 = peg$c6;
            peg$currPos += 3;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e10);
            }
          }
          if (s8 !== peg$FAILED) {
            if (input.charCodeAt(peg$currPos) === 10) {
              s9 = peg$c2;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e4);
              }
            }
            if (s9 === peg$FAILED) {
              s9 = peg$currPos;
              peg$silentFails++;
              if (input.length > peg$currPos) {
                s10 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s10 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              peg$silentFails--;
              if (s10 === peg$FAILED) {
                s9 = void 0;
              } else {
                peg$currPos = s9;
                s9 = peg$FAILED;
              }
            }
            if (s9 !== peg$FAILED) {
              s8 = [
                s8,
                s9
              ];
              s7 = s8;
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
          } else {
            peg$currPos = s7;
            s7 = peg$FAILED;
          }
          peg$silentFails--;
          if (s7 === peg$FAILED) {
            s6 = void 0;
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          if (s6 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s7 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e8);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s5;
              s5 = peg$f17(s7);
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = peg$currPos;
            s6 = peg$currPos;
            peg$silentFails++;
            s7 = peg$currPos;
            if (input.substr(peg$currPos, 3) === peg$c6) {
              s8 = peg$c6;
              peg$currPos += 3;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e10);
              }
            }
            if (s8 !== peg$FAILED) {
              if (input.charCodeAt(peg$currPos) === 10) {
                s9 = peg$c2;
                peg$currPos++;
              } else {
                s9 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e4);
                }
              }
              if (s9 === peg$FAILED) {
                s9 = peg$currPos;
                peg$silentFails++;
                if (input.length > peg$currPos) {
                  s10 = input.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s10 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e8);
                  }
                }
                peg$silentFails--;
                if (s10 === peg$FAILED) {
                  s9 = void 0;
                } else {
                  peg$currPos = s9;
                  s9 = peg$FAILED;
                }
              }
              if (s9 !== peg$FAILED) {
                s8 = [
                  s8,
                  s9
                ];
                s7 = s8;
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
            peg$silentFails--;
            if (s7 === peg$FAILED) {
              s6 = void 0;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s7 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              if (s7 !== peg$FAILED) {
                peg$savedPos = s5;
                s5 = peg$f17(s7);
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          }
          if (input.substr(peg$currPos, 3) === peg$c6) {
            s5 = peg$c6;
            peg$currPos += 3;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e10);
            }
          }
          if (s5 !== peg$FAILED) {
            if (input.charCodeAt(peg$currPos) === 10) {
              s6 = peg$c2;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e4);
              }
            }
            if (s6 === peg$FAILED) {
              s6 = peg$currPos;
              peg$silentFails++;
              if (input.length > peg$currPos) {
                s7 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              peg$silentFails--;
              if (s7 === peg$FAILED) {
                s6 = void 0;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
            }
            if (s6 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f18(s4);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c6) {
        s1 = peg$c6;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e10);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s2 = peg$f19(s1);
        if (s2) {
          s2 = void 0;
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f20(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseMlldRunFence, "peg$parseMlldRunFence");
  function peg$parseCodeFence() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
    s0 = peg$currPos;
    s1 = peg$parseBacktickSequence();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCodeFenceLangID();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      if (input.charCodeAt(peg$currPos) === 10) {
        s3 = peg$c2;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e4);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = [];
        s5 = peg$currPos;
        s6 = peg$currPos;
        peg$silentFails++;
        s7 = peg$currPos;
        peg$savedPos = peg$currPos;
        s8 = peg$f21(s1, s2);
        if (s8) {
          s8 = void 0;
        } else {
          s8 = peg$FAILED;
        }
        if (s8 !== peg$FAILED) {
          s9 = peg$parseBacktickSequence();
          if (s9 !== peg$FAILED) {
            peg$savedPos = peg$currPos;
            s10 = peg$f22(s1, s2, s9);
            if (s10) {
              s10 = void 0;
            } else {
              s10 = peg$FAILED;
            }
            if (s10 !== peg$FAILED) {
              s8 = [
                s8,
                s9,
                s10
              ];
              s7 = s8;
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
          } else {
            peg$currPos = s7;
            s7 = peg$FAILED;
          }
        } else {
          peg$currPos = s7;
          s7 = peg$FAILED;
        }
        peg$silentFails--;
        if (s7 === peg$FAILED) {
          s6 = void 0;
        } else {
          peg$currPos = s6;
          s6 = peg$FAILED;
        }
        if (s6 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s7 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f23(s1, s2, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          s5 = peg$currPos;
          s6 = peg$currPos;
          peg$silentFails++;
          s7 = peg$currPos;
          peg$savedPos = peg$currPos;
          s8 = peg$f21(s1, s2);
          if (s8) {
            s8 = void 0;
          } else {
            s8 = peg$FAILED;
          }
          if (s8 !== peg$FAILED) {
            s9 = peg$parseBacktickSequence();
            if (s9 !== peg$FAILED) {
              peg$savedPos = peg$currPos;
              s10 = peg$f22(s1, s2, s9);
              if (s10) {
                s10 = void 0;
              } else {
                s10 = peg$FAILED;
              }
              if (s10 !== peg$FAILED) {
                s8 = [
                  s8,
                  s9,
                  s10
                ];
                s7 = s8;
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
          } else {
            peg$currPos = s7;
            s7 = peg$FAILED;
          }
          peg$silentFails--;
          if (s7 === peg$FAILED) {
            s6 = void 0;
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          if (s6 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s7 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e8);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s5;
              s5 = peg$f23(s1, s2, s7);
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        }
        s5 = peg$parseBacktickSequence();
        if (s5 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s6 = peg$f24(s1, s2, s4, s5);
          if (s6) {
            s6 = peg$FAILED;
          } else {
            s6 = void 0;
          }
          if (s6 !== peg$FAILED) {
            if (input.charCodeAt(peg$currPos) === 10) {
              s7 = peg$c2;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e4);
              }
            }
            if (s7 === peg$FAILED) {
              s7 = peg$currPos;
              peg$silentFails++;
              if (input.length > peg$currPos) {
                s8 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              peg$silentFails--;
              if (s8 === peg$FAILED) {
                s7 = void 0;
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f25(s1, s2, s4, s5);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCodeFence, "peg$parseCodeFence");
  function peg$parseCodeFenceLangID() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r3.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e12);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r3.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e12);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f26(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCodeFenceLangID, "peg$parseCodeFenceLangID");
  function peg$parseDirectiveContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f27();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e13);
      }
    }
    return s0;
  }
  __name(peg$parseDirectiveContext, "peg$parseDirectiveContext");
  function peg$parseVariableContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f28();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e14);
      }
    }
    return s0;
  }
  __name(peg$parseVariableContext, "peg$parseVariableContext");
  function peg$parseRHSContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f29();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e15);
      }
    }
    return s0;
  }
  __name(peg$parseRHSContext, "peg$parseRHSContext");
  function peg$parsePlainTextContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f30();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e16);
      }
    }
    return s0;
  }
  __name(peg$parsePlainTextContext, "peg$parsePlainTextContext");
  function peg$parseRunCodeBlockContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f31();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e17);
      }
    }
    return s0;
  }
  __name(peg$parseRunCodeBlockContext, "peg$parseRunCodeBlockContext");
  function peg$parseExecRunRHSContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f32();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e18);
      }
    }
    return s0;
  }
  __name(peg$parseExecRunRHSContext, "peg$parseExecRunRHSContext");
  function peg$parsePathStartingWithVariableContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f33();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e19);
      }
    }
    return s0;
  }
  __name(peg$parsePathStartingWithVariableContext, "peg$parsePathStartingWithVariableContext");
  function peg$parseDirectiveBoundary() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f34();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e20);
      }
    }
    return s0;
  }
  __name(peg$parseDirectiveBoundary, "peg$parseDirectiveBoundary");
  function peg$parseDocumentStart() {
    var s0;
    peg$savedPos = peg$currPos;
    s0 = peg$f35();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseDocumentStart, "peg$parseDocumentStart");
  function peg$parseFrontmatter() {
    var s0, s1, s2, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDocumentStart();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 3) === peg$c8) {
        s2 = peg$c8;
        peg$currPos += 3;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parseHWS();
        s4 = peg$parseLineTerminator();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseFrontmatterContent();
          if (input.substr(peg$currPos, 3) === peg$c8) {
            s6 = peg$c8;
            peg$currPos += 3;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e22);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parseHWS();
            peg$parseLineTerminator();
            peg$savedPos = s0;
            s0 = peg$f36(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e21);
      }
    }
    return s0;
  }
  __name(peg$parseFrontmatter, "peg$parseFrontmatter");
  function peg$parseFrontmatterContent() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    s4 = peg$parseFrontmatterEnd();
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseFrontmatterLine();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f37(s4);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$currPos;
      s3 = peg$currPos;
      peg$silentFails++;
      s4 = peg$parseFrontmatterEnd();
      peg$silentFails--;
      if (s4 === peg$FAILED) {
        s3 = void 0;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseFrontmatterLine();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f37(s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    }
    peg$savedPos = s0;
    s1 = peg$f38(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseFrontmatterContent, "peg$parseFrontmatterContent");
  function peg$parseFrontmatterLine() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r1.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e3);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r1.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e3);
        }
      }
    }
    s2 = peg$parseLineTerminator();
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f39(s1);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseFrontmatterLine, "peg$parseFrontmatterLine");
  function peg$parseFrontmatterEnd() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c8) {
      s1 = peg$c8;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e22);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseHWS();
      s3 = peg$parseLineTerminator();
      if (s3 !== peg$FAILED) {
        s1 = [
          s1,
          s2,
          s3
        ];
        s0 = s1;
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseFrontmatterEnd, "peg$parseFrontmatterEnd");
  function peg$parseStringLiteral() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c9;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e24);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c9;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f40(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    return s0;
  }
  __name(peg$parseStringLiteral, "peg$parseStringLiteral");
  function peg$parseNumberLiteral() {
    var s0, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 45) {
      peg$currPos++;
    } else {
      if (peg$silentFails === 0) {
        peg$fail(peg$e26);
      }
    }
    s2 = [];
    s3 = input.charAt(peg$currPos);
    if (peg$r4.test(s3)) {
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e27);
      }
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r4.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s4 = peg$c11;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e28);
        }
      }
      if (s4 !== peg$FAILED) {
        s5 = [];
        s6 = input.charAt(peg$currPos);
        if (peg$r4.test(s6)) {
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
        if (s6 !== peg$FAILED) {
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = input.charAt(peg$currPos);
            if (peg$r4.test(s6)) {
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e27);
              }
            }
          }
        } else {
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          s4 = [
            s4,
            s5
          ];
          s3 = s4;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f41(s2, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e25);
      }
    }
    return s0;
  }
  __name(peg$parseNumberLiteral, "peg$parseNumberLiteral");
  function peg$parseBooleanLiteral() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c12) {
      s1 = peg$c12;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e30);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f42();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 5) === peg$c13) {
        s1 = peg$c13;
        peg$currPos += 5;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e31);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f43();
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e29);
      }
    }
    return s0;
  }
  __name(peg$parseBooleanLiteral, "peg$parseBooleanLiteral");
  function peg$parseNullLiteral() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c14) {
      s1 = peg$c14;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e33);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f44();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e32);
      }
    }
    return s0;
  }
  __name(peg$parseNullLiteral, "peg$parseNullLiteral");
  function peg$parseWildcardLiteral() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 42) {
      s1 = peg$c15;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e35);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f45();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e34);
      }
    }
    return s0;
  }
  __name(peg$parseWildcardLiteral, "peg$parseWildcardLiteral");
  function peg$parseMultilineTemplateLiteral() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c16) {
      s1 = peg$c16;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e37);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseMultilineTemplateChar();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseMultilineTemplateChar();
      }
      if (input.substr(peg$currPos, 2) === peg$c17) {
        s3 = peg$c17;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e38);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f46(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e36);
      }
    }
    return s0;
  }
  __name(peg$parseMultilineTemplateLiteral, "peg$parseMultilineTemplateLiteral");
  function peg$parseMultilineTemplateChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 2) === peg$c17) {
          s2 = peg$c17;
          peg$currPos += 2;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e38);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f47(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseMultilineTemplateChar, "peg$parseMultilineTemplateChar");
  function peg$parseEscapeSequence() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e40);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = input.charAt(peg$currPos);
      if (peg$r5.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e41);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f48(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e39);
      }
    }
    return s0;
  }
  __name(peg$parseEscapeSequence, "peg$parseEscapeSequence");
  function peg$parseStringEscapeSequence() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e40);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = input.charAt(peg$currPos);
      if (peg$r6.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e43);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f49(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e42);
      }
    }
    return s0;
  }
  __name(peg$parseStringEscapeSequence, "peg$parseStringEscapeSequence");
  function peg$parseBaseTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseBaseChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseBaseChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f50(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e44);
      }
    }
    return s0;
  }
  __name(peg$parseBaseTextSegment, "peg$parseBaseTextSegment");
  function peg$parseBaseChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s2 = input.charAt(peg$currPos);
        if (peg$r7.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e45);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f51(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseBaseChar, "peg$parseBaseChar");
  function peg$parseTemplateTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseTemplateChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseTemplateChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f52(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e46);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateTextSegment, "peg$parseTemplateTextSegment");
  function peg$parseTemplateChar() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 2) === peg$c3) {
          s2 = peg$c3;
          peg$currPos += 2;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e5);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$currPos;
          peg$silentFails++;
          if (input.substr(peg$currPos, 2) === peg$c4) {
            s3 = peg$c4;
            peg$currPos += 2;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          peg$silentFails--;
          if (s3 === peg$FAILED) {
            s2 = void 0;
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
          if (s2 !== peg$FAILED) {
            s3 = peg$currPos;
            peg$silentFails++;
            if (input.substr(peg$currPos, 2) === peg$c5) {
              s4 = peg$c5;
              peg$currPos += 2;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e7);
              }
            }
            peg$silentFails--;
            if (s4 === peg$FAILED) {
              s3 = void 0;
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              s4 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 60) {
                s5 = peg$c19;
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e47);
                }
              }
              peg$silentFails--;
              if (s5 === peg$FAILED) {
                s4 = void 0;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                if (input.length > peg$currPos) {
                  s5 = input.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e8);
                  }
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f53(s5);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseTemplateChar, "peg$parseTemplateChar");
  function peg$parseCommandTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseCommandChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseCommandChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f54(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e48);
      }
    }
    return s0;
  }
  __name(peg$parseCommandTextSegment, "peg$parseCommandTextSegment");
  function peg$parseCommandChar() {
    var s0, s1, s2;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      s2 = input.charAt(peg$currPos);
      if (peg$r8.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e49);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f55(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseCommandChar, "peg$parseCommandChar");
  function peg$parsePathTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parsePathChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parsePathChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f56(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e50);
      }
    }
    return s0;
  }
  __name(peg$parsePathTextSegment, "peg$parsePathTextSegment");
  function peg$parsePathChar() {
    var s0, s1, s2, s3;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$savedPos = peg$currPos;
      s1 = peg$f57();
      if (s1) {
        s1 = void 0;
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        peg$silentFails++;
        s3 = input.charAt(peg$currPos);
        if (peg$r9.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e51);
          }
        }
        peg$silentFails--;
        if (s3 === peg$FAILED) {
          s2 = void 0;
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s3 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f58(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parsePathChar, "peg$parsePathChar");
  function peg$parseSectionTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseSectionChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseSectionChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f59(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e52);
      }
    }
    return s0;
  }
  __name(peg$parseSectionTextSegment, "peg$parseSectionTextSegment");
  function peg$parseSectionChar() {
    var s0, s1, s2;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      s2 = input.charAt(peg$currPos);
      if (peg$r10.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e53);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f60(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseSectionChar, "peg$parseSectionChar");
  function peg$parseEscapedStringContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseEscapedStringChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseEscapedStringChar();
    }
    peg$savedPos = s0;
    s1 = peg$f61(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e54);
    }
    return s0;
  }
  __name(peg$parseEscapedStringContent, "peg$parseEscapedStringContent");
  function peg$parseEscapedStringChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 34) {
          s2 = peg$c20;
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f62(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseEscapedStringChar, "peg$parseEscapedStringChar");
  function peg$parseEscapedSingleStringContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseEscapedSingleStringChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseEscapedSingleStringChar();
    }
    peg$savedPos = s0;
    s1 = peg$f63(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e56);
    }
    return s0;
  }
  __name(peg$parseEscapedSingleStringContent, "peg$parseEscapedSingleStringContent");
  function peg$parseEscapedSingleStringChar() {
    var s0, s1, s2;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 39) {
        s2 = peg$c9;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f64(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseEscapedSingleStringChar, "peg$parseEscapedSingleStringChar");
  function peg$parseEscapedBacktickStringContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseEscapedBacktickStringChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseEscapedBacktickStringChar();
    }
    peg$savedPos = s0;
    s1 = peg$f65(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e57);
    }
    return s0;
  }
  __name(peg$parseEscapedBacktickStringContent, "peg$parseEscapedBacktickStringContent");
  function peg$parseEscapedBacktickStringChar() {
    var s0, s1, s2;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 96) {
        s2 = peg$c21;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e58);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f66(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseEscapedBacktickStringChar, "peg$parseEscapedBacktickStringChar");
  function peg$parsePathSeparator() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c22;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e60);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f67();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e59);
      }
    }
    return s0;
  }
  __name(peg$parsePathSeparator, "peg$parsePathSeparator");
  function peg$parseDotSeparator() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 46) {
      s1 = peg$c11;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e28);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f68();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e61);
      }
    }
    return s0;
  }
  __name(peg$parseDotSeparator, "peg$parseDotSeparator");
  function peg$parseSectionMarker() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 35) {
      s1 = peg$c23;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e63);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f69();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e62);
      }
    }
    return s0;
  }
  __name(peg$parseSectionMarker, "peg$parseSectionMarker");
  function peg$parseBaseIdentifier() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = input.charAt(peg$currPos);
    if (peg$r11.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e65);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r12.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e66);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r12.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e66);
          }
        }
      }
      peg$savedPos = s0;
      s0 = peg$f70(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e64);
      }
    }
    return s0;
  }
  __name(peg$parseBaseIdentifier, "peg$parseBaseIdentifier");
  function peg$parseSpecialPathChar() {
    var s0;
    peg$silentFails++;
    s0 = input.charAt(peg$currPos);
    if (peg$r13.test(s0)) {
      peg$currPos++;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e68);
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e67);
      }
    }
    return s0;
  }
  __name(peg$parseSpecialPathChar, "peg$parseSpecialPathChar");
  function peg$parsePathSeparatorToken() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c22;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e60);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f71();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e69);
      }
    }
    return s0;
  }
  __name(peg$parsePathSeparatorToken, "peg$parsePathSeparatorToken");
  function peg$parseDotSeparatorToken() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 46) {
      s1 = peg$c11;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e28);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f72();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e70);
      }
    }
    return s0;
  }
  __name(peg$parseDotSeparatorToken, "peg$parseDotSeparatorToken");
  function peg$parseSectionMarkerToken() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r2.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e9);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r2.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e9);
        }
      }
    }
    if (input.charCodeAt(peg$currPos) === 35) {
      s2 = peg$c23;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e63);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f73();
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e71);
      }
    }
    return s0;
  }
  __name(peg$parseSectionMarkerToken, "peg$parseSectionMarkerToken");
  function peg$parseBacktickSequence() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    if (input.charCodeAt(peg$currPos) === 96) {
      s2 = peg$c21;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e58);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        if (input.charCodeAt(peg$currPos) === 96) {
          s2 = peg$c21;
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e58);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s2 = peg$f74(s1);
      if (s2) {
        s2 = void 0;
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f75(s1);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e72);
      }
    }
    return s0;
  }
  __name(peg$parseBacktickSequence, "peg$parseBacktickSequence");
  function peg$parseReservedDirective() {
    var s0;
    peg$silentFails++;
    if (input.substr(peg$currPos, 4) === peg$c24) {
      s0 = peg$c24;
      peg$currPos += 4;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e74);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 5) === peg$c25) {
        s0 = peg$c25;
        peg$currPos += 5;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e75);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c26) {
          s0 = peg$c26;
          peg$currPos += 4;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e76);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 4) === peg$c27) {
            s0 = peg$c27;
            peg$currPos += 4;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e77);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 5) === peg$c28) {
              s0 = peg$c28;
              peg$currPos += 5;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e78);
              }
            }
            if (s0 === peg$FAILED) {
              if (input.substr(peg$currPos, 7) === peg$c29) {
                s0 = peg$c29;
                peg$currPos += 7;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e79);
                }
              }
              if (s0 === peg$FAILED) {
                if (input.substr(peg$currPos, 5) === peg$c30) {
                  s0 = peg$c30;
                  peg$currPos += 5;
                } else {
                  s0 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e80);
                  }
                }
                if (s0 === peg$FAILED) {
                  if (input.substr(peg$currPos, 7) === peg$c31) {
                    s0 = peg$c31;
                    peg$currPos += 7;
                  } else {
                    s0 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e81);
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e73);
      }
    }
    return s0;
  }
  __name(peg$parseReservedDirective, "peg$parseReservedDirective");
  function peg$parse_() {
    var s0, s1;
    peg$silentFails++;
    s0 = [];
    s1 = input.charAt(peg$currPos);
    if (peg$r14.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e83);
      }
    }
    while (s1 !== peg$FAILED) {
      s0.push(s1);
      s1 = input.charAt(peg$currPos);
      if (peg$r14.test(s1)) {
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e83);
        }
      }
    }
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e82);
    }
    return s0;
  }
  __name(peg$parse_, "peg$parse_");
  function peg$parse__() {
    var s0, s1;
    peg$silentFails++;
    s0 = [];
    s1 = input.charAt(peg$currPos);
    if (peg$r15.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e85);
      }
    }
    if (s1 !== peg$FAILED) {
      while (s1 !== peg$FAILED) {
        s0.push(s1);
        s1 = input.charAt(peg$currPos);
        if (peg$r15.test(s1)) {
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e85);
          }
        }
      }
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    return s0;
  }
  __name(peg$parse__, "peg$parse__");
  function peg$parseHWS() {
    var s0, s1;
    peg$silentFails++;
    s0 = [];
    s1 = input.charAt(peg$currPos);
    if (peg$r16.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e87);
      }
    }
    while (s1 !== peg$FAILED) {
      s0.push(s1);
      s1 = input.charAt(peg$currPos);
      if (peg$r16.test(s1)) {
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e87);
        }
      }
    }
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e86);
    }
    return s0;
  }
  __name(peg$parseHWS, "peg$parseHWS");
  function peg$parseLineTerminator() {
    var s0;
    if (input.charCodeAt(peg$currPos) === 10) {
      s0 = peg$c2;
      peg$currPos++;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e4);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c32) {
        s0 = peg$c32;
        peg$currPos += 2;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e88);
        }
      }
      if (s0 === peg$FAILED) {
        s0 = input.charAt(peg$currPos);
        if (peg$r17.test(s0)) {
          peg$currPos++;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e89);
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseLineTerminator, "peg$parseLineTerminator");
  function peg$parseEOF() {
    var s0, s1;
    s0 = peg$currPos;
    peg$silentFails++;
    if (input.length > peg$currPos) {
      s1 = input.charAt(peg$currPos);
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e8);
      }
    }
    peg$silentFails--;
    if (s1 === peg$FAILED) {
      s0 = void 0;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseEOF, "peg$parseEOF");
  function peg$parseTextUntilNewline() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r18.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e90);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r18.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e90);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f76(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseTextUntilNewline, "peg$parseTextUntilNewline");
  function peg$parseEndOfLine() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r0.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e0);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r0.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
    }
    s2 = peg$parseLineTerminator();
    if (s2 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s3 = peg$f77(s1, s2);
      if (s3) {
        s3 = void 0;
      } else {
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f78(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = input.charAt(peg$currPos);
      if (peg$r0.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r0.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
      }
      s2 = peg$parseLineTerminator();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f79(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = [];
        s2 = input.charAt(peg$currPos);
        if (peg$r0.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = input.charAt(peg$currPos);
          if (peg$r0.test(s2)) {
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e0);
            }
          }
        }
        peg$savedPos = peg$currPos;
        s2 = peg$f80(s1);
        if (s2) {
          s2 = void 0;
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f81(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseEndOfLine, "peg$parseEndOfLine");
  function peg$parseAlligatorExpression() {
    var s0, s1, s3, s4, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 60) {
      s1 = peg$c19;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e47);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseAlligatorSource();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseAlligatorOptions();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 62) {
          s6 = peg$c33;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e92);
          }
        }
        if (s6 !== peg$FAILED) {
          s7 = peg$parseCondensedPipeChain();
          if (s7 === peg$FAILED) {
            s7 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f82(s3, s4, s7);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e91);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorExpression, "peg$parseAlligatorExpression");
  function peg$parseAlligatorSource() {
    var s0;
    s0 = peg$parseAlligatorURL();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAlligatorPath();
    }
    return s0;
  }
  __name(peg$parseAlligatorSource, "peg$parseAlligatorSource");
  function peg$parseAlligatorURL() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c34) {
      s1 = peg$c34;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e94);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c35) {
        s1 = peg$c35;
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e95);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 3) === peg$c36) {
        s2 = peg$c36;
        peg$currPos += 3;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e96);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseURLHost();
        if (s3 !== peg$FAILED) {
          s4 = peg$parseURLPath();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f83(s1, s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e93);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorURL, "peg$parseAlligatorURL");
  function peg$parseAlligatorPath() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseAlligatorQuotedPath();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAlligatorUnquotedPath();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e97);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorPath, "peg$parseAlligatorPath");
  function peg$parseAlligatorQuotedPath() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseQuotedPathChar();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseQuotedPathChar();
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f84(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e98);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorQuotedPath, "peg$parseAlligatorQuotedPath");
  function peg$parseAlligatorUnquotedPath() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseAlligatorPathParts();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f85(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e99);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorUnquotedPath, "peg$parseAlligatorUnquotedPath");
  function peg$parseQuotedPathChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 34) {
      s2 = peg$c20;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f86(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseQuotedPathChar, "peg$parseQuotedPathChar");
  function peg$parseAlligatorPathParts() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseAlligatorVariable();
    if (s2 === peg$FAILED) {
      s2 = peg$parseAlligatorPathSegment();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathSeparator();
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseAlligatorVariable();
        if (s2 === peg$FAILED) {
          s2 = peg$parseAlligatorPathSegment();
          if (s2 === peg$FAILED) {
            s2 = peg$parsePathSeparator();
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f87(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e100);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorPathParts, "peg$parseAlligatorPathParts");
  function peg$parseAlligatorVariable() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseAnyFieldAccess();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseAnyFieldAccess();
        }
        peg$savedPos = s0;
        s0 = peg$f88(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e101);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorVariable, "peg$parseAlligatorVariable");
  function peg$parseAlligatorPathSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseAlligatorPathChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseAlligatorPathChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f89(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e103);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorPathSegment, "peg$parseAlligatorPathSegment");
  function peg$parseAlligatorPathChar() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 62) {
      s2 = peg$c33;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e92);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 35) {
        s3 = peg$c23;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e63);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 64) {
          s4 = peg$c37;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e102);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$currPos;
          peg$silentFails++;
          if (input.substr(peg$currPos, 4) === peg$c38) {
            s5 = peg$c38;
            peg$currPos += 4;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e104);
            }
          }
          peg$silentFails--;
          if (s5 === peg$FAILED) {
            s4 = void 0;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$currPos;
            peg$silentFails++;
            s6 = peg$parsePathSeparator();
            peg$silentFails--;
            if (s6 === peg$FAILED) {
              s5 = void 0;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s6 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              if (s6 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f90(s6);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAlligatorPathChar, "peg$parseAlligatorPathChar");
  function peg$parseAlligatorOptions() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    s2 = peg$parseSectionClause();
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseAsTransform();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f91(s2, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$parse_();
      s2 = peg$parseSectionClause();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseAsRename();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f92(s2, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        peg$parse_();
        s2 = peg$parseSectionClause();
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f93(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          peg$parse_();
          s2 = peg$parseAsTransform();
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f94(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorOptions, "peg$parseAlligatorOptions");
  function peg$parseSectionClause() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 35) {
      s1 = peg$c23;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e63);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseAlligatorSectionIdentifier();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f95(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSectionClause, "peg$parseSectionClause");
  function peg$parseAlligatorSectionIdentifier() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseFieldAccess();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseFieldAccess();
        }
        peg$savedPos = s0;
        s0 = peg$f96(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$parseAlligatorSectionChar();
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseAlligatorSectionChar();
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f97(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e105);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorSectionIdentifier, "peg$parseAlligatorSectionIdentifier");
  function peg$parseAlligatorSectionChar() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 62) {
      s2 = peg$c33;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e92);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.substr(peg$currPos, 2) === peg$c39) {
        s3 = peg$c39;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e106);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s3 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f98(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAlligatorSectionChar, "peg$parseAlligatorSectionChar");
  function peg$parseAsRename() {
    var s0, s2, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c39) {
      s2 = peg$c39;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e106);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseAsSectionRenameString();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f99(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e107);
      }
    }
    return s0;
  }
  __name(peg$parseAsRename, "peg$parseAsRename");
  function peg$parseAsSectionRenameString() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseRenameStringPart();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseRenameStringPart();
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f100(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 96) {
        s1 = peg$c21;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e58);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseRenameBacktickPart();
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseRenameBacktickPart();
        }
        if (input.charCodeAt(peg$currPos) === 96) {
          s3 = peg$c21;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e58);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f101(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e108);
      }
    }
    return s0;
  }
  __name(peg$parseAsSectionRenameString, "peg$parseAsSectionRenameString");
  function peg$parseRenameStringPart() {
    var s0, s1, s2, s3, s4;
    s0 = peg$parseFileReferenceInterpolation();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$currPos;
      s3 = peg$currPos;
      peg$silentFails++;
      s4 = input.charAt(peg$currPos);
      if (peg$r19.test(s4)) {
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e109);
        }
      }
      peg$silentFails--;
      if (s4 === peg$FAILED) {
        s3 = void 0;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s4 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f102(s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$currPos;
          s3 = peg$currPos;
          peg$silentFails++;
          s4 = input.charAt(peg$currPos);
          if (peg$r19.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e109);
            }
          }
          peg$silentFails--;
          if (s4 === peg$FAILED) {
            s3 = void 0;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
          if (s3 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s4 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e8);
              }
            }
            if (s4 !== peg$FAILED) {
              peg$savedPos = s2;
              s2 = peg$f102(s4);
            } else {
              peg$currPos = s2;
              s2 = peg$FAILED;
            }
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f103(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseRenameStringPart, "peg$parseRenameStringPart");
  function peg$parseRenameBacktickPart() {
    var s0, s1, s2, s3, s4;
    s0 = peg$parseFileReferenceInterpolation();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c37;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e102);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseBaseIdentifier();
        if (s2 !== peg$FAILED) {
          s3 = [];
          s4 = peg$parseAnyFieldAccess();
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$parseAnyFieldAccess();
          }
          peg$savedPos = s0;
          s0 = peg$f104(s2, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = [];
        s2 = peg$currPos;
        s3 = peg$currPos;
        peg$silentFails++;
        s4 = input.charAt(peg$currPos);
        if (peg$r20.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e110);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f105(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          while (s2 !== peg$FAILED) {
            s1.push(s2);
            s2 = peg$currPos;
            s3 = peg$currPos;
            peg$silentFails++;
            s4 = input.charAt(peg$currPos);
            if (peg$r20.test(s4)) {
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e110);
              }
            }
            peg$silentFails--;
            if (s4 === peg$FAILED) {
              s3 = void 0;
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s4 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              if (s4 !== peg$FAILED) {
                peg$savedPos = s2;
                s2 = peg$f105(s4);
              } else {
                peg$currPos = s2;
                s2 = peg$FAILED;
              }
            } else {
              peg$currPos = s2;
              s2 = peg$FAILED;
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f106(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseRenameBacktickPart, "peg$parseRenameBacktickPart");
  function peg$parseAsTransform() {
    var s0, s2, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c39) {
      s2 = peg$c39;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e106);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseAlligatorTransformTemplate();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f107(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e111);
      }
    }
    return s0;
  }
  __name(peg$parseAsTransform, "peg$parseAsTransform");
  function peg$parseAlligatorTransformTemplate() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 96) {
      s1 = peg$c21;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e58);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseBacktickTransformPart();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseBacktickTransformPart();
      }
      if (input.charCodeAt(peg$currPos) === 96) {
        s3 = peg$c21;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e58);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f108(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e112);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorTransformTemplate, "peg$parseAlligatorTransformTemplate");
  function peg$parseBacktickTransformPart() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c40) {
      s1 = peg$c40;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e113);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTransformFieldChain();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f109(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c37;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e102);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseBaseIdentifier();
        if (s2 !== peg$FAILED) {
          s3 = [];
          s4 = peg$parseAnyFieldAccess();
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$parseAnyFieldAccess();
          }
          peg$savedPos = s0;
          s0 = peg$f110(s2, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = [];
        s2 = peg$currPos;
        s3 = peg$currPos;
        peg$silentFails++;
        s4 = input.charAt(peg$currPos);
        if (peg$r20.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e110);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f111(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          while (s2 !== peg$FAILED) {
            s1.push(s2);
            s2 = peg$currPos;
            s3 = peg$currPos;
            peg$silentFails++;
            s4 = input.charAt(peg$currPos);
            if (peg$r20.test(s4)) {
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e110);
              }
            }
            peg$silentFails--;
            if (s4 === peg$FAILED) {
              s3 = void 0;
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s4 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              if (s4 !== peg$FAILED) {
                peg$savedPos = s2;
                s2 = peg$f111(s4);
              } else {
                peg$currPos = s2;
                s2 = peg$FAILED;
              }
            } else {
              peg$currPos = s2;
              s2 = peg$FAILED;
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f112(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseBacktickTransformPart, "peg$parseBacktickTransformPart");
  function peg$parseTransformFieldChain() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 46) {
      s1 = peg$c11;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e28);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTransformField();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 46) {
          s5 = peg$c11;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e28);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseTransformField();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f113(s2, s6);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 46) {
            s5 = peg$c11;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e28);
            }
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$parseTransformField();
            if (s6 !== peg$FAILED) {
              peg$savedPos = s4;
              s4 = peg$f113(s2, s6);
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
        peg$savedPos = s0;
        s0 = peg$f114(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTransformFieldChain, "peg$parseTransformFieldChain");
  function peg$parseTransformField() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f115(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseTransformField, "peg$parseTransformField");
  function peg$parseURLHost() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r21.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e114);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r21.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e114);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f116(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseURLHost, "peg$parseURLHost");
  function peg$parseURLPath() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c22;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e60);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r22.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r22.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e115);
          }
        }
      }
      peg$savedPos = s0;
      s0 = peg$f117(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseURLPath, "peg$parseURLPath");
  function peg$parseArrayLiteral() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c41;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 93) {
        s3 = peg$c42;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e118);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f118();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c41;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e117);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseArrayItems();
        if (s3 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 93) {
            s5 = peg$c42;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e118);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f119(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e116);
      }
    }
    return s0;
  }
  __name(peg$parseArrayLiteral, "peg$parseArrayLiteral");
  function peg$parseArrayItems() {
    var s0, s1, s2, s3, s5, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseArrayValue();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseArrayValue();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f120(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseArrayValue();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f120(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      s3 = peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        peg$currPos++;
      } else {
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      peg$savedPos = s0;
      s0 = peg$f121(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e119);
      }
    }
    return s0;
  }
  __name(peg$parseArrayItems, "peg$parseArrayItems");
  function peg$parseArrayValue() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseAlligatorExpression();
    if (s0 === peg$FAILED) {
      s0 = peg$parseArrayLiteral();
      if (s0 === peg$FAILED) {
        s0 = peg$parseDataObjectLiteral();
        if (s0 === peg$FAILED) {
          s0 = peg$parseExecInvocationPattern();
          if (s0 === peg$FAILED) {
            s0 = peg$parseVariableWithTail();
            if (s0 === peg$FAILED) {
              s0 = peg$parseAtVar();
              if (s0 === peg$FAILED) {
                s0 = peg$parseTemplateStyleInterpolation();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseCodeExecution();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseNestedDirective();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseDataString();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseNumberLiteral();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseBooleanLiteral();
                          if (s0 === peg$FAILED) {
                            s0 = peg$parseNullLiteral();
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e121);
      }
    }
    return s0;
  }
  __name(peg$parseArrayValue, "peg$parseArrayValue");
  function peg$parseCommandWithBases() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseCommandSegmentList();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f122(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCommandWithBases, "peg$parseCommandWithBases");
  function peg$parseCommandSegmentList() {
    var s0, s1, s2, s3, s4, s6;
    s0 = peg$currPos;
    s1 = peg$parseCommandPipeline();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommandOperator();
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseCommandPipeline();
        if (s6 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f123(s1, s4, s6);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommandOperator();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseCommandPipeline();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f123(s1, s4, s6);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f124(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCommandSegmentList, "peg$parseCommandSegmentList");
  function peg$parseCommandOperator() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 124) {
      s2 = peg$c44;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e122);
      }
    }
    if (s2 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c45) {
        s2 = peg$c45;
        peg$currPos += 2;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e123);
        }
      }
      if (s2 === peg$FAILED) {
        if (input.substr(peg$currPos, 2) === peg$c46) {
          s2 = peg$c46;
          peg$currPos += 2;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e124);
          }
        }
        if (s2 === peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 59) {
            s2 = peg$c47;
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e125);
            }
          }
        }
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f125(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCommandOperator, "peg$parseCommandOperator");
  function peg$parseCommandPipeline() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseCommandBaseDetection();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCommandArguments();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f126(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCommandPipeline, "peg$parseCommandPipeline");
  function peg$parseCommandArguments() {
    var s0, s2;
    s0 = peg$currPos;
    peg$parse_();
    s2 = peg$parseCommandArgumentParts();
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f127(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCommandArguments, "peg$parseCommandArguments");
  function peg$parseCommandArgumentParts() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseCommandVariableRef();
    if (s2 === peg$FAILED) {
      s2 = peg$parseCommandArgumentText();
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseCommandVariableRef();
        if (s2 === peg$FAILED) {
          s2 = peg$parseCommandArgumentText();
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f128(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCommandArgumentParts, "peg$parseCommandArgumentParts");
  function peg$parseCommandVariableRef() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f129(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCommandVariableRef, "peg$parseCommandVariableRef");
  function peg$parseCommandArgumentText() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    s3 = [];
    s4 = input.charAt(peg$currPos);
    if (peg$r2.test(s4)) {
      peg$currPos++;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e9);
      }
    }
    while (s4 !== peg$FAILED) {
      s3.push(s4);
      s4 = input.charAt(peg$currPos);
      if (peg$r2.test(s4)) {
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e9);
        }
      }
    }
    s4 = [];
    s5 = input.charAt(peg$currPos);
    if (peg$r23.test(s5)) {
      peg$currPos++;
    } else {
      s5 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e126);
      }
    }
    if (s5 !== peg$FAILED) {
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = input.charAt(peg$currPos);
        if (peg$r23.test(s5)) {
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e126);
          }
        }
      }
    } else {
      s4 = peg$FAILED;
    }
    if (s4 !== peg$FAILED) {
      s5 = [];
      s6 = input.charAt(peg$currPos);
      if (peg$r2.test(s6)) {
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e9);
        }
      }
      while (s6 !== peg$FAILED) {
        s5.push(s6);
        s6 = input.charAt(peg$currPos);
        if (peg$r2.test(s6)) {
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e9);
          }
        }
      }
      s3 = [
        s3,
        s4,
        s5
      ];
      s2 = s3;
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f130(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCommandArgumentText, "peg$parseCommandArgumentText");
  function peg$parseCommandBaseDetection() {
    var s0;
    s0 = peg$parseScriptRunnerCommand();
    if (s0 === peg$FAILED) {
      s0 = peg$parseSpecialCommand();
      if (s0 === peg$FAILED) {
        s0 = peg$parseSimpleCommand();
      }
    }
    return s0;
  }
  __name(peg$parseCommandBaseDetection, "peg$parseCommandBaseDetection");
  function peg$parseScriptRunnerCommand() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parsePackageManager();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 3) === peg$c48) {
        s3 = peg$c48;
        peg$currPos += 3;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e127);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseScriptName();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f131(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c49) {
        s1 = peg$c49;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e128);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parsePackageName();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f132(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseScriptRunnerCommand, "peg$parseScriptRunnerCommand");
  function peg$parsePackageManager() {
    var s0;
    if (input.substr(peg$currPos, 3) === peg$c50) {
      s0 = peg$c50;
      peg$currPos += 3;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c51) {
        s0 = peg$c51;
        peg$currPos += 4;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e130);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c52) {
          s0 = peg$c52;
          peg$currPos += 4;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 3) === peg$c53) {
            s0 = peg$c53;
            peg$currPos += 3;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e132);
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parsePackageManager, "peg$parsePackageManager");
  function peg$parseScriptName() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = input.charAt(peg$currPos);
    if (peg$r24.test(s3)) {
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e133);
      }
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r24.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e133);
          }
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s3 = [];
      s4 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 58) {
        s5 = peg$c54;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e134);
        }
      }
      if (s5 !== peg$FAILED) {
        s6 = [];
        s7 = input.charAt(peg$currPos);
        if (peg$r24.test(s7)) {
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e133);
          }
        }
        if (s7 !== peg$FAILED) {
          while (s7 !== peg$FAILED) {
            s6.push(s7);
            s7 = input.charAt(peg$currPos);
            if (peg$r24.test(s7)) {
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e133);
              }
            }
          }
        } else {
          s6 = peg$FAILED;
        }
        if (s6 !== peg$FAILED) {
          s5 = [
            s5,
            s6
          ];
          s4 = s5;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      } else {
        peg$currPos = s4;
        s4 = peg$FAILED;
      }
      while (s4 !== peg$FAILED) {
        s3.push(s4);
        s4 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 58) {
          s5 = peg$c54;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e134);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = [];
          s7 = input.charAt(peg$currPos);
          if (peg$r24.test(s7)) {
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e133);
            }
          }
          if (s7 !== peg$FAILED) {
            while (s7 !== peg$FAILED) {
              s6.push(s7);
              s7 = input.charAt(peg$currPos);
              if (peg$r24.test(s7)) {
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e133);
                }
              }
            }
          } else {
            s6 = peg$FAILED;
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      }
      s2 = [
        s2,
        s3
      ];
      s1 = s2;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s0 = input.substring(s0, peg$currPos);
    } else {
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseScriptName, "peg$parseScriptName");
  function peg$parsePackageName() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    s1 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s2 = peg$c37;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = [];
      s4 = input.charAt(peg$currPos);
      if (peg$r24.test(s4)) {
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e133);
        }
      }
      if (s4 !== peg$FAILED) {
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = input.charAt(peg$currPos);
          if (peg$r24.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e133);
            }
          }
        }
      } else {
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 47) {
          s4 = peg$c22;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e60);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = [];
          s6 = input.charAt(peg$currPos);
          if (peg$r24.test(s6)) {
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e133);
            }
          }
          if (s6 !== peg$FAILED) {
            while (s6 !== peg$FAILED) {
              s5.push(s6);
              s6 = input.charAt(peg$currPos);
              if (peg$r24.test(s6)) {
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e133);
                }
              }
            }
          } else {
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            s2 = [
              s2,
              s3,
              s4,
              s5
            ];
            s1 = s2;
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s0 = input.substring(s0, peg$currPos);
    } else {
      s0 = s1;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = input.charAt(peg$currPos);
      if (peg$r24.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e133);
        }
      }
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = input.charAt(peg$currPos);
          if (peg$r24.test(s2)) {
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e133);
            }
          }
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        s0 = input.substring(s0, peg$currPos);
      } else {
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parsePackageName, "peg$parsePackageName");
  function peg$parseSpecialCommand() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parsePythonCommand();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c55) {
        s3 = peg$c55;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e135);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseCommandModuleName();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f133(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseShellCommand();
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseInlineFlag();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f134(s1, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseBuildTool();
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$parseBuildTarget();
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f135(s1, s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseSpecialCommand, "peg$parseSpecialCommand");
  function peg$parsePythonCommand() {
    var s0;
    if (input.substr(peg$currPos, 6) === peg$c56) {
      s0 = peg$c56;
      peg$currPos += 6;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e136);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 7) === peg$c57) {
        s0 = peg$c57;
        peg$currPos += 7;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e137);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 7) === peg$c58) {
          s0 = peg$c58;
          peg$currPos += 7;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e138);
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parsePythonCommand, "peg$parsePythonCommand");
  function peg$parseCommandModuleName() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = input.charAt(peg$currPos);
    if (peg$r11.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e65);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = [];
      s4 = input.charAt(peg$currPos);
      if (peg$r12.test(s4)) {
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e66);
        }
      }
      while (s4 !== peg$FAILED) {
        s3.push(s4);
        s4 = input.charAt(peg$currPos);
        if (peg$r12.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e66);
          }
        }
      }
      s4 = [];
      s5 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s6 = peg$c11;
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e28);
        }
      }
      if (s6 !== peg$FAILED) {
        s7 = input.charAt(peg$currPos);
        if (peg$r11.test(s7)) {
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e65);
          }
        }
        if (s7 !== peg$FAILED) {
          s8 = [];
          s9 = input.charAt(peg$currPos);
          if (peg$r12.test(s9)) {
            peg$currPos++;
          } else {
            s9 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e66);
            }
          }
          while (s9 !== peg$FAILED) {
            s8.push(s9);
            s9 = input.charAt(peg$currPos);
            if (peg$r12.test(s9)) {
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e66);
              }
            }
          }
          s6 = [
            s6,
            s7,
            s8
          ];
          s5 = s6;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 46) {
          s6 = peg$c11;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e28);
          }
        }
        if (s6 !== peg$FAILED) {
          s7 = input.charAt(peg$currPos);
          if (peg$r11.test(s7)) {
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e65);
            }
          }
          if (s7 !== peg$FAILED) {
            s8 = [];
            s9 = input.charAt(peg$currPos);
            if (peg$r12.test(s9)) {
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e66);
              }
            }
            while (s9 !== peg$FAILED) {
              s8.push(s9);
              s9 = input.charAt(peg$currPos);
              if (peg$r12.test(s9)) {
                peg$currPos++;
              } else {
                s9 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e66);
                }
              }
            }
            s6 = [
              s6,
              s7,
              s8
            ];
            s5 = s6;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s2 = [
        s2,
        s3,
        s4
      ];
      s1 = s2;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s0 = input.substring(s0, peg$currPos);
    } else {
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseCommandModuleName, "peg$parseCommandModuleName");
  function peg$parseShellCommand() {
    var s0;
    if (input.substr(peg$currPos, 4) === peg$c59) {
      s0 = peg$c59;
      peg$currPos += 4;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e139);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c60) {
        s0 = peg$c60;
        peg$currPos += 2;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e140);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c61) {
          s0 = peg$c61;
          peg$currPos += 4;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e141);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 3) === peg$c62) {
            s0 = peg$c62;
            peg$currPos += 3;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e142);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c63) {
              s0 = peg$c63;
              peg$currPos += 4;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e143);
              }
            }
            if (s0 === peg$FAILED) {
              if (input.substr(peg$currPos, 4) === peg$c64) {
                s0 = peg$c64;
                peg$currPos += 4;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e144);
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseShellCommand, "peg$parseShellCommand");
  function peg$parseInlineFlag() {
    var s0;
    if (input.substr(peg$currPos, 2) === peg$c65) {
      s0 = peg$c65;
      peg$currPos += 2;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e145);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c66) {
        s0 = peg$c66;
        peg$currPos += 2;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e146);
        }
      }
    }
    return s0;
  }
  __name(peg$parseInlineFlag, "peg$parseInlineFlag");
  function peg$parseBuildTool() {
    var s0;
    if (input.substr(peg$currPos, 4) === peg$c67) {
      s0 = peg$c67;
      peg$currPos += 4;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e147);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 5) === peg$c68) {
        s0 = peg$c68;
        peg$currPos += 5;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e148);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 2) === peg$c69) {
          s0 = peg$c69;
          peg$currPos += 2;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e149);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 6) === peg$c70) {
            s0 = peg$c70;
            peg$currPos += 6;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e150);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 5) === peg$c71) {
              s0 = peg$c71;
              peg$currPos += 5;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e151);
              }
            }
            if (s0 === peg$FAILED) {
              if (input.substr(peg$currPos, 3) === peg$c72) {
                s0 = peg$c72;
                peg$currPos += 3;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e152);
                }
              }
              if (s0 === peg$FAILED) {
                if (input.substr(peg$currPos, 4) === peg$c73) {
                  s0 = peg$c73;
                  peg$currPos += 4;
                } else {
                  s0 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e153);
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseBuildTool, "peg$parseBuildTool");
  function peg$parseBuildTarget() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r25.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e154);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r25.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e154);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s0 = input.substring(s0, peg$currPos);
    } else {
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseBuildTarget, "peg$parseBuildTarget");
  function peg$parseSimpleCommand() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseCommandWord();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f136(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseSimpleCommand, "peg$parseSimpleCommand");
  function peg$parseCommandWord() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r26.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e155);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r26.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e155);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s0 = input.substring(s0, peg$currPos);
    } else {
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseCommandWord, "peg$parseCommandWord");
  function peg$parseCommandReference() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseCommandArgs();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f137(s1, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e156);
      }
    }
    return s0;
  }
  __name(peg$parseCommandReference, "peg$parseCommandReference");
  function peg$parseCommandArgs() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c74;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e158);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseCommandArgumentList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 41) {
        s5 = peg$c75;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e159);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f138(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e157);
      }
    }
    return s0;
  }
  __name(peg$parseCommandArgs, "peg$parseCommandArgs");
  function peg$parseCommandArgumentList() {
    var s0, s1, s2, s3, s5, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseCommandArgument();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseCommandArgument();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f139(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseCommandArgument();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f139(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f140(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e160);
      }
    }
    return s0;
  }
  __name(peg$parseCommandArgumentList, "peg$parseCommandArgumentList");
  function peg$parseCommandArgument() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$parseCommandTemplateArgument();
    if (s0 === peg$FAILED) {
      s0 = peg$parseBacktickTemplateArgument();
      if (s0 === peg$FAILED) {
        s0 = peg$parseNestedExecInvocation();
        if (s0 === peg$FAILED) {
          s0 = peg$parseDataObjectLiteral();
          if (s0 === peg$FAILED) {
            s0 = peg$parseArrayLiteral();
            if (s0 === peg$FAILED) {
              s0 = peg$parseAlligatorExpression();
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDataString();
                if (s1 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s1 = peg$f141(s1);
                }
                s0 = s1;
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseVariableNoTail();
                  if (s1 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s1 = peg$f142(s1);
                  }
                  s0 = s1;
                  if (s0 === peg$FAILED) {
                    s0 = peg$parsePrimitiveValue();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseEscapedArgument();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseRawArgument();
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e161);
      }
    }
    return s0;
  }
  __name(peg$parseCommandArgument, "peg$parseCommandArgument");
  function peg$parseNestedExecInvocation() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$parseCommandArgs();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f143(s2, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e162);
      }
    }
    return s0;
  }
  __name(peg$parseNestedExecInvocation, "peg$parseNestedExecInvocation");
  function peg$parseCommandTemplateArgument() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c5) {
      s1 = peg$c5;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e7);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseCommandTemplateContent();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseCommandTemplateContent();
      }
      if (input.substr(peg$currPos, 2) === peg$c5) {
        s3 = peg$c5;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e7);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f144(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e163);
      }
    }
    return s0;
  }
  __name(peg$parseCommandTemplateArgument, "peg$parseCommandTemplateArgument");
  function peg$parseBacktickTemplateArgument() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseBacktickTemplate();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f145(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e164);
      }
    }
    return s0;
  }
  __name(peg$parseBacktickTemplateArgument, "peg$parseBacktickTemplateArgument");
  function peg$parseBacktickTemplate() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 96) {
      s1 = peg$c21;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e58);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseBacktickInterpolation();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseBacktickInterpolation();
      }
      if (input.charCodeAt(peg$currPos) === 96) {
        s3 = peg$c21;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e58);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f146(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e165);
      }
    }
    return s0;
  }
  __name(peg$parseBacktickTemplate, "peg$parseBacktickTemplate");
  function peg$parseCommandTemplateContent() {
    var s0, s1, s2;
    s0 = peg$parseInterpolationVar();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$parseCommandTemplateChar();
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseCommandTemplateChar();
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f147(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseCommandTemplateContent, "peg$parseCommandTemplateContent");
  function peg$parseCommandTemplateChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    if (input.substr(peg$currPos, 2) === peg$c4) {
      s2 = peg$c4;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e6);
      }
    }
    if (s2 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c5) {
        s2 = peg$c5;
        peg$currPos += 2;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e7);
        }
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f148(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCommandTemplateChar, "peg$parseCommandTemplateChar");
  function peg$parseEscapedArgument() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseEscapedArgChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseEscapedArgChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f149(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e166);
      }
    }
    return s0;
  }
  __name(peg$parseEscapedArgument, "peg$parseEscapedArgument");
  function peg$parseEscapedArgChar() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e40);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f150(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      s2 = input.charAt(peg$currPos);
      if (peg$r27.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e167);
        }
      }
      if (s2 === peg$FAILED) {
        s2 = peg$currPos;
        s3 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s4 = peg$c43;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parse_();
          s3 = [
            s3,
            s4,
            s5
          ];
          s2 = s3;
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 === peg$FAILED) {
          s2 = peg$currPos;
          s3 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s4 = peg$c75;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e159);
            }
          }
          if (s4 !== peg$FAILED) {
            s3 = [
              s3,
              s4
            ];
            s2 = s3;
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f151(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseEscapedArgChar, "peg$parseEscapedArgChar");
  function peg$parseRawArgument() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseRawArgChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseRawArgChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f152(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e168);
      }
    }
    return s0;
  }
  __name(peg$parseRawArgument, "peg$parseRawArgument");
  function peg$parseRawArgChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    s2 = input.charAt(peg$currPos);
    if (peg$r28.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e169);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f153(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRawArgChar, "peg$parseRawArgChar");
  function peg$parseLiteralContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedStringContent();
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f154(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c9;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseEscapedSingleStringContent();
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c9;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f155(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e170);
      }
    }
    return s0;
  }
  __name(peg$parseLiteralContent, "peg$parseLiteralContent");
  function peg$parseSemanticSectionContent() {
    var s0, s1, s2, s4, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c41;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parsePathParts();
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 35) {
        s4 = peg$c23;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e63);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseSectionIdentifier();
        if (s6 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 93) {
            s7 = peg$c42;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e118);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f156(s2, s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e171);
      }
    }
    return s0;
  }
  __name(peg$parseSemanticSectionContent, "peg$parseSemanticSectionContent");
  function peg$parsePathParts() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseSpecialVariable();
    if (s2 === peg$FAILED) {
      s2 = peg$parseVariable();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathTextSegment();
        if (s2 === peg$FAILED) {
          s2 = peg$parsePathSeparator();
        }
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseSpecialVariable();
      if (s2 === peg$FAILED) {
        s2 = peg$parseVariable();
        if (s2 === peg$FAILED) {
          s2 = peg$parsePathTextSegment();
          if (s2 === peg$FAILED) {
            s2 = peg$parsePathSeparator();
          }
        }
      }
    }
    peg$savedPos = s0;
    s1 = peg$f157(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e172);
    }
    return s0;
  }
  __name(peg$parsePathParts, "peg$parsePathParts");
  function peg$parseSectionName() {
    var s0, s1, s2, s3, s4, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = peg$currPos;
    s4 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 93) {
      s5 = peg$c42;
      peg$currPos++;
    } else {
      s5 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e118);
      }
    }
    peg$silentFails--;
    if (s5 === peg$FAILED) {
      s4 = void 0;
    } else {
      peg$currPos = s4;
      s4 = peg$FAILED;
    }
    if (s4 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s5 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s5 !== peg$FAILED) {
        s4 = [
          s4,
          s5
        ];
        s3 = s4;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 93) {
          s5 = peg$c42;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e118);
          }
        }
        peg$silentFails--;
        if (s5 === peg$FAILED) {
          s4 = void 0;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s5 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s5 !== peg$FAILED) {
            s4 = [
              s4,
              s5
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f158(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e173);
      }
    }
    return s0;
  }
  __name(peg$parseSectionName, "peg$parseSectionName");
  function peg$parseSemanticCommandBracketContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c41;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseSpecialVariable();
      if (s3 === peg$FAILED) {
        s3 = peg$parseVariableNoTail();
        if (s3 === peg$FAILED) {
          s3 = peg$parseQuotedCommandString();
          if (s3 === peg$FAILED) {
            s3 = peg$parseCommandTextContent();
          }
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseSpecialVariable();
        if (s3 === peg$FAILED) {
          s3 = peg$parseVariableNoTail();
          if (s3 === peg$FAILED) {
            s3 = peg$parseQuotedCommandString();
            if (s3 === peg$FAILED) {
              s3 = peg$parseCommandTextContent();
            }
          }
        }
      }
      if (input.charCodeAt(peg$currPos) === 93) {
        s3 = peg$c42;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e118);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f159(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e174);
      }
    }
    return s0;
  }
  __name(peg$parseSemanticCommandBracketContent, "peg$parseSemanticCommandBracketContent");
  function peg$parseCommandBracketContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseSemanticCommandBracketContent();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e175);
      }
    }
    return s0;
  }
  __name(peg$parseCommandBracketContent, "peg$parseCommandBracketContent");
  function peg$parseQuotedCommandString() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseDoubleQuotedCommandContent();
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f160(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c9;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseSingleQuotedCommandContent();
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c9;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f161(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e176);
      }
    }
    return s0;
  }
  __name(peg$parseQuotedCommandString, "peg$parseQuotedCommandString");
  function peg$parseDoubleQuotedCommandContent() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseSpecialVariable();
    if (s2 === peg$FAILED) {
      s2 = peg$parseVariable();
      if (s2 === peg$FAILED) {
        s2 = peg$parseDoubleQuotedText();
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseSpecialVariable();
      if (s2 === peg$FAILED) {
        s2 = peg$parseVariable();
        if (s2 === peg$FAILED) {
          s2 = peg$parseDoubleQuotedText();
        }
      }
    }
    peg$savedPos = s0;
    s1 = peg$f162(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseDoubleQuotedCommandContent, "peg$parseDoubleQuotedCommandContent");
  function peg$parseSingleQuotedCommandContent() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 39) {
      s4 = peg$c9;
      peg$currPos++;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e24);
      }
    }
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s4 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f163(s4);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$currPos;
      s3 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 39) {
        s4 = peg$c9;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      peg$silentFails--;
      if (s4 === peg$FAILED) {
        s3 = void 0;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s4 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f163(s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    }
    peg$savedPos = s0;
    s1 = peg$f164(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseSingleQuotedCommandContent, "peg$parseSingleQuotedCommandContent");
  function peg$parseDoubleQuotedText() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseDoubleQuotedChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseDoubleQuotedChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f165(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseDoubleQuotedText, "peg$parseDoubleQuotedText");
  function peg$parseDoubleQuotedChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s2 = input.charAt(peg$currPos);
        if (peg$r29.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e177);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f166(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseDoubleQuotedChar, "peg$parseDoubleQuotedChar");
  function peg$parseBacktickInterpolation() {
    var s0, s1, s2, s3;
    s0 = peg$parseBacktickExecInvocation();
    if (s0 === peg$FAILED) {
      s0 = peg$parseFileReferenceInterpolation();
      if (s0 === peg$FAILED) {
        s0 = peg$parseTemplateVariableReference();
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 64) {
            s1 = peg$c37;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          if (s1 !== peg$FAILED) {
            s2 = peg$currPos;
            peg$silentFails++;
            s3 = peg$parseBaseIdentifier();
            peg$silentFails--;
            if (s3 === peg$FAILED) {
              s2 = void 0;
            } else {
              peg$currPos = s2;
              s2 = peg$FAILED;
            }
            if (s2 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s3 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s3 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              if (s3 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f167(s3);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$parseBacktickTextSegment();
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseBacktickInterpolation, "peg$parseBacktickInterpolation");
  function peg$parseBacktickExecInvocation() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c74;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e158);
          }
        }
        peg$silentFails--;
        if (s4 !== peg$FAILED) {
          peg$currPos = s3;
          s3 = void 0;
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseCommandArgs();
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f168(s2, s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseBacktickExecInvocation, "peg$parseBacktickExecInvocation");
  function peg$parseBacktickTextSegment() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseBacktickTemplateChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseBacktickTemplateChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f169(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseBacktickTextSegment, "peg$parseBacktickTextSegment");
  function peg$parseBacktickTemplateChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s2 = input.charAt(peg$currPos);
        if (peg$r30.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e178);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f170(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseBacktickTemplateChar, "peg$parseBacktickTemplateChar");
  function peg$parseDoubleColonTextSegment() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    if (input.substr(peg$currPos, 2) === peg$c5) {
      s4 = peg$c5;
      peg$currPos += 2;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e7);
      }
    }
    if (s4 === peg$FAILED) {
      s4 = input.charAt(peg$currPos);
      if (peg$r31.test(s4)) {
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e179);
        }
      }
    }
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s4 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f171(s4);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$currPos;
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 2) === peg$c5) {
          s4 = peg$c5;
          peg$currPos += 2;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e7);
          }
        }
        if (s4 === peg$FAILED) {
          s4 = input.charAt(peg$currPos);
          if (peg$r31.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e179);
            }
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f171(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f172(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseDoubleColonTextSegment, "peg$parseDoubleColonTextSegment");
  function peg$parseCommandTextContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseCommandBracketChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseCommandBracketChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f173(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e180);
      }
    }
    return s0;
  }
  __name(peg$parseCommandTextContent, "peg$parseCommandTextContent");
  function peg$parseCommandBracketChar() {
    var s0, s1, s2, s3;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 64) {
        s2 = peg$c37;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e102);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s2 = peg$f174();
        if (s2) {
          s2 = void 0;
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s3 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f175(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseCommandBracketChar, "peg$parseCommandBracketChar");
  function peg$parseDoubleColonContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c5) {
      s1 = peg$c5;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e7);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseDoubleColonInterpolation();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseDoubleColonInterpolation();
      }
      if (input.substr(peg$currPos, 2) === peg$c5) {
        s3 = peg$c5;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e7);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f176(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e181);
      }
    }
    return s0;
  }
  __name(peg$parseDoubleColonContent, "peg$parseDoubleColonContent");
  function peg$parseDoubleColonInterpolation() {
    var s0, s1, s2, s3;
    s0 = peg$parseBacktickExecInvocation();
    if (s0 === peg$FAILED) {
      s0 = peg$parseFileReferenceInterpolation();
      if (s0 === peg$FAILED) {
        s0 = peg$parseTemplateVariableReference();
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 64) {
            s1 = peg$c37;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          if (s1 !== peg$FAILED) {
            s2 = peg$currPos;
            peg$silentFails++;
            s3 = peg$parseBaseIdentifier();
            peg$silentFails--;
            if (s3 === peg$FAILED) {
              s2 = void 0;
            } else {
              peg$currPos = s2;
              s2 = peg$FAILED;
            }
            if (s2 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s3 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s3 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              if (s3 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f177(s3);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$parseDoubleColonTextSegment();
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseDoubleColonInterpolation, "peg$parseDoubleColonInterpolation");
  function peg$parseTripleColonContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c76) {
      s1 = peg$c76;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e183);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseInterpolationVar();
      if (s3 === peg$FAILED) {
        s3 = peg$parseFileReferenceInterpolation();
        if (s3 === peg$FAILED) {
          s3 = peg$parseTemplateTextSegment();
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseInterpolationVar();
        if (s3 === peg$FAILED) {
          s3 = peg$parseFileReferenceInterpolation();
          if (s3 === peg$FAILED) {
            s3 = peg$parseTemplateTextSegment();
          }
        }
      }
      if (input.substr(peg$currPos, 3) === peg$c76) {
        s3 = peg$c76;
        peg$currPos += 3;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e183);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f178(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseInterpolationVar();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f179(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e182);
      }
    }
    return s0;
  }
  __name(peg$parseTripleColonContent, "peg$parseTripleColonContent");
  function peg$parseUnquotedPath() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnquotedPathPart();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseUnquotedPathPart();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f180(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e184);
      }
    }
    return s0;
  }
  __name(peg$parseUnquotedPath, "peg$parseUnquotedPath");
  function peg$parseUnquotedPathPart() {
    var s0;
    s0 = peg$parsePathSeparator();
    if (s0 === peg$FAILED) {
      s0 = peg$parseVariableNoTail();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnquotedPathText();
      }
    }
    return s0;
  }
  __name(peg$parseUnquotedPathPart, "peg$parseUnquotedPathPart");
  function peg$parseUnquotedPathText() {
    var s0, s1, s2, s3, s4, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = peg$currPos;
    s4 = peg$currPos;
    peg$silentFails++;
    s5 = input.charAt(peg$currPos);
    if (peg$r32.test(s5)) {
      peg$currPos++;
    } else {
      s5 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e186);
      }
    }
    peg$silentFails--;
    if (s5 === peg$FAILED) {
      s4 = void 0;
    } else {
      peg$currPos = s4;
      s4 = peg$FAILED;
    }
    if (s4 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s5 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s5 !== peg$FAILED) {
        s4 = [
          s4,
          s5
        ];
        s3 = s4;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$currPos;
        peg$silentFails++;
        s5 = input.charAt(peg$currPos);
        if (peg$r32.test(s5)) {
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e186);
          }
        }
        peg$silentFails--;
        if (s5 === peg$FAILED) {
          s4 = void 0;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s5 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s5 !== peg$FAILED) {
            s4 = [
              s4,
              s5
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f181(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e185);
      }
    }
    return s0;
  }
  __name(peg$parseUnquotedPathText, "peg$parseUnquotedPathText");
  function peg$parseUnquotedCommand() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseAtVar();
    if (s2 === peg$FAILED) {
      s2 = peg$parseBaseTextSegment();
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseAtVar();
        if (s2 === peg$FAILED) {
          s2 = peg$parseBaseTextSegment();
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f182(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e187);
      }
    }
    return s0;
  }
  __name(peg$parseUnquotedCommand, "peg$parseUnquotedCommand");
  function peg$parseSemanticCodeContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c41;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = peg$parseCodeLiteralContent();
      s2 = input.substring(s2, peg$currPos);
      if (input.charCodeAt(peg$currPos) === 93) {
        s3 = peg$c42;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e118);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f183(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    return s0;
  }
  __name(peg$parseSemanticCodeContent, "peg$parseSemanticCodeContent");
  function peg$parseDirectCodeContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$parseSemanticCodeContent();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r33.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e190);
        }
      }
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = input.charAt(peg$currPos);
          if (peg$r33.test(s3)) {
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e190);
            }
          }
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s1 = input.substring(s1, peg$currPos);
      } else {
        s1 = s2;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f184(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e189);
      }
    }
    return s0;
  }
  __name(peg$parseDirectCodeContent, "peg$parseDirectCodeContent");
  function peg$parseCodeLiteralContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseCodeLiteralPart();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseCodeLiteralPart();
    }
    peg$savedPos = s0;
    s1 = peg$f185(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e191);
    }
    return s0;
  }
  __name(peg$parseCodeLiteralContent, "peg$parseCodeLiteralContent");
  function peg$parseCodeLiteralPart() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c41;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCodeLiteralContent();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 93) {
          s3 = peg$c42;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e118);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f186(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 93) {
        s2 = peg$c42;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e118);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f187(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseCodeLiteralPart, "peg$parseCodeLiteralPart");
  function peg$parseLiteralOnlyContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c9;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e24);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c9;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f188(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e192);
      }
    }
    return s0;
  }
  __name(peg$parseLiteralOnlyContent, "peg$parseLiteralOnlyContent");
  function peg$parseInterpolatedDoubleQuoteContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseSpecialVariable();
      if (s3 === peg$FAILED) {
        s3 = peg$parseFileReferenceInterpolation();
        if (s3 === peg$FAILED) {
          s3 = peg$parseTemplateVariableReference();
          if (s3 === peg$FAILED) {
            s3 = peg$parseDoubleQuotedText();
          }
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseSpecialVariable();
        if (s3 === peg$FAILED) {
          s3 = peg$parseFileReferenceInterpolation();
          if (s3 === peg$FAILED) {
            s3 = peg$parseTemplateVariableReference();
            if (s3 === peg$FAILED) {
              s3 = peg$parseDoubleQuotedText();
            }
          }
        }
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f189(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e193);
      }
    }
    return s0;
  }
  __name(peg$parseInterpolatedDoubleQuoteContent, "peg$parseInterpolatedDoubleQuoteContent");
  function peg$parseInterpolatedTemplateContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseDoubleColonContent();
    if (s0 === peg$FAILED) {
      s0 = peg$parseTripleColonContent();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e194);
      }
    }
    return s0;
  }
  __name(peg$parseInterpolatedTemplateContent, "peg$parseInterpolatedTemplateContent");
  function peg$parseTemplateStyleInterpolation() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTripleColonContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f190(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseInterpolatedTemplateContent();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f191(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 96) {
          s1 = peg$c21;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e58);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = [];
          s3 = peg$parseBacktickInterpolation();
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = peg$parseBacktickInterpolation();
          }
          if (input.charCodeAt(peg$currPos) === 96) {
            s3 = peg$c21;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e58);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f192(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseInterpolatedDoubleQuoteContent();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f193(s1);
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseLiteralOnlyContent();
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f194(s1);
            }
            s0 = s1;
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e195);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateStyleInterpolation, "peg$parseTemplateStyleInterpolation");
  function peg$parseCommandStyleInterpolation() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseInterpolatedDoubleQuoteContent();
    if (s0 === peg$FAILED) {
      s0 = peg$parseLiteralOnlyContent();
      if (s0 === peg$FAILED) {
        s0 = peg$parseCommandBracketContent();
        if (s0 === peg$FAILED) {
          s0 = peg$parseInterpolatedTemplateContent();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e196);
      }
    }
    return s0;
  }
  __name(peg$parseCommandStyleInterpolation, "peg$parseCommandStyleInterpolation");
  function peg$parseSemanticTextContent() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c16) {
      s1 = peg$c16;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e37);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f195();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c41;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e117);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = input.charAt(peg$currPos);
        if (peg$r34.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e198);
          }
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = input.charAt(peg$currPos);
          if (peg$r34.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e198);
            }
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 93) {
          s3 = peg$c42;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e118);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s4 = peg$f196(s2);
          if (s4) {
            s4 = void 0;
          } else {
            s4 = peg$FAILED;
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f197(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 91) {
          s1 = peg$c41;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e117);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f198();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 4) === peg$c26) {
            s1 = peg$c26;
            peg$currPos += 4;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e76);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f199();
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 34) {
              s1 = peg$c20;
              peg$currPos++;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e55);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f200();
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 39) {
                s1 = peg$c9;
                peg$currPos++;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e24);
                }
              }
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f201();
              }
              s0 = s1;
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e197);
      }
    }
    return s0;
  }
  __name(peg$parseSemanticTextContent, "peg$parseSemanticTextContent");
  function peg$parseWrappedTemplateContent() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTemplateStyleInterpolation();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f202(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e199);
      }
    }
    return s0;
  }
  __name(peg$parseWrappedTemplateContent, "peg$parseWrappedTemplateContent");
  function peg$parseWrappedCommandContent() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseCommandContentInterpolation();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f203(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e200);
      }
    }
    return s0;
  }
  __name(peg$parseWrappedCommandContent, "peg$parseWrappedCommandContent");
  function peg$parseCommandContentInterpolation() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseInterpolatedDoubleQuoteContent();
    if (s0 === peg$FAILED) {
      s0 = peg$parseLiteralOnlyContent();
      if (s0 === peg$FAILED) {
        s0 = peg$parseCommandBracketContent();
        if (s0 === peg$FAILED) {
          s0 = peg$parseInterpolatedTemplateContent();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e201);
      }
    }
    return s0;
  }
  __name(peg$parseCommandContentInterpolation, "peg$parseCommandContentInterpolation");
  function peg$parseWrappedCodeContent() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDirectCodeContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f204(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e202);
      }
    }
    return s0;
  }
  __name(peg$parseWrappedCodeContent, "peg$parseWrappedCodeContent");
  function peg$parseDataObjectLiteral() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c77;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e204);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseDataObjectProperties();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 125) {
        s5 = peg$c78;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e205);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f205(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e203);
      }
    }
    return s0;
  }
  __name(peg$parseDataObjectLiteral, "peg$parseDataObjectLiteral");
  function peg$parseDataObjectProperties() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseDataObjectProperty();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseDataObjectProperty();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f206(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseDataObjectProperty();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f206(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f207(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseDataObjectProperties, "peg$parseDataObjectProperties");
  function peg$parseDataObjectProperty() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parsePropertyKey();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c54;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e134);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseDataPropertyValue();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f208(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseDataObjectProperty, "peg$parseDataObjectProperty");
  function peg$parseDataPropertyValue() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseRunCommandValue();
    if (s0 === peg$FAILED) {
      s0 = peg$parseCodeExecutionValue();
      if (s0 === peg$FAILED) {
        s0 = peg$parseDataObjectLiteral();
        if (s0 === peg$FAILED) {
          s0 = peg$parseArrayLiteral();
          if (s0 === peg$FAILED) {
            s0 = peg$parseAlligatorExpression();
            if (s0 === peg$FAILED) {
              s0 = peg$parseExecInvocationPattern();
              if (s0 === peg$FAILED) {
                s0 = peg$parseVariableWithTail();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseNestedDirective();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseDataTemplateValue();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseDataStringValue();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parsePrimitiveValue();
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e206);
      }
    }
    return s0;
  }
  __name(peg$parseDataPropertyValue, "peg$parseDataPropertyValue");
  function peg$parseDataTemplateValue() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseInterpolatedTemplateContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f209(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 96) {
        s1 = peg$c21;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e58);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseBacktickInterpolation();
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseBacktickInterpolation();
        }
        if (input.charCodeAt(peg$currPos) === 96) {
          s3 = peg$c21;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e58);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f210(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e207);
      }
    }
    return s0;
  }
  __name(peg$parseDataTemplateValue, "peg$parseDataTemplateValue");
  function peg$parseDataStringValue() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseDataString();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e208);
      }
    }
    return s0;
  }
  __name(peg$parseDataStringValue, "peg$parseDataStringValue");
  function peg$parseDataArrayContent() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseDataArrayValue();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseDataArrayValue();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f211(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$currPos;
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 44) {
            s5 = peg$c43;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e120);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$parse_();
            s7 = peg$parseDataArrayValue();
            if (s7 !== peg$FAILED) {
              peg$savedPos = s3;
              s3 = peg$f211(s1, s7);
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f212(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDataArrayValue();
      if (s1 !== peg$FAILED) {
        s2 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s3 = peg$c43;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f213(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseDataArrayContent, "peg$parseDataArrayContent");
  function peg$parseDataArrayValue() {
    var s0;
    s0 = peg$parseRunCommandValue();
    if (s0 === peg$FAILED) {
      s0 = peg$parseCodeExecutionValue();
      if (s0 === peg$FAILED) {
        s0 = peg$parseDataObjectLiteral();
        if (s0 === peg$FAILED) {
          s0 = peg$parseArrayLiteral();
          if (s0 === peg$FAILED) {
            s0 = peg$parseAlligatorExpression();
            if (s0 === peg$FAILED) {
              s0 = peg$parseExecInvocationPattern();
              if (s0 === peg$FAILED) {
                s0 = peg$parseVariableWithTail();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseNestedDirective();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseDataTemplateValue();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseDataStringValue();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parsePrimitiveValue();
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseDataArrayValue, "peg$parseDataArrayValue");
  function peg$parseStandardDirectiveEnding() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTailModifiers();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    s2 = peg$parseInlineComment();
    if (s2 === peg$FAILED) {
      s2 = null;
    }
    peg$savedPos = s0;
    s0 = peg$f214(s1, s2);
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e209);
    }
    return s0;
  }
  __name(peg$parseStandardDirectiveEnding, "peg$parseStandardDirectiveEnding");
  function peg$parseSecuredDirectiveEnding() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTailModifiers();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    s2 = peg$currPos;
    s3 = peg$parse_();
    s4 = peg$parseSecurityOptions();
    if (s4 !== peg$FAILED) {
      peg$savedPos = s2;
      s2 = peg$f215(s1, s4);
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 === peg$FAILED) {
      s2 = null;
    }
    s3 = peg$parseInlineComment();
    if (s3 === peg$FAILED) {
      s3 = null;
    }
    peg$savedPos = s0;
    s0 = peg$f216(s1, s2, s3);
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e210);
    }
    return s0;
  }
  __name(peg$parseSecuredDirectiveEnding, "peg$parseSecuredDirectiveEnding");
  function peg$parseCommentedDirectiveEnding() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseInlineComment();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$savedPos = s0;
    s1 = peg$f217(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e211);
    }
    return s0;
  }
  __name(peg$parseCommentedDirectiveEnding, "peg$parseCommentedDirectiveEnding");
  function peg$parseExeRHSContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseWhenExpression();
    if (s0 === peg$FAILED) {
      s0 = peg$parseForExpression();
      if (s0 === peg$FAILED) {
        s0 = peg$parseExeSlashRunPattern();
        if (s0 === peg$FAILED) {
          s0 = peg$parseExeRunCommandPattern();
          if (s0 === peg$FAILED) {
            s0 = peg$parseExeCodePattern();
            if (s0 === peg$FAILED) {
              s0 = peg$parseExeEnvironmentDeclaration();
              if (s0 === peg$FAILED) {
                s0 = peg$parseExeCommandPattern();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseExeTemplatePattern();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseExeSectionPattern();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseExeResolverPattern();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseExeExecInvocationPattern();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseExeCommandReference();
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e212);
      }
    }
    return s0;
  }
  __name(peg$parseExeRHSContent, "peg$parseExeRHSContent");
  function peg$parseExeExecInvocationPattern() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseSimpleExec();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f218(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e213);
      }
    }
    return s0;
  }
  __name(peg$parseExeExecInvocationPattern, "peg$parseExeExecInvocationPattern");
  function peg$parseExeSlashRunPattern() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c26) {
      s1 = peg$c26;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e76);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseRunLanguageCodeCore();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f219(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 4) === peg$c26) {
        s1 = peg$c26;
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e76);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseUnifiedCommandBrackets();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f220(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e214);
      }
    }
    return s0;
  }
  __name(peg$parseExeSlashRunPattern, "peg$parseExeSlashRunPattern");
  function peg$parseExeRunCommandPattern() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c48) {
      s1 = peg$c48;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e127);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedCommandBrackets();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f221(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e215);
      }
    }
    return s0;
  }
  __name(peg$parseExeRunCommandPattern, "peg$parseExeRunCommandPattern");
  function peg$parseExeCodePattern() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseRunLanguageCodeCore();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f222(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e216);
      }
    }
    return s0;
  }
  __name(peg$parseExeCodePattern, "peg$parseExeCodePattern");
  function peg$parseExeCommandPattern() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedCommandBrackets();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f223(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e217);
      }
    }
    return s0;
  }
  __name(peg$parseExeCommandPattern, "peg$parseExeCommandPattern");
  function peg$parseExeTemplatePattern() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTemplateCore();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f224(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e218);
      }
    }
    return s0;
  }
  __name(peg$parseExeTemplatePattern, "peg$parseExeTemplatePattern");
  function peg$parseExeSectionPattern() {
    var s0, s1, s3, s5, s7, s9, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c41;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseVariableNoTail();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 35) {
          s5 = peg$c23;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e63);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseSectionIdentifier();
          if (s7 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 93) {
              s9 = peg$c42;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e118);
              }
            }
            if (s9 !== peg$FAILED) {
              s10 = peg$parseExecAsNewTitle();
              if (s10 === peg$FAILED) {
                s10 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f225(s3, s7, s10);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e219);
      }
    }
    return s0;
  }
  __name(peg$parseExeSectionPattern, "peg$parseExeSectionPattern");
  function peg$parseExeResolverPattern() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseResolverPathPattern();
      if (s2 !== peg$FAILED) {
        s3 = peg$parseExecResolverPayload();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f226(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e220);
      }
    }
    return s0;
  }
  __name(peg$parseExeResolverPattern, "peg$parseExeResolverPattern");
  function peg$parseExeCommandReference() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        s4 = input.charAt(peg$currPos);
        if (peg$r35.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e222);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f227(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e221);
      }
    }
    return s0;
  }
  __name(peg$parseExeCommandReference, "peg$parseExeCommandReference");
  function peg$parseExeEnvironmentDeclaration() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c77;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e204);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseEnvironmentVarList();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 125) {
          s5 = peg$c78;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e205);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f228(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e223);
      }
    }
    return s0;
  }
  __name(peg$parseExeEnvironmentDeclaration, "peg$parseExeEnvironmentDeclaration");
  function peg$parseResolverPathPattern() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    s3 = [];
    s4 = input.charAt(peg$currPos);
    if (peg$r36.test(s4)) {
      peg$currPos++;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e224);
      }
    }
    if (s4 !== peg$FAILED) {
      while (s4 !== peg$FAILED) {
        s3.push(s4);
        s4 = input.charAt(peg$currPos);
        if (peg$r36.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e224);
          }
        }
      }
    } else {
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 47) {
        s4 = peg$c22;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e60);
        }
      }
      if (s4 !== peg$FAILED) {
        s5 = [];
        s6 = input.charAt(peg$currPos);
        if (peg$r37.test(s6)) {
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e225);
          }
        }
        while (s6 !== peg$FAILED) {
          s5.push(s6);
          s6 = input.charAt(peg$currPos);
          if (peg$r37.test(s6)) {
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e225);
            }
          }
        }
        s3 = [
          s3,
          s4,
          s5
        ];
        s2 = s3;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f229(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseResolverPathPattern, "peg$parseResolverPathPattern");
  function peg$parseExecResolverPayload() {
    var s0, s2, s4, s6;
    s0 = peg$currPos;
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 123) {
      s2 = peg$c77;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e204);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseVariableNoTail();
      if (s4 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 125) {
          s6 = peg$c78;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e205);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f230(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecResolverPayload, "peg$parseExecResolverPayload");
  function peg$parseExecAsNewTitle() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c39) {
      s2 = peg$c39;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e106);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseLiteralContent();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f231(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c39) {
        s2 = peg$c39;
        peg$currPos += 2;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e106);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseVariableNoTail();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f232(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseExecAsNewTitle, "peg$parseExecAsNewTitle");
  function peg$parseExpression() {
    var s0, s1, s3, s5, s7, s9;
    s0 = peg$currPos;
    s1 = peg$parseLogicalOr();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 63) {
        s3 = peg$c79;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e226);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseExpression();
        if (s5 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 58) {
            s7 = peg$c54;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e134);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$parse_();
            s9 = peg$parseExpression();
            if (s9 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f233(s1, s5, s9);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$parseLogicalOr();
    }
    return s0;
  }
  __name(peg$parseExpression, "peg$parseExpression");
  function peg$parseLogicalOr() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseLogicalAnd();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c46) {
        s5 = peg$c46;
        peg$currPos += 2;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e124);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseLogicalAnd();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f234(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c46) {
          s5 = peg$c46;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e124);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseLogicalAnd();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f234(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f235(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseLogicalOr, "peg$parseLogicalOr");
  function peg$parseLogicalAnd() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseComparison();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c45) {
        s5 = peg$c45;
        peg$currPos += 2;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e123);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseComparison();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f236(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c45) {
          s5 = peg$c45;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e123);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseComparison();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f236(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f237(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseLogicalAnd, "peg$parseLogicalAnd");
  function peg$parseComparison() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parsePrimary();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      s5 = peg$parseComparisonOp();
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parsePrimary();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f238(s1, s5, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        s5 = peg$parseComparisonOp();
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parsePrimary();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f238(s1, s5, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f239(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseComparison, "peg$parseComparison");
  function peg$parseComparisonOp() {
    var s0, s1, s2, s3;
    if (input.substr(peg$currPos, 2) === peg$c80) {
      s0 = peg$c80;
      peg$currPos += 2;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e227);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c81) {
        s0 = peg$c81;
        peg$currPos += 2;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e228);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 2) === peg$c82) {
          s0 = peg$c82;
          peg$currPos += 2;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e229);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c83) {
            s0 = peg$c83;
            peg$currPos += 2;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e230);
            }
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 60) {
              s1 = peg$c19;
              peg$currPos++;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e47);
              }
            }
            if (s1 !== peg$FAILED) {
              s2 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 61) {
                s3 = peg$c84;
                peg$currPos++;
              } else {
                s3 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e231);
                }
              }
              peg$silentFails--;
              if (s3 === peg$FAILED) {
                s2 = void 0;
              } else {
                peg$currPos = s2;
                s2 = peg$FAILED;
              }
              if (s2 !== peg$FAILED) {
                s1 = [
                  s1,
                  s2
                ];
                s0 = s1;
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 62) {
                s1 = peg$c33;
                peg$currPos++;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e92);
                }
              }
              if (s1 !== peg$FAILED) {
                s2 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 61) {
                  s3 = peg$c84;
                  peg$currPos++;
                } else {
                  s3 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e231);
                  }
                }
                peg$silentFails--;
                if (s3 === peg$FAILED) {
                  s2 = void 0;
                } else {
                  peg$currPos = s2;
                  s2 = peg$FAILED;
                }
                if (s2 !== peg$FAILED) {
                  s1 = [
                    s1,
                    s2
                  ];
                  s0 = s1;
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseComparisonOp, "peg$parseComparisonOp");
  function peg$parsePrimary() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c74;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e158);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseExpression();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 41) {
          s5 = peg$c75;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e159);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f240(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnaryExpression();
      if (s0 === peg$FAILED) {
        s0 = peg$parseAtomicExpression();
      }
    }
    return s0;
  }
  __name(peg$parsePrimary, "peg$parsePrimary");
  function peg$parseUnaryExpression() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 33) {
      s1 = peg$c85;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e232);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parsePrimary();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f241(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnaryExpression, "peg$parseUnaryExpression");
  function peg$parseAtomicExpression() {
    var s0, s1, s3, s5;
    s0 = peg$parseUnifiedReferenceNoTail();
    if (s0 === peg$FAILED) {
      s0 = peg$parseExpressionString();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseNumberLiteral();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f242(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseBooleanLiteral();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f243(s1);
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseNullLiteral();
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f244(s1);
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseWildcardLiteral();
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f245(s1);
              }
              s0 = s1;
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                if (input.charCodeAt(peg$currPos) === 40) {
                  s1 = peg$c74;
                  peg$currPos++;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e158);
                  }
                }
                if (s1 !== peg$FAILED) {
                  peg$parse_();
                  s3 = peg$parseExpression();
                  if (s3 !== peg$FAILED) {
                    peg$parse_();
                    peg$savedPos = peg$currPos;
                    s5 = peg$f246(s3);
                    if (s5) {
                      s5 = void 0;
                    } else {
                      s5 = peg$FAILED;
                    }
                    if (s5 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f247(s3);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseAtomicExpression, "peg$parseAtomicExpression");
  function peg$parseFieldAccess() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseDotSeparator();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = "";
      peg$savedPos = s2;
      s3 = peg$f248();
      s2 = s3;
      s3 = peg$parseBaseIdentifier();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f249(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseFieldAccess, "peg$parseFieldAccess");
  function peg$parseNumericFieldAccess() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseDotSeparator();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = "";
      peg$savedPos = s2;
      s3 = peg$f250();
      s2 = s3;
      s3 = peg$parseNumberLiteral();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f251(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNumericFieldAccess, "peg$parseNumericFieldAccess");
  function peg$parseArrayAccess() {
    var s0, s1, s3, s4, s5, s6;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c41;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseNumberLiteral();
      if (s3 !== peg$FAILED) {
        s4 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 93) {
          s5 = peg$c42;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e118);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f252(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c41;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e117);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseStringLiteral();
        if (s3 !== peg$FAILED) {
          s4 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 93) {
            s5 = peg$c42;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e118);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f253(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 91) {
          s1 = peg$c41;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e117);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s3 = peg$c37;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$parseBaseIdentifier();
            if (s4 !== peg$FAILED) {
              s5 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 93) {
                s6 = peg$c42;
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e118);
                }
              }
              if (s6 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f254(s4);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 91) {
            s1 = peg$c41;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e117);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$parse_();
            s3 = peg$parseBaseIdentifier();
            if (s3 !== peg$FAILED) {
              s4 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 93) {
                s5 = peg$c42;
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e118);
                }
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f255(s3);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseArrayAccess, "peg$parseArrayAccess");
  function peg$parseAnyFieldAccess() {
    var s0;
    s0 = peg$parseFieldAccess();
    if (s0 === peg$FAILED) {
      s0 = peg$parseNumericFieldAccess();
      if (s0 === peg$FAILED) {
        s0 = peg$parseArrayAccess();
      }
    }
    return s0;
  }
  __name(peg$parseAnyFieldAccess, "peg$parseAnyFieldAccess");
  function peg$parseFileReferenceInterpolation() {
    var s0, s1, s3, s4, s5, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 60) {
      s1 = peg$c19;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e47);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseFileReferenceContent();
      if (s3 !== peg$FAILED) {
        s4 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 62) {
          s5 = peg$c33;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e92);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseFileFieldChain();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          s7 = peg$parseCondensedPipeChain();
          if (s7 === peg$FAILED) {
            s7 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f256(s3, s6, s7);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 60) {
        s1 = peg$c19;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e47);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 62) {
          s3 = peg$c33;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e92);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseFileFieldChain();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          s5 = peg$parseCondensedPipeChain();
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f257(s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e233);
      }
    }
    return s0;
  }
  __name(peg$parseFileReferenceInterpolation, "peg$parseFileReferenceInterpolation");
  function peg$parseFileReferenceContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseAlligatorUnquotedPath();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAlligatorQuotedPath();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e234);
      }
    }
    return s0;
  }
  __name(peg$parseFileReferenceContent, "peg$parseFileReferenceContent");
  function peg$parseCondensedPipe() {
    var s0, s1, s2, s3, s4, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = "";
    peg$savedPos = s1;
    s2 = peg$f258();
    s1 = s2;
    if (input.charCodeAt(peg$currPos) === 124) {
      s2 = peg$c44;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e122);
      }
    }
    if (s2 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 64) {
        s3 = peg$c37;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e102);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseBaseIdentifier();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseCondensedPipeArgs();
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f259(s1, s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e235);
      }
    }
    return s0;
  }
  __name(peg$parseCondensedPipe, "peg$parseCondensedPipe");
  function peg$parseCondensedPipeArgs() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c74;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e158);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parsePipeArgList();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 41) {
          s5 = peg$c75;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e159);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f260(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCondensedPipeArgs, "peg$parseCondensedPipeArgs");
  function peg$parsePipeArgList() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parsePipeArg();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parsePipeArg();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f261(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parsePipeArg();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f261(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f262(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipeArgList, "peg$parsePipeArgList");
  function peg$parsePipeArg() {
    var s0, s1, s2;
    s0 = peg$parseStringLiteral();
    if (s0 === peg$FAILED) {
      s0 = peg$parseNumberLiteral();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 64) {
          s1 = peg$c37;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e102);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$parseBaseIdentifier();
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f263(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parsePipeArg, "peg$parsePipeArg");
  function peg$parseCondensedPipeChain() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseCondensedPipe();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseCondensedPipe();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f264(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e236);
      }
    }
    return s0;
  }
  __name(peg$parseCondensedPipeChain, "peg$parseCondensedPipeChain");
  function peg$parseFileFieldChain() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseAnyFieldAccess();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseAnyFieldAccess();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f265(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e237);
      }
    }
    return s0;
  }
  __name(peg$parseFileFieldChain, "peg$parseFileFieldChain");
  function peg$parseForeachCommandExpression() {
    var s0, s1, s3, s4;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 7) === peg$c86) {
      s1 = peg$c86;
      peg$currPos += 7;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e238);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedReferenceWithTail();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseForeachWithClause();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f266(s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachCommandExpression, "peg$parseForeachCommandExpression");
  function peg$parseForeachArrayArgumentList() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseVariableNoTail();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseVariableNoTail();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f267(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseVariableNoTail();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f267(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f268(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachArrayArgumentList, "peg$parseForeachArrayArgumentList");
  function peg$parseForeachWithClause() {
    var s0, s2, s4, s6, s8;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 4) === peg$c87) {
      s2 = peg$c87;
      peg$currPos += 4;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e239);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 123) {
        s4 = peg$c77;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e204);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseForeachWithOptions();
        if (s6 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 125) {
            s8 = peg$c78;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e205);
            }
          }
          if (s8 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f269(s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachWithClause, "peg$parseForeachWithClause");
  function peg$parseForeachWithOptions() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseForeachWithOption();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseForeachWithOption();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f270(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseForeachWithOption();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f270(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f271(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachWithOptions, "peg$parseForeachWithOptions");
  function peg$parseForeachWithOption() {
    var s0;
    s0 = peg$parseForeachSeparatorOption();
    if (s0 === peg$FAILED) {
      s0 = peg$parseForeachTemplateOption();
    }
    return s0;
  }
  __name(peg$parseForeachWithOption, "peg$parseForeachWithOption");
  function peg$parseForeachSeparatorOption() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 9) === peg$c88) {
      s1 = peg$c88;
      peg$currPos += 9;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e240);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c54;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e134);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseDataString();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f272(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachSeparatorOption, "peg$parseForeachSeparatorOption");
  function peg$parseForeachTemplateOption() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 8) === peg$c89) {
      s1 = peg$c89;
      peg$currPos += 8;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e241);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c54;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e134);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseDataString();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f273(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachTemplateOption, "peg$parseForeachTemplateOption");
  function peg$parseForIterationPattern() {
    var s0, s1, s2, s4, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c90) {
          s4 = peg$c90;
          peg$currPos += 2;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e243);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseVarRHSContent();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f274(s2, s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e242);
      }
    }
    return s0;
  }
  __name(peg$parseForIterationPattern, "peg$parseForIterationPattern");
  function peg$parseForSingleAction() {
    var s0, s1, s2, s4, s6, s8;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c22;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e60);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 6) === peg$c91) {
      s2 = peg$c91;
      peg$currPos += 6;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e245);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseOutputSource();
      if (s4 === peg$FAILED) {
        s4 = null;
      }
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c92) {
        s6 = peg$c92;
        peg$currPos += 2;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e246);
        }
      }
      if (s6 !== peg$FAILED) {
        peg$parse_();
        s8 = peg$parseOutputTarget();
        if (s8 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f275(s4, s8);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 47) {
        s1 = peg$c22;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e60);
        }
      }
      if (s1 === peg$FAILED) {
        s1 = null;
      }
      if (input.substr(peg$currPos, 4) === peg$c93) {
        s2 = peg$c93;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e247);
        }
      }
      if (s2 === peg$FAILED) {
        if (input.substr(peg$currPos, 3) === peg$c94) {
          s2 = peg$c94;
          peg$currPos += 3;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e248);
          }
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseVarRHSContent();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f276(s2, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseUnifiedReferenceWithTail();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f277(s1);
        }
        s0 = s1;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e244);
      }
    }
    return s0;
  }
  __name(peg$parseForSingleAction, "peg$parseForSingleAction");
  function peg$parseCommaSpace() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parse_();
    if (input.charCodeAt(peg$currPos) === 44) {
      s2 = peg$c43;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e120);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parse_();
      s1 = [
        s1,
        s2,
        s3
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e249);
      }
    }
    return s0;
  }
  __name(peg$parseCommaSpace, "peg$parseCommaSpace");
  function peg$parseSemicolonSpace() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parse_();
    if (input.charCodeAt(peg$currPos) === 59) {
      s2 = peg$c47;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e125);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parse_();
      s1 = [
        s1,
        s2,
        s3
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e250);
      }
    }
    return s0;
  }
  __name(peg$parseSemicolonSpace, "peg$parseSemicolonSpace");
  function peg$parseEnvironmentVarList() {
    var s0, s1, s2, s3, s5, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseEnvironmentVarReference();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseEnvironmentVarReference();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f278(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseEnvironmentVarReference();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f278(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f279(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e251);
      }
    }
    return s0;
  }
  __name(peg$parseEnvironmentVarList, "peg$parseEnvironmentVarList");
  function peg$parseEnvironmentVarReference() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f280(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e252);
      }
    }
    return s0;
  }
  __name(peg$parseEnvironmentVarReference, "peg$parseEnvironmentVarReference");
  function peg$parseOutputSource() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseOutputVariable();
    if (s0 === peg$FAILED) {
      s0 = peg$parseOutputExecInvocation();
      if (s0 === peg$FAILED) {
        s0 = peg$parseOutputCommand();
        if (s0 === peg$FAILED) {
          s0 = peg$parseOutputLiteral();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e253);
      }
    }
    return s0;
  }
  __name(peg$parseOutputSource, "peg$parseOutputSource");
  function peg$parseOutputSourceVariable() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseOutputVariable();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e254);
      }
    }
    return s0;
  }
  __name(peg$parseOutputSourceVariable, "peg$parseOutputSourceVariable");
  function peg$parseOutputSourceVarAndExec() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseOutputVariable();
    if (s0 === peg$FAILED) {
      s0 = peg$parseOutputExecInvocation();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e255);
      }
    }
    return s0;
  }
  __name(peg$parseOutputSourceVarAndExec, "peg$parseOutputSourceVarAndExec");
  function peg$parseOutputExecInvocation() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseUnifiedReferenceWithTail();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f281(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseOutputExecInvocation, "peg$parseOutputExecInvocation");
  function peg$parseOutputVariable() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceNoTail();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 124) {
        s3 = peg$c44;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e122);
        }
      }
      if (s3 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c87) {
          s3 = peg$c87;
          peg$currPos += 4;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e239);
          }
        }
        if (s3 === peg$FAILED) {
          if (input.substr(peg$currPos, 5) === peg$c95) {
            s3 = peg$c95;
            peg$currPos += 5;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e256);
            }
          }
          if (s3 === peg$FAILED) {
            if (input.substr(peg$currPos, 5) === peg$c96) {
              s3 = peg$c96;
              peg$currPos += 5;
            } else {
              s3 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e257);
              }
            }
          }
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f282(s1);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseOutputVariable, "peg$parseOutputVariable");
  function peg$parseOutputCommand() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c97) {
      s1 = peg$c97;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e258);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedReferenceNoTail();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f283(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseOutputCommand, "peg$parseOutputCommand");
  function peg$parseOutputLiteral() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseDataString();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f284(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseOutputLiteral, "peg$parseOutputLiteral");
  function peg$parseOutputTarget() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseOutputTargetStream();
    if (s0 === peg$FAILED) {
      s0 = peg$parseOutputTargetEnv();
      if (s0 === peg$FAILED) {
        s0 = peg$parseOutputTargetResolver();
        if (s0 === peg$FAILED) {
          s0 = peg$parseOutputTargetFile();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e259);
      }
    }
    return s0;
  }
  __name(peg$parseOutputTarget, "peg$parseOutputTarget");
  function peg$parseOutputTargetStream() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c98) {
      s1 = peg$c98;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e261);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 6) === peg$c99) {
        s1 = peg$c99;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e262);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f285(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e260);
      }
    }
    return s0;
  }
  __name(peg$parseOutputTargetStream, "peg$parseOutputTargetStream");
  function peg$parseOutputTargetEnv() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c100) {
      s1 = peg$c100;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e264);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c54;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e134);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseBaseIdentifier();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f286(s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f287(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e263);
      }
    }
    return s0;
  }
  __name(peg$parseOutputTargetEnv, "peg$parseOutputTargetEnv");
  function peg$parseOutputTargetResolver() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$parseResolverPath();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f288(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e265);
      }
    }
    return s0;
  }
  __name(peg$parseOutputTargetResolver, "peg$parseOutputTargetResolver");
  function peg$parseResolverPath() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c22;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e60);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r38.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e266);
        }
      }
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = input.charAt(peg$currPos);
          if (peg$r38.test(s3)) {
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e266);
            }
          }
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f289(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseResolverPath, "peg$parseResolverPath");
  function peg$parseOutputTargetFile() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseOutputFilePath();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f290(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e267);
      }
    }
    return s0;
  }
  __name(peg$parseOutputTargetFile, "peg$parseOutputTargetFile");
  function peg$parseOutputFilePath() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDataString();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f291(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = input.charAt(peg$currPos);
      if (peg$r39.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e269);
        }
      }
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = input.charAt(peg$currPos);
          if (peg$r39.test(s2)) {
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e269);
            }
          }
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f292(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e268);
      }
    }
    return s0;
  }
  __name(peg$parseOutputFilePath, "peg$parseOutputFilePath");
  function peg$parseOutputFormat() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c39) {
      s1 = peg$c39;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e106);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseBaseIdentifier();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f293(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e270);
      }
    }
    return s0;
  }
  __name(peg$parseOutputFormat, "peg$parseOutputFormat");
  function peg$parsePathSegments() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parsePathSegment();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 47) {
        s4 = peg$c22;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e60);
        }
      }
      if (s4 !== peg$FAILED) {
        s5 = peg$parsePathSegment();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f294(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 47) {
          s4 = peg$c22;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e60);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parsePathSegment();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f294(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f295(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePathSegments, "peg$parsePathSegments");
  function peg$parsePathSegment() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r40.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e271);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r40.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e271);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f296(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parsePathSegment, "peg$parsePathSegment");
  function peg$parsePathExpression() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseQuotedStringPath();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e272);
      }
    }
    return s0;
  }
  __name(peg$parsePathExpression, "peg$parsePathExpression");
  function peg$parseQuotedStringPath() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = [];
      s4 = input.charAt(peg$currPos);
      if (peg$r41.test(s4)) {
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e274);
        }
      }
      while (s4 !== peg$FAILED) {
        s3.push(s4);
        s4 = input.charAt(peg$currPos);
        if (peg$r41.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e274);
          }
        }
      }
      s2 = input.substring(s2, peg$currPos);
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f297(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c9;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = input.charAt(peg$currPos);
        if (peg$r42.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e275);
          }
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = input.charAt(peg$currPos);
          if (peg$r42.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e275);
            }
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c9;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f298(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e273);
      }
    }
    return s0;
  }
  __name(peg$parseQuotedStringPath, "peg$parseQuotedStringPath");
  function peg$parseURLProtocolType() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c35) {
      s3 = peg$c35;
      peg$currPos += 4;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e95);
      }
    }
    if (s3 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 115) {
        s4 = peg$c101;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e277);
        }
      }
      if (s4 === peg$FAILED) {
        s4 = null;
      }
      s3 = [
        s3,
        s4
      ];
      s2 = s3;
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 === peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c102) {
        s2 = peg$c102;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e278);
        }
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f299(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e276);
      }
    }
    return s0;
  }
  __name(peg$parseURLProtocolType, "peg$parseURLProtocolType");
  function peg$parseURLRest() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c103) {
      s1 = peg$c103;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e280);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseURLParts();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f300(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e279);
      }
    }
    return s0;
  }
  __name(peg$parseURLRest, "peg$parseURLRest");
  function peg$parseURLParts() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseURLEscapedBackslash();
    if (s2 === peg$FAILED) {
      s2 = peg$parseURLEscapedAt();
      if (s2 === peg$FAILED) {
        s2 = peg$parseURLVariableRef();
        if (s2 === peg$FAILED) {
          s2 = peg$parseURLSegment();
        }
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseURLEscapedBackslash();
        if (s2 === peg$FAILED) {
          s2 = peg$parseURLEscapedAt();
          if (s2 === peg$FAILED) {
            s2 = peg$parseURLVariableRef();
            if (s2 === peg$FAILED) {
              s2 = peg$parseURLSegment();
            }
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f301(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e281);
      }
    }
    return s0;
  }
  __name(peg$parseURLParts, "peg$parseURLParts");
  function peg$parseURLEscapedBackslash() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c104) {
      s1 = peg$c104;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e283);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f302();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e282);
      }
    }
    return s0;
  }
  __name(peg$parseURLEscapedBackslash, "peg$parseURLEscapedBackslash");
  function peg$parseURLEscapedAt() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c105) {
      s1 = peg$c105;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e285);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f303();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e284);
      }
    }
    return s0;
  }
  __name(peg$parseURLEscapedAt, "peg$parseURLEscapedAt");
  function peg$parseURLVariableRef() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f304(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e286);
      }
    }
    return s0;
  }
  __name(peg$parseURLVariableRef, "peg$parseURLVariableRef");
  function peg$parseURLSegment() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = input.charAt(peg$currPos);
    if (peg$r43.test(s3)) {
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e288);
      }
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r43.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e288);
          }
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f305(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e287);
      }
    }
    return s0;
  }
  __name(peg$parseURLSegment, "peg$parseURLSegment");
  function peg$parseSectionIdentifier() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$parseVariableNoTail();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 34) {
        s1 = peg$c20;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 34) {
          s6 = peg$c20;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 34) {
            s6 = peg$c20;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e55);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s6 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e8);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 34) {
          s3 = peg$c20;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f306(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 39) {
          s1 = peg$c9;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$currPos;
          s3 = [];
          s4 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 39) {
            s6 = peg$c9;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e24);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s6 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e8);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$currPos;
            s5 = peg$currPos;
            peg$silentFails++;
            if (input.charCodeAt(peg$currPos) === 39) {
              s6 = peg$c9;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e24);
              }
            }
            peg$silentFails--;
            if (s6 === peg$FAILED) {
              s5 = void 0;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s6 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              if (s6 !== peg$FAILED) {
                s5 = [
                  s5,
                  s6
                ];
                s4 = s5;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          }
          s2 = input.substring(s2, peg$currPos);
          if (input.charCodeAt(peg$currPos) === 39) {
            s3 = peg$c9;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e24);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f307(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = [];
          s2 = peg$parseSectionNameChar();
          if (s2 !== peg$FAILED) {
            while (s2 !== peg$FAILED) {
              s1.push(s2);
              s2 = peg$parseSectionNameChar();
            }
          } else {
            s1 = peg$FAILED;
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f308(s1);
          }
          s0 = s1;
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e289);
      }
    }
    return s0;
  }
  __name(peg$parseSectionIdentifier, "peg$parseSectionIdentifier");
  function peg$parseSectionNameChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    s2 = input.charAt(peg$currPos);
    if (peg$r44.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e290);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f309(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSectionNameChar, "peg$parseSectionNameChar");
  function peg$parseIsInRHS() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f310();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e291);
      }
    }
    return s0;
  }
  __name(peg$parseIsInRHS, "peg$parseIsInRHS");
  function peg$parseRunRHS() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseWrappedCommandContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f311(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseWrappedCodeContent();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f312(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseRunRHS, "peg$parseRunRHS");
  function peg$parseSecurityOptions() {
    var s0, s1, s2, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTTLOption();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$parse_();
      s4 = peg$parseTrustOption();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f313(s1, s4);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f314(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseTrustOption();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f315(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e292);
      }
    }
    return s0;
  }
  __name(peg$parseSecurityOptions, "peg$parseSecurityOptions");
  function peg$parseTTLOption() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c74;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e158);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseTTLValue();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 41) {
          s5 = peg$c75;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e159);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f316(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e293);
      }
    }
    return s0;
  }
  __name(peg$parseTTLOption, "peg$parseTTLOption");
  function peg$parseTTLValue() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTTLDuration();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f317(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseTTLSpecial();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f318(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e294);
      }
    }
    return s0;
  }
  __name(peg$parseTTLValue, "peg$parseTTLValue");
  function peg$parseTTLDuration() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseInteger();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTTLUnit();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f319(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e295);
      }
    }
    return s0;
  }
  __name(peg$parseTTLDuration, "peg$parseTTLDuration");
  function peg$parseTTLUnit() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = input.charAt(peg$currPos);
    if (peg$r45.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e297);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f320(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e296);
      }
    }
    return s0;
  }
  __name(peg$parseTTLUnit, "peg$parseTTLUnit");
  function peg$parseTTLSpecial() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c106) {
      s1 = peg$c106;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e299);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 6) === peg$c107) {
        s1 = peg$c107;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e300);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f321(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e298);
      }
    }
    return s0;
  }
  __name(peg$parseTTLSpecial, "peg$parseTTLSpecial");
  function peg$parseTrustOption() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c95) {
      s1 = peg$c95;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e256);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseTrustLevel();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f322(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e301);
      }
    }
    return s0;
  }
  __name(peg$parseTrustOption, "peg$parseTrustOption");
  function peg$parseTrustLevel() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c108) {
      s1 = peg$c108;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e303);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 6) === peg$c109) {
        s1 = peg$c109;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e304);
        }
      }
      if (s1 === peg$FAILED) {
        if (input.substr(peg$currPos, 5) === peg$c110) {
          s1 = peg$c110;
          peg$currPos += 5;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e305);
          }
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f323(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e302);
      }
    }
    return s0;
  }
  __name(peg$parseTrustLevel, "peg$parseTrustLevel");
  function peg$parseInteger() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r4.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e27);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r4.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f324(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e306);
      }
    }
    return s0;
  }
  __name(peg$parseInteger, "peg$parseInteger");
  function peg$parseDataString() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c9;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e24);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c9;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f325(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 34) {
        s1 = peg$c20;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseSpecialVariable();
        if (s3 === peg$FAILED) {
          s3 = peg$parseFileReferenceInterpolation();
          if (s3 === peg$FAILED) {
            s3 = peg$parseVariableWithPipes();
            if (s3 === peg$FAILED) {
              s3 = peg$parseDoubleQuotedText();
            }
          }
        }
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseSpecialVariable();
          if (s3 === peg$FAILED) {
            s3 = peg$parseFileReferenceInterpolation();
            if (s3 === peg$FAILED) {
              s3 = peg$parseVariableWithPipes();
              if (s3 === peg$FAILED) {
                s3 = peg$parseDoubleQuotedText();
              }
            }
          }
        }
        if (input.charCodeAt(peg$currPos) === 34) {
          s3 = peg$c20;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f326(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e307);
      }
    }
    return s0;
  }
  __name(peg$parseDataString, "peg$parseDataString");
  function peg$parseTemplateString() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c9;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e24);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c9;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f327(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$parseInterpolatedDoubleQuoteContent();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e308);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateString, "peg$parseTemplateString");
  function peg$parseExpressionString() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c9;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e24);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c9;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f328(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 34) {
        s1 = peg$c20;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseSpecialVariable();
        if (s3 === peg$FAILED) {
          s3 = peg$parseFileReferenceInterpolation();
          if (s3 === peg$FAILED) {
            s3 = peg$parseVariableWithPipes();
            if (s3 === peg$FAILED) {
              s3 = peg$parseDoubleQuotedText();
            }
          }
        }
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseSpecialVariable();
          if (s3 === peg$FAILED) {
            s3 = peg$parseFileReferenceInterpolation();
            if (s3 === peg$FAILED) {
              s3 = peg$parseVariableWithPipes();
              if (s3 === peg$FAILED) {
                s3 = peg$parseDoubleQuotedText();
              }
            }
          }
        }
        if (input.charCodeAt(peg$currPos) === 34) {
          s3 = peg$c20;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f329(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e309);
      }
    }
    return s0;
  }
  __name(peg$parseExpressionString, "peg$parseExpressionString");
  function peg$parseShellCommandLine() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parsePipeline();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f330(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseShellCommandLine, "peg$parseShellCommandLine");
  function peg$parseChainOperator() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c45) {
      s1 = peg$c45;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e123);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c46) {
        s1 = peg$c46;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e124);
        }
      }
      if (s1 === peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 59) {
          s1 = peg$c47;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e125);
          }
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f331(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseChainOperator, "peg$parseChainOperator");
  function peg$parseRedirectionOperator() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c0) {
      s1 = peg$c0;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e1);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = input.charAt(peg$currPos);
      if (peg$r46.test(s1)) {
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e310);
        }
      }
      if (s1 === peg$FAILED) {
        if (input.substr(peg$currPos, 2) === peg$c111) {
          s1 = peg$c111;
          peg$currPos += 2;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e311);
          }
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f332(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseRedirectionOperator, "peg$parseRedirectionOperator");
  function peg$parseBackgroundOperator() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 38) {
      s1 = peg$c112;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e312);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = input.charAt(peg$currPos);
      if (peg$r47.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e313);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f333();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseBackgroundOperator, "peg$parseBackgroundOperator");
  function peg$parsePipeline() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseShellSimpleCommand();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 124) {
        s5 = peg$c44;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e122);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseShellSimpleCommand();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f334(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 124) {
          s5 = peg$c44;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e122);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseShellSimpleCommand();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f334(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f335(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipeline, "peg$parsePipeline");
  function peg$parseShellSimpleCommand() {
    var s0, s1, s2, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseShellCommandName();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      s5 = peg$parseShellCommandArgument();
      if (s5 !== peg$FAILED) {
        peg$savedPos = s3;
        s3 = peg$f336(s1, s5);
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        s5 = peg$parseShellCommandArgument();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f336(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f337(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseShellSimpleCommand, "peg$parseShellSimpleCommand");
  function peg$parseShellCommandName() {
    var s0, s1;
    s0 = peg$parseShellVariable();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnquotedWord();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f338(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseShellCommandName, "peg$parseShellCommandName");
  function peg$parseShellCommandArgument() {
    var s0;
    s0 = peg$parseQuotedString();
    if (s0 === peg$FAILED) {
      s0 = peg$parseShellVariable();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnquotedWordWithCheck();
      }
    }
    return s0;
  }
  __name(peg$parseShellCommandArgument, "peg$parseShellCommandArgument");
  function peg$parseUnquotedWordWithCheck() {
    var s0, s1, s2;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f339();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseUnquotedWord();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f340(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnquotedWordWithCheck, "peg$parseUnquotedWordWithCheck");
  function peg$parseShellVariable() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f341(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseShellVariable, "peg$parseShellVariable");
  function peg$parseQuotedString() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseDoubleQuotedContent();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseDoubleQuotedContent();
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f342(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c9;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseSingleQuotedContent();
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseSingleQuotedContent();
        }
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c9;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f343(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseQuotedString, "peg$parseQuotedString");
  function peg$parseDoubleQuotedContent() {
    var s0, s1, s2, s3;
    s0 = peg$parseShellVariable();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r48.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e314);
        }
      }
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = input.charAt(peg$currPos);
          if (peg$r48.test(s3)) {
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e314);
            }
          }
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s1 = input.substring(s1, peg$currPos);
      } else {
        s1 = s2;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f344(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseDoubleQuotedContent, "peg$parseDoubleQuotedContent");
  function peg$parseSingleQuotedContent() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = input.charAt(peg$currPos);
    if (peg$r42.test(s3)) {
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e275);
      }
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r42.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e275);
          }
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f345(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseSingleQuotedContent, "peg$parseSingleQuotedContent");
  function peg$parseUnquotedWord() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = input.charAt(peg$currPos);
    if (peg$r49.test(s3)) {
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e315);
      }
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r49.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e315);
          }
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f346(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnquotedWord, "peg$parseUnquotedWord");
  function peg$parseTailModifiers() {
    var s0, s2, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$parse_();
    s2 = peg$parseTailKeyword();
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseTailValue();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f347(s2, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e316);
      }
    }
    return s0;
  }
  __name(peg$parseTailModifiers, "peg$parseTailModifiers");
  function peg$parseTailKeyword() {
    var s0;
    if (input.substr(peg$currPos, 5) === peg$c95) {
      s0 = peg$c95;
      peg$currPos += 5;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e256);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 8) === peg$c113) {
        s0 = peg$c113;
        peg$currPos += 8;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e317);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 124) {
          s0 = peg$c44;
          peg$currPos++;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e122);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 5) === peg$c96) {
            s0 = peg$c96;
            peg$currPos += 5;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e257);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c87) {
              s0 = peg$c87;
              peg$currPos += 4;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e239);
              }
            }
            if (s0 === peg$FAILED) {
              if (input.substr(peg$currPos, 2) === peg$c39) {
                s0 = peg$c39;
                peg$currPos += 2;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e106);
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseTailKeyword, "peg$parseTailKeyword");
  function peg$parseTailValue() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c77;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e204);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWithProperties();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 125) {
          s5 = peg$c78;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e205);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f348(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c41;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e117);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parsePipelineCommandList();
        if (s3 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 93) {
            s5 = peg$c42;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e118);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f349(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parsePipelineShorthand();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f350(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseTrustLevel();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f351(s1);
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseNeedsObject();
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f352(s1);
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseAsSectionRenameString();
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f353(s1);
              }
              s0 = s1;
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseTailValue, "peg$parseTailValue");
  function peg$parsePipelineShorthand() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parsePipelineCommand();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parsePipelineRest();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parsePipelineRest();
      }
      peg$savedPos = s0;
      s0 = peg$f354(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipelineShorthand, "peg$parsePipelineShorthand");
  function peg$parsePipelineRest() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 124) {
      s2 = peg$c44;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e122);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parsePipelineCommand();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f355(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipelineRest, "peg$parsePipelineRest");
  function peg$parseTTLClause() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c74;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e158);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseTTLValue();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 41) {
          s5 = peg$c75;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e159);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f356(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e318);
      }
    }
    return s0;
  }
  __name(peg$parseTTLClause, "peg$parseTTLClause");
  function peg$parseUnifiedReference() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseFieldAccessExec();
    if (s0 === peg$FAILED) {
      s0 = peg$parseSimpleExec();
      if (s0 === peg$FAILED) {
        s0 = peg$parseVariableWithTail();
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e319);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedReference, "peg$parseUnifiedReference");
  function peg$parseUnifiedReferenceWithTail() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseUnifiedReference();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e320);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedReferenceWithTail, "peg$parseUnifiedReferenceWithTail");
  function peg$parseUnifiedReferenceNoTail() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseFieldAccessExecNoTail();
    if (s0 === peg$FAILED) {
      s0 = peg$parseSimpleExecNoTail();
      if (s0 === peg$FAILED) {
        s0 = peg$parseVariableNoTail();
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e321);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedReferenceNoTail, "peg$parseUnifiedReferenceNoTail");
  function peg$parseFieldAccessExec() {
    var s0, s1, s2, s3, s4, s5, s7, s8;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseAnyFieldAccess();
        if (s4 !== peg$FAILED) {
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$parseAnyFieldAccess();
          }
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 40) {
            s4 = peg$c74;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e158);
            }
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$parseCommandArgumentList();
            if (s5 === peg$FAILED) {
              s5 = null;
            }
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s7 = peg$c75;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e159);
              }
            }
            if (s7 !== peg$FAILED) {
              s8 = peg$parseTailModifiers();
              if (s8 === peg$FAILED) {
                s8 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f357(s2, s3, s5, s8);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e322);
      }
    }
    return s0;
  }
  __name(peg$parseFieldAccessExec, "peg$parseFieldAccessExec");
  function peg$parseFieldAccessExecNoTail() {
    var s0, s1, s2, s3, s4, s5, s7, s8, s9;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseAnyFieldAccess();
        if (s4 !== peg$FAILED) {
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$parseAnyFieldAccess();
          }
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 40) {
            s4 = peg$c74;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e158);
            }
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$parseCommandArgumentList();
            if (s5 === peg$FAILED) {
              s5 = null;
            }
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s7 = peg$c75;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e159);
              }
            }
            if (s7 !== peg$FAILED) {
              s8 = peg$currPos;
              peg$silentFails++;
              s9 = peg$parseTailModifiers();
              peg$silentFails--;
              if (s9 === peg$FAILED) {
                s8 = void 0;
              } else {
                peg$currPos = s8;
                s8 = peg$FAILED;
              }
              if (s8 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f358(s2, s3, s5);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e323);
      }
    }
    return s0;
  }
  __name(peg$parseFieldAccessExecNoTail, "peg$parseFieldAccessExecNoTail");
  function peg$parseSimpleExec() {
    var s0, s1, s2, s3, s4, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s3 = peg$c74;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e158);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseCommandArgumentList();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s6 = peg$c75;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e159);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$parseTailModifiers();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f359(s2, s4, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e324);
      }
    }
    return s0;
  }
  __name(peg$parseSimpleExec, "peg$parseSimpleExec");
  function peg$parseSimpleExecNoTail() {
    var s0, s1, s2, s3, s4, s6, s7, s8;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s3 = peg$c74;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e158);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseCommandArgumentList();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s6 = peg$c75;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e159);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$currPos;
            peg$silentFails++;
            s8 = peg$parseTailModifiers();
            peg$silentFails--;
            if (s8 === peg$FAILED) {
              s7 = void 0;
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f360(s2, s4);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e325);
      }
    }
    return s0;
  }
  __name(peg$parseSimpleExecNoTail, "peg$parseSimpleExecNoTail");
  function peg$parseVariableWithTail() {
    var s0, s1, s2, s3, s4, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c74;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e158);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = [];
          s5 = peg$parseAnyFieldAccess();
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = peg$parseAnyFieldAccess();
          }
          s5 = peg$parseTailModifiers();
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f361(s2, s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e326);
      }
    }
    return s0;
  }
  __name(peg$parseVariableWithTail, "peg$parseVariableWithTail");
  function peg$parseVariableNoTail() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c74;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e158);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = [];
          s5 = peg$parseAnyFieldAccess();
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = peg$parseAnyFieldAccess();
          }
          s5 = peg$currPos;
          peg$silentFails++;
          s6 = peg$parseTailModifiers();
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f362(s2, s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e327);
      }
    }
    return s0;
  }
  __name(peg$parseVariableNoTail, "peg$parseVariableNoTail");
  function peg$parseUnifiedCodeBrackets() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c77;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e204);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$currPos;
      peg$parseUnifiedCodeContent();
      s3 = input.substring(s3, peg$currPos);
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 125) {
        s5 = peg$c78;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e205);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f363(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e328);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedCodeBrackets, "peg$parseUnifiedCodeBrackets");
  function peg$parseUnifiedCommandBrackets() {
    var s0, s1, s2, s3, s5, s6, s8, s9;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f364();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 123) {
        s2 = peg$c77;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e204);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s3 = peg$f365();
        if (s3) {
          s3 = void 0;
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseUnifiedCommandParts();
          if (s5 !== peg$FAILED) {
            peg$savedPos = peg$currPos;
            s6 = peg$f366(s5);
            if (s6) {
              s6 = void 0;
            } else {
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 125) {
                s8 = peg$c78;
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e205);
                }
              }
              if (s8 !== peg$FAILED) {
                peg$savedPos = peg$currPos;
                s9 = peg$f367(s5);
                if (s9) {
                  s9 = void 0;
                } else {
                  s9 = peg$FAILED;
                }
                if (s9 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f368(s5);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e329);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedCommandBrackets, "peg$parseUnifiedCommandBrackets");
  function peg$parseUnifiedRunContent() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c114) {
      s1 = peg$c114;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e331);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedRunContentInner();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c115) {
          s5 = peg$c115;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e332);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f369(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e330);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedRunContent, "peg$parseUnifiedRunContent");
  function peg$parseUnifiedRunContentInner() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseRunCodeLanguage();
    if (s1 !== peg$FAILED) {
      s2 = peg$parse_();
      s3 = peg$currPos;
      peg$parseUnifiedCodeContent();
      s3 = input.substring(s3, peg$currPos);
      peg$savedPos = s0;
      s0 = peg$f370(s1, s2, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnifiedCommandParts();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f371(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseUnifiedRunContentInner, "peg$parseUnifiedRunContentInner");
  function peg$parseShellCommandLineContent() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = input.charAt(peg$currPos);
    if (peg$r50.test(s3)) {
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e333);
      }
    }
    while (s3 !== peg$FAILED) {
      s2.push(s3);
      s3 = input.charAt(peg$currPos);
      if (peg$r50.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e333);
        }
      }
    }
    s1 = input.substring(s1, peg$currPos);
    peg$savedPos = s0;
    s1 = peg$f372(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseShellCommandLineContent, "peg$parseShellCommandLineContent");
  function peg$parseUnifiedCommandParts() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f373();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseUnifiedCommandToken();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseUnifiedCommandToken();
      }
      peg$savedPos = s0;
      s0 = peg$f374(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedCommandParts, "peg$parseUnifiedCommandParts");
  function peg$parseUnifiedCommandToken() {
    var s0;
    s0 = peg$parseVariableNoTail();
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedCommandQuotedString();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedCommandWord();
        if (s0 === peg$FAILED) {
          s0 = peg$parseUnifiedCommandSpace();
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedCommandToken, "peg$parseUnifiedCommandToken");
  function peg$parseUnifiedCommandQuotedString() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseUnifiedDoubleQuotedContent();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseUnifiedDoubleQuotedContent();
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f375(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c9;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseUnifiedCommandSingleQuotedContent();
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseUnifiedCommandSingleQuotedContent();
        }
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c9;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f376(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedCommandQuotedString, "peg$parseUnifiedCommandQuotedString");
  function peg$parseUnifiedDoubleQuotedContent() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = peg$parseVariableNoTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f377(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseFileReferenceInterpolation();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f378(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        s2 = [];
        s3 = peg$currPos;
        s4 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 34) {
          s5 = peg$c20;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        peg$silentFails--;
        if (s5 === peg$FAILED) {
          s4 = void 0;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 64) {
            s6 = peg$c37;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$currPos;
            peg$silentFails++;
            if (input.charCodeAt(peg$currPos) === 60) {
              s7 = peg$c19;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e47);
              }
            }
            peg$silentFails--;
            if (s7 === peg$FAILED) {
              s6 = void 0;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s7 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              if (s7 !== peg$FAILED) {
                s4 = [
                  s4,
                  s5,
                  s6,
                  s7
                ];
                s3 = s4;
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = peg$currPos;
            s4 = peg$currPos;
            peg$silentFails++;
            if (input.charCodeAt(peg$currPos) === 34) {
              s5 = peg$c20;
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e55);
              }
            }
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s4 = void 0;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
            if (s4 !== peg$FAILED) {
              s5 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 64) {
                s6 = peg$c37;
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e102);
                }
              }
              peg$silentFails--;
              if (s6 === peg$FAILED) {
                s5 = void 0;
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
              if (s5 !== peg$FAILED) {
                s6 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 60) {
                  s7 = peg$c19;
                  peg$currPos++;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e47);
                  }
                }
                peg$silentFails--;
                if (s7 === peg$FAILED) {
                  s6 = void 0;
                } else {
                  peg$currPos = s6;
                  s6 = peg$FAILED;
                }
                if (s6 !== peg$FAILED) {
                  if (input.length > peg$currPos) {
                    s7 = input.charAt(peg$currPos);
                    peg$currPos++;
                  } else {
                    s7 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e8);
                    }
                  }
                  if (s7 !== peg$FAILED) {
                    s4 = [
                      s4,
                      s5,
                      s6,
                      s7
                    ];
                    s3 = s4;
                  } else {
                    peg$currPos = s3;
                    s3 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s3;
                  s3 = peg$FAILED;
                }
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
          }
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          s1 = input.substring(s1, peg$currPos);
        } else {
          s1 = s2;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f379(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 64) {
            s1 = peg$c37;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f380();
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 60) {
              s1 = peg$c19;
              peg$currPos++;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e47);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f381();
            }
            s0 = s1;
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedDoubleQuotedContent, "peg$parseUnifiedDoubleQuotedContent");
  function peg$parseUnifiedCommandSingleQuotedContent() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = peg$currPos;
    s4 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 39) {
      s5 = peg$c9;
      peg$currPos++;
    } else {
      s5 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e24);
      }
    }
    peg$silentFails--;
    if (s5 === peg$FAILED) {
      s4 = void 0;
    } else {
      peg$currPos = s4;
      s4 = peg$FAILED;
    }
    if (s4 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s5 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s5 !== peg$FAILED) {
        s4 = [
          s4,
          s5
        ];
        s3 = s4;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 39) {
          s5 = peg$c9;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        peg$silentFails--;
        if (s5 === peg$FAILED) {
          s4 = void 0;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s5 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s5 !== peg$FAILED) {
            s4 = [
              s4,
              s5
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f382(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnifiedCommandSingleQuotedContent, "peg$parseUnifiedCommandSingleQuotedContent");
  function peg$parseUnifiedCommandWord() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedCommandWordChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseUnifiedCommandWordChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f383(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnifiedCommandWord, "peg$parseUnifiedCommandWord");
  function peg$parseUnifiedCommandWordChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f384();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f385(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedCommandWordChar, "peg$parseUnifiedCommandWordChar");
  function peg$parseUnifiedCommandSpace() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r51.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e334);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r51.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e334);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f386(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnifiedCommandSpace, "peg$parseUnifiedCommandSpace");
  function peg$parseUnifiedCodeContent() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedCodeChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseUnifiedCodeChar();
    }
    peg$savedPos = s0;
    s1 = peg$f387(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnifiedCodeContent, "peg$parseUnifiedCodeContent");
  function peg$parseUnifiedCodeChar() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseDoubleQuoteChar();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseDoubleQuoteChar();
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f388(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c9;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseSingleQuoteChar();
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseSingleQuoteChar();
        }
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c9;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f389(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 96) {
          s1 = peg$c21;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e58);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = [];
          s3 = peg$parseBacktickChar();
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = peg$parseBacktickChar();
          }
          if (input.charCodeAt(peg$currPos) === 96) {
            s3 = peg$c21;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e58);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f390(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 2) === peg$c116) {
            s1 = peg$c116;
            peg$currPos += 2;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e335);
            }
          }
          if (s1 !== peg$FAILED) {
            s2 = [];
            s3 = peg$currPos;
            s4 = peg$currPos;
            peg$silentFails++;
            if (input.substr(peg$currPos, 2) === peg$c117) {
              s5 = peg$c117;
              peg$currPos += 2;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e336);
              }
            }
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s4 = void 0;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
            if (s4 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s5 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e8);
                }
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s3;
                s3 = peg$f391(s5);
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            while (s3 !== peg$FAILED) {
              s2.push(s3);
              s3 = peg$currPos;
              s4 = peg$currPos;
              peg$silentFails++;
              if (input.substr(peg$currPos, 2) === peg$c117) {
                s5 = peg$c117;
                peg$currPos += 2;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e336);
                }
              }
              peg$silentFails--;
              if (s5 === peg$FAILED) {
                s4 = void 0;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                if (input.length > peg$currPos) {
                  s5 = input.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e8);
                  }
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s3;
                  s3 = peg$f391(s5);
                } else {
                  peg$currPos = s3;
                  s3 = peg$FAILED;
                }
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
            }
            if (input.substr(peg$currPos, 2) === peg$c117) {
              s3 = peg$c117;
              peg$currPos += 2;
            } else {
              s3 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e336);
              }
            }
            if (s3 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f392(s2);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.substr(peg$currPos, 2) === peg$c103) {
              s1 = peg$c103;
              peg$currPos += 2;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e280);
              }
            }
            if (s1 !== peg$FAILED) {
              s2 = [];
              s3 = peg$currPos;
              s4 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 10) {
                s5 = peg$c2;
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e4);
                }
              }
              peg$silentFails--;
              if (s5 === peg$FAILED) {
                s4 = void 0;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                if (input.length > peg$currPos) {
                  s5 = input.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e8);
                  }
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s3;
                  s3 = peg$f393(s5);
                } else {
                  peg$currPos = s3;
                  s3 = peg$FAILED;
                }
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
              while (s3 !== peg$FAILED) {
                s2.push(s3);
                s3 = peg$currPos;
                s4 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 10) {
                  s5 = peg$c2;
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e4);
                  }
                }
                peg$silentFails--;
                if (s5 === peg$FAILED) {
                  s4 = void 0;
                } else {
                  peg$currPos = s4;
                  s4 = peg$FAILED;
                }
                if (s4 !== peg$FAILED) {
                  if (input.length > peg$currPos) {
                    s5 = input.charAt(peg$currPos);
                    peg$currPos++;
                  } else {
                    s5 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e8);
                    }
                  }
                  if (s5 !== peg$FAILED) {
                    peg$savedPos = s3;
                    s3 = peg$f393(s5);
                  } else {
                    peg$currPos = s3;
                    s3 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s3;
                  s3 = peg$FAILED;
                }
              }
              peg$savedPos = s0;
              s0 = peg$f394(s2);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 123) {
                s1 = peg$c77;
                peg$currPos++;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e204);
                }
              }
              if (s1 !== peg$FAILED) {
                s2 = peg$parseUnifiedCodeContent();
                if (s2 !== peg$FAILED) {
                  if (input.charCodeAt(peg$currPos) === 125) {
                    s3 = peg$c78;
                    peg$currPos++;
                  } else {
                    s3 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e205);
                    }
                  }
                  if (s3 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f395(s2);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 125) {
                  s2 = peg$c78;
                  peg$currPos++;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e205);
                  }
                }
                peg$silentFails--;
                if (s2 === peg$FAILED) {
                  s1 = void 0;
                } else {
                  peg$currPos = s1;
                  s1 = peg$FAILED;
                }
                if (s1 !== peg$FAILED) {
                  if (input.length > peg$currPos) {
                    s2 = input.charAt(peg$currPos);
                    peg$currPos++;
                  } else {
                    s2 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e8);
                    }
                  }
                  if (s2 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f396(s2);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedCodeChar, "peg$parseUnifiedCodeChar");
  function peg$parseDoubleQuoteChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e40);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f397(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 34) {
        s2 = peg$c20;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f398(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseDoubleQuoteChar, "peg$parseDoubleQuoteChar");
  function peg$parseSingleQuoteChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e40);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f399(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 39) {
        s2 = peg$c9;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f400(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseSingleQuoteChar, "peg$parseSingleQuoteChar");
  function peg$parseBacktickChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e40);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f401(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 96) {
        s2 = peg$c21;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e58);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f402(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseBacktickChar, "peg$parseBacktickChar");
  function peg$parseVarRHSContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseExpressionWithOperator();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenExpression();
      if (s0 === peg$FAILED) {
        s0 = peg$parseForExpression();
        if (s0 === peg$FAILED) {
          s0 = peg$parseForeachCommandExpression();
          if (s0 === peg$FAILED) {
            s0 = peg$parseFieldAccessExecPattern();
            if (s0 === peg$FAILED) {
              s0 = peg$parseExecInvocationPattern();
              if (s0 === peg$FAILED) {
                s0 = peg$parseCodeExecution();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseTemplateWithPipeline();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseTemplateStyleInterpolation();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseDataObjectLiteral();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseArrayLiteral();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseAlligatorWithFields();
                          if (s0 === peg$FAILED) {
                            s0 = peg$parseAlligatorExpression();
                            if (s0 === peg$FAILED) {
                              s0 = peg$parseVariableWithSpacedPipes();
                              if (s0 === peg$FAILED) {
                                s0 = peg$parseVariableReferenceWithTail();
                                if (s0 === peg$FAILED) {
                                  s0 = peg$parseNestedDirective();
                                  if (s0 === peg$FAILED) {
                                    s0 = peg$parsePrimitiveValue();
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e337);
      }
    }
    return s0;
  }
  __name(peg$parseVarRHSContent, "peg$parseVarRHSContent");
  function peg$parseExpressionWithOperator() {
    var s0, s1, s2;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f403();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseExpression();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f404(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExpressionWithOperator, "peg$parseExpressionWithOperator");
  function peg$parseAlligatorWithFields() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseAlligatorExpression();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseAnyFieldAccess();
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseAnyFieldAccess();
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseCondensedPipeChain();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f405(s1, s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e338);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorWithFields, "peg$parseAlligatorWithFields");
  function peg$parseTemplateWithPipeline() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTemplateStyleInterpolation();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCondensedPipeChain();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f406(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e339);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateWithPipeline, "peg$parseTemplateWithPipeline");
  function peg$parseVariableWithSpacedPipes() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s9, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseAnyFieldAccess();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseAnyFieldAccess();
        }
        s4 = peg$currPos;
        s5 = peg$parse_();
        s6 = peg$currPos;
        s7 = "";
        peg$savedPos = s6;
        s7 = peg$f407(s2, s3);
        s6 = s7;
        if (input.charCodeAt(peg$currPos) === 124) {
          s7 = peg$c44;
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e122);
          }
        }
        if (s7 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s9 = peg$c37;
            peg$currPos++;
          } else {
            s9 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          if (s9 !== peg$FAILED) {
            s10 = peg$parseBaseIdentifier();
            if (s10 !== peg$FAILED) {
              peg$savedPos = s4;
              s4 = peg$f408(s2, s3, s6, s10);
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        s5 = [];
        s6 = peg$parseSpacedOrCondensedPipe();
        while (s6 !== peg$FAILED) {
          s5.push(s6);
          s6 = peg$parseSpacedOrCondensedPipe();
        }
        peg$savedPos = s0;
        s0 = peg$f409(s2, s3, s4, s5);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e340);
      }
    }
    return s0;
  }
  __name(peg$parseVariableWithSpacedPipes, "peg$parseVariableWithSpacedPipes");
  function peg$parseSpacedOrCondensedPipe() {
    var s0, s2, s3, s5, s6;
    s0 = peg$currPos;
    peg$parse_();
    s2 = peg$currPos;
    s3 = "";
    peg$savedPos = s2;
    s3 = peg$f410();
    s2 = s3;
    if (input.charCodeAt(peg$currPos) === 124) {
      s3 = peg$c44;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e122);
      }
    }
    if (s3 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 64) {
        s5 = peg$c37;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e102);
        }
      }
      if (s5 !== peg$FAILED) {
        s6 = peg$parseBaseIdentifier();
        if (s6 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f411(s2, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSpacedOrCondensedPipe, "peg$parseSpacedOrCondensedPipe");
  function peg$parseFieldAccessExecPattern() {
    var s0, s1, s2, s3, s4, s5, s7, s8;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseAnyFieldAccess();
        if (s4 !== peg$FAILED) {
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$parseAnyFieldAccess();
          }
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 40) {
            s4 = peg$c74;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e158);
            }
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$parseCommandArgumentList();
            if (s5 === peg$FAILED) {
              s5 = null;
            }
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s7 = peg$c75;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e159);
              }
            }
            if (s7 !== peg$FAILED) {
              s8 = peg$parseTailModifiers();
              if (s8 === peg$FAILED) {
                s8 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f412(s2, s3, s5, s8);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e322);
      }
    }
    return s0;
  }
  __name(peg$parseFieldAccessExecPattern, "peg$parseFieldAccessExecPattern");
  function peg$parseExecInvocationPattern() {
    var s0, s1, s2, s3, s4, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s3 = peg$c74;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e158);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseCommandArgumentList();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s6 = peg$c75;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e159);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$parseTailModifiers();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f413(s2, s4, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e341);
      }
    }
    return s0;
  }
  __name(peg$parseExecInvocationPattern, "peg$parseExecInvocationPattern");
  function peg$parsePrimitiveValue() {
    var s0;
    s0 = peg$parseExpressionString();
    if (s0 === peg$FAILED) {
      s0 = peg$parseNumberLiteral();
      if (s0 === peg$FAILED) {
        s0 = peg$parseBooleanLiteral();
        if (s0 === peg$FAILED) {
          s0 = peg$parseNullLiteral();
        }
      }
    }
    return s0;
  }
  __name(peg$parsePrimitiveValue, "peg$parsePrimitiveValue");
  function peg$parseObjectPropertyValue() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseDataPropertyValue();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e342);
      }
    }
    return s0;
  }
  __name(peg$parseObjectPropertyValue, "peg$parseObjectPropertyValue");
  function peg$parseRunCommandValue() {
    var s0, s1, s3, s4, s5, s6;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c48) {
      s1 = peg$c48;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e127);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$currPos;
        s5 = [];
        s6 = input.charAt(peg$currPos);
        if (peg$r41.test(s6)) {
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e274);
          }
        }
        while (s6 !== peg$FAILED) {
          s5.push(s6);
          s6 = input.charAt(peg$currPos);
          if (peg$r41.test(s6)) {
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e274);
            }
          }
        }
        s4 = input.substring(s4, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 34) {
          s5 = peg$c20;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f414(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c48) {
        s1 = peg$c48;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e127);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseUnifiedCommandBrackets();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f415(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 3) === peg$c48) {
          s1 = peg$c48;
          peg$currPos += 3;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e127);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s3 = peg$c37;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$parseUnifiedReferenceWithTail();
            if (s4 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f416(s4);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseRunCommandValue, "peg$parseRunCommandValue");
  function peg$parseCodeExecutionValue() {
    var s0, s2, s4, s6, s8;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      peg$currPos++;
    } else {
      if (peg$silentFails === 0) {
        peg$fail(peg$e60);
      }
    }
    s2 = peg$parseVarCodeLanguage();
    if (s2 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 123) {
        s4 = peg$c77;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e204);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseCodeBlockContent();
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 125) {
          s8 = peg$c78;
          peg$currPos++;
        } else {
          s8 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e205);
          }
        }
        if (s8 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f417(s2, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCodeExecutionValue, "peg$parseCodeExecutionValue");
  function peg$parsePropertyKey() {
    var s0;
    s0 = peg$parseBaseIdentifier();
    if (s0 === peg$FAILED) {
      s0 = peg$parseDataString();
    }
    return s0;
  }
  __name(peg$parsePropertyKey, "peg$parsePropertyKey");
  function peg$parseNestedDirective() {
    var s0, s3, s5, s7, s9, s11;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      peg$currPos++;
    } else {
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (input.charCodeAt(peg$currPos) === 47) {
      peg$currPos++;
    } else {
      if (peg$silentFails === 0) {
        peg$fail(peg$e60);
      }
    }
    if (input.substr(peg$currPos, 3) === peg$c48) {
      s3 = peg$c48;
      peg$currPos += 3;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e127);
      }
    }
    if (s3 !== peg$FAILED) {
      peg$parse_();
      s5 = peg$parseVarCodeLanguage();
      if (s5 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 123) {
          s7 = peg$c77;
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e204);
          }
        }
        if (s7 !== peg$FAILED) {
          peg$parse_();
          s9 = peg$parseCodeBlockContent();
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 125) {
            s11 = peg$c78;
            peg$currPos++;
          } else {
            s11 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e205);
            }
          }
          if (s11 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f418(s5, s9);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        peg$currPos++;
      } else {
        if (peg$silentFails === 0) {
          peg$fail(peg$e102);
        }
      }
      if (input.charCodeAt(peg$currPos) === 47) {
        peg$currPos++;
      } else {
        if (peg$silentFails === 0) {
          peg$fail(peg$e60);
        }
      }
      if (input.substr(peg$currPos, 3) === peg$c48) {
        s3 = peg$c48;
        peg$currPos += 3;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e127);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 91) {
          s5 = peg$c41;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e117);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseCommandContent();
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 93) {
            s9 = peg$c42;
            peg$currPos++;
          } else {
            s9 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e118);
            }
          }
          if (s9 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f419(s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseNestedDirective, "peg$parseNestedDirective");
  function peg$parseCommandContent() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 93) {
      s4 = peg$c42;
      peg$currPos++;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e118);
      }
    }
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s4 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s4 !== peg$FAILED) {
        s3 = [
          s3,
          s4
        ];
        s2 = s3;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$currPos;
      s3 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 93) {
        s4 = peg$c42;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e118);
        }
      }
      peg$silentFails--;
      if (s4 === peg$FAILED) {
        s3 = void 0;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s4 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s4 !== peg$FAILED) {
          s3 = [
            s3,
            s4
          ];
          s2 = s3;
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    }
    peg$savedPos = s0;
    s1 = peg$f420(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseCommandContent, "peg$parseCommandContent");
  function peg$parseCodeExecution() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c22;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e60);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 3) === peg$c48) {
      s2 = peg$c48;
      peg$currPos += 3;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e127);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parse_();
      s4 = peg$parseVarCodeLanguage();
      if (s4 !== peg$FAILED) {
        s5 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 123) {
          s6 = peg$c77;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e204);
          }
        }
        if (s6 !== peg$FAILED) {
          s7 = peg$parse_();
          s8 = peg$parseCodeBlockContent();
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 125) {
            s10 = peg$c78;
            peg$currPos++;
          } else {
            s10 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e205);
            }
          }
          if (s10 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f421(s4, s8);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 47) {
        s1 = peg$c22;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e60);
        }
      }
      if (s1 === peg$FAILED) {
        s1 = null;
      }
      if (input.substr(peg$currPos, 3) === peg$c48) {
        s2 = peg$c48;
        peg$currPos += 3;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e127);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parse_();
        s4 = peg$parseUnifiedCommandBrackets();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f422(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseVarCodeLanguage();
        if (s1 !== peg$FAILED) {
          s2 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 123) {
            s3 = peg$c77;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e204);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$parse_();
            s5 = peg$parseCodeBlockContent();
            s6 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 125) {
              s7 = peg$c78;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e205);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f423(s1, s5);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e343);
      }
    }
    return s0;
  }
  __name(peg$parseCodeExecution, "peg$parseCodeExecution");
  function peg$parseVarCodeLanguage() {
    var s0;
    peg$silentFails++;
    if (input.substr(peg$currPos, 2) === peg$c118) {
      s0 = peg$c118;
      peg$currPos += 2;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e345);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 10) === peg$c119) {
        s0 = peg$c119;
        peg$currPos += 10;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e346);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c59) {
          s0 = peg$c59;
          peg$currPos += 4;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e139);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 6) === peg$c56) {
            s0 = peg$c56;
            peg$currPos += 6;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e136);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c61) {
              s0 = peg$c61;
              peg$currPos += 4;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e141);
              }
            }
            if (s0 === peg$FAILED) {
              if (input.substr(peg$currPos, 2) === peg$c60) {
                s0 = peg$c60;
                peg$currPos += 2;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e140);
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e344);
      }
    }
    return s0;
  }
  __name(peg$parseVarCodeLanguage, "peg$parseVarCodeLanguage");
  function peg$parseCodeBlockContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseCodeChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseCodeChar();
    }
    peg$savedPos = s0;
    s1 = peg$f424(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e347);
    }
    return s0;
  }
  __name(peg$parseCodeBlockContent, "peg$parseCodeBlockContent");
  function peg$parseCodeChar() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c77;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e204);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCodeBlockContent();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 125) {
          s3 = peg$c78;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e205);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f425(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 125) {
        s2 = peg$c78;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e205);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f426(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseCodeChar, "peg$parseCodeChar");
  function peg$parseWhenExpression() {
    var s0, s1, s3, s5, s7, s9, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c120) {
      s1 = peg$c120;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e349);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c54;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e134);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 91) {
          s5 = peg$c41;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e117);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseWhenExpressionConditionList();
          if (s7 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 93) {
              s9 = peg$c42;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e118);
              }
            }
            if (s9 !== peg$FAILED) {
              s10 = peg$parseTailModifiers();
              if (s10 === peg$FAILED) {
                s10 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f427(s7, s10);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 4) === peg$c120) {
        s1 = peg$c120;
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e349);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 58) {
          s3 = peg$c54;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e134);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 91) {
            s5 = peg$c41;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e117);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$parse_();
            peg$savedPos = peg$currPos;
            s7 = peg$f428();
            if (s7) {
              s7 = void 0;
            } else {
              s7 = peg$FAILED;
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f429();
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 4) === peg$c120) {
          s1 = peg$c120;
          peg$currPos += 4;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e349);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 58) {
            s3 = peg$c54;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e134);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$parse_();
            peg$savedPos = s0;
            s0 = peg$f430();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 4) === peg$c120) {
            s1 = peg$c120;
            peg$currPos += 4;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e349);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$parse_();
            peg$savedPos = peg$currPos;
            s3 = peg$f431();
            if (s3) {
              s3 = void 0;
            } else {
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f432();
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e348);
      }
    }
    return s0;
  }
  __name(peg$parseWhenExpression, "peg$parseWhenExpression");
  function peg$parseWhenExpressionConditionList() {
    var s0, s1, s2, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseWhenExpressionConditionPair();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      s5 = peg$parseWhenExpressionConditionPair();
      if (s5 !== peg$FAILED) {
        peg$savedPos = s3;
        s3 = peg$f433(s1, s5);
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        s5 = peg$parseWhenExpressionConditionPair();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f433(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f434(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenExpressionConditionList, "peg$parseWhenExpressionConditionList");
  function peg$parseWhenExpressionConditionPair() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseWhenConditionExpression();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c121) {
        s3 = peg$c121;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e350);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseVarRHSContent();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f435(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenExpressionConditionPair, "peg$parseWhenExpressionConditionPair");
  function peg$parseForExpression() {
    var s0, s1, s3, s4, s5, s6, s7, s8, s10, s11;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c122) {
      s1 = peg$c122;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e352);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseForIterationPattern();
      if (s3 !== peg$FAILED) {
        s4 = peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c121) {
          s5 = peg$c121;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e350);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parse_();
          s7 = peg$parseVarRHSContent();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f436(s3, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c122) {
        s1 = peg$c122;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e352);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 64) {
          s3 = peg$c37;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e102);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseBaseIdentifier();
          if (s4 !== peg$FAILED) {
            s5 = peg$parse_();
            if (input.substr(peg$currPos, 2) === peg$c90) {
              s6 = peg$c90;
              peg$currPos += 2;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e243);
              }
            }
            if (s6 !== peg$FAILED) {
              s7 = peg$parse_();
              s8 = peg$parseVarRHSContent();
              if (s8 !== peg$FAILED) {
                peg$parse_();
                s10 = peg$currPos;
                peg$silentFails++;
                if (input.substr(peg$currPos, 2) === peg$c121) {
                  s11 = peg$c121;
                  peg$currPos += 2;
                } else {
                  s11 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e350);
                  }
                }
                peg$silentFails--;
                if (s11 === peg$FAILED) {
                  s10 = void 0;
                } else {
                  peg$currPos = s10;
                  s10 = peg$FAILED;
                }
                if (s10 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f437(s4, s8);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 3) === peg$c122) {
          s1 = peg$c122;
          peg$currPos += 3;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e352);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s3 = peg$c37;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$parseBaseIdentifier();
            if (s4 !== peg$FAILED) {
              s5 = peg$parse_();
              s6 = peg$currPos;
              peg$silentFails++;
              if (input.substr(peg$currPos, 2) === peg$c90) {
                s7 = peg$c90;
                peg$currPos += 2;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e243);
                }
              }
              peg$silentFails--;
              if (s7 === peg$FAILED) {
                s6 = void 0;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
              if (s6 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f438(s4);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 3) === peg$c122) {
            s1 = peg$c122;
            peg$currPos += 3;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e352);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$parse_();
            s3 = peg$currPos;
            peg$silentFails++;
            if (input.substr(peg$currPos, 4) === peg$c123) {
              s4 = peg$c123;
              peg$currPos += 4;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e353);
              }
            }
            peg$silentFails--;
            if (s4 === peg$FAILED) {
              s3 = void 0;
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              s4 = peg$parse_();
              s5 = peg$currPos;
              peg$silentFails++;
              s6 = peg$parseBaseIdentifier();
              peg$silentFails--;
              if (s6 === peg$FAILED) {
                s5 = void 0;
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f439();
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e351);
      }
    }
    return s0;
  }
  __name(peg$parseForExpression, "peg$parseForExpression");
  function peg$parseVariable() {
    var s0;
    s0 = peg$parseSpecialVariable();
    if (s0 === peg$FAILED) {
      s0 = peg$parseInterpolationVar();
      if (s0 === peg$FAILED) {
        s0 = peg$parseAtVar();
      }
    }
    return s0;
  }
  __name(peg$parseVariable, "peg$parseVariable");
  function peg$parseSpecialVariable() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseSpecialVariableName();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f440(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e354);
      }
    }
    return s0;
  }
  __name(peg$parseSpecialVariable, "peg$parseSpecialVariable");
  function peg$parseSpecialVariableName() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c124) {
      s1 = peg$c124;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e355);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f441();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 4) === peg$c125) {
        s1 = peg$c125;
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e356);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f442();
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 5) === peg$c126) {
          s1 = peg$c126;
          peg$currPos += 5;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e357);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f443();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 5) === peg$c127) {
            s1 = peg$c127;
            peg$currPos += 5;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e358);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f444();
          }
          s0 = s1;
        }
      }
    }
    return s0;
  }
  __name(peg$parseSpecialVariableName, "peg$parseSpecialVariableName");
  function peg$parseAtVar() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseVariableContext();
      if (s2 !== peg$FAILED) {
        s3 = peg$parseFrontmatterAccess();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f445(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c37;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e102);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseVariableContext();
        if (s2 !== peg$FAILED) {
          s3 = peg$parseBaseIdentifier();
          if (s3 !== peg$FAILED) {
            s4 = [];
            s5 = peg$parseAnyFieldAccess();
            while (s5 !== peg$FAILED) {
              s4.push(s5);
              s5 = peg$parseAnyFieldAccess();
            }
            peg$savedPos = s0;
            s0 = peg$f446(s3, s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 64) {
          s1 = peg$c37;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e102);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$parseBaseIdentifier();
          if (s2 !== peg$FAILED) {
            s3 = peg$currPos;
            peg$silentFails++;
            if (input.charCodeAt(peg$currPos) === 91) {
              s4 = peg$c41;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e117);
              }
            }
            peg$silentFails--;
            if (s4 !== peg$FAILED) {
              peg$currPos = s3;
              s3 = void 0;
            } else {
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              s4 = [];
              s5 = peg$parseAnyFieldAccess();
              if (s5 !== peg$FAILED) {
                while (s5 !== peg$FAILED) {
                  s4.push(s5);
                  s5 = peg$parseAnyFieldAccess();
                }
              } else {
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f447(s2, s4);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseAtVar, "peg$parseAtVar");
  function peg$parseInterpolationVar() {
    var s0;
    s0 = peg$parseInterpolationSpecialVar();
    if (s0 === peg$FAILED) {
      s0 = peg$parseInterpolationSimpleVar();
      if (s0 === peg$FAILED) {
        s0 = peg$parseInterpolationDataVar();
      }
    }
    return s0;
  }
  __name(peg$parseInterpolationVar, "peg$parseInterpolationVar");
  function peg$parseInterpolationSpecialVar() {
    var s0, s1, s3, s4, s6;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c3) {
      s1 = peg$c3;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e5);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseSpecialVariableName();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseVarFormat();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c4) {
          s6 = peg$c4;
          peg$currPos += 2;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f448(s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseInterpolationSpecialVar, "peg$parseInterpolationSpecialVar");
  function peg$parseInterpolationSimpleVar() {
    var s0, s1, s3, s4, s6;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c3) {
      s1 = peg$c3;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e5);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseBaseIdentifier();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseVarFormat();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c4) {
          s6 = peg$c4;
          peg$currPos += 2;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f449(s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseInterpolationSimpleVar, "peg$parseInterpolationSimpleVar");
  function peg$parseInterpolationDataVar() {
    var s0, s1, s3, s4, s5, s7;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c3) {
      s1 = peg$c3;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e5);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseBaseIdentifier();
      if (s3 !== peg$FAILED) {
        s4 = [];
        s5 = peg$parseAnyFieldAccess();
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          s5 = peg$parseAnyFieldAccess();
        }
        s5 = peg$parseVarFormat();
        if (s5 === peg$FAILED) {
          s5 = null;
        }
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c4) {
          s7 = peg$c4;
          peg$currPos += 2;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s7 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f450(s3, s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseInterpolationDataVar, "peg$parseInterpolationDataVar");
  function peg$parseVarFormat() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c0) {
      s1 = peg$c0;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e1);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f451(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseVarFormat, "peg$parseVarFormat");
  function peg$parseFrontmatterAccess() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 11) === peg$c128) {
      s1 = peg$c128;
      peg$currPos += 11;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e359);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c129) {
        s1 = peg$c129;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e360);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 46) {
        s2 = peg$c11;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e28);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseBaseIdentifier();
        if (s3 !== peg$FAILED) {
          s4 = [];
          s5 = peg$parseAnyFieldAccess();
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = peg$parseAnyFieldAccess();
          }
          peg$savedPos = s0;
          s0 = peg$f452(s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseFrontmatterAccess, "peg$parseFrontmatterAccess");
  function peg$parseVariableReferenceWithTail() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c74;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e158);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = [];
          s5 = peg$parseAnyFieldAccess();
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = peg$parseAnyFieldAccess();
          }
          s5 = peg$parse_();
          s6 = peg$parseTailModifiers();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f453(s2, s4, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e361);
      }
    }
    return s0;
  }
  __name(peg$parseVariableReferenceWithTail, "peg$parseVariableReferenceWithTail");
  function peg$parseVariableWithPipes() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseVariableNoTail();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCondensedPipeChain();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f454(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e362);
      }
    }
    return s0;
  }
  __name(peg$parseVariableWithPipes, "peg$parseVariableWithPipes");
  function peg$parseTemplateVariableReference() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseAnyFieldAccess();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseAnyFieldAccess();
        }
        s4 = peg$parseCondensedPipeChain();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f455(s2, s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e363);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateVariableReference, "peg$parseTemplateVariableReference");
  function peg$parseWithClause() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 4) === peg$c87) {
      s2 = peg$c87;
      peg$currPos += 4;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e239);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseWithObject();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f456(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWithClause, "peg$parseWithClause");
  function peg$parseWithObject() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c77;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e204);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWithProperties();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 125) {
        s5 = peg$c78;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e205);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f457(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWithObject, "peg$parseWithObject");
  function peg$parseWithProperties() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseWithProperty();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseWithProperty();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f458(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseWithProperty();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f458(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f459(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWithProperties, "peg$parseWithProperties");
  function peg$parseWithProperty() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 8) === peg$c113) {
      s1 = peg$c113;
      peg$currPos += 8;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e317);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c54;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e134);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parsePipelineArray();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f460(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 5) === peg$c96) {
        s1 = peg$c96;
        peg$currPos += 5;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e257);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 58) {
          s3 = peg$c54;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e134);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseNeedsObject();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f461(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 6) === peg$c130) {
          s1 = peg$c130;
          peg$currPos += 6;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e364);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 58) {
            s3 = peg$c54;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e134);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$parse_();
            s5 = peg$parseDataString();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f462(s5);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 9) === peg$c131) {
            s1 = peg$c131;
            peg$currPos += 9;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e365);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 58) {
              s3 = peg$c54;
              peg$currPos++;
            } else {
              s3 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e134);
              }
            }
            if (s3 !== peg$FAILED) {
              peg$parse_();
              s5 = peg$parseAsSectionRenameString();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f463(s5);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseWithProperty, "peg$parseWithProperty");
  function peg$parsePipelineArray() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c41;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parsePipelineCommandList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 93) {
        s5 = peg$c42;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e118);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f464(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipelineArray, "peg$parsePipelineArray");
  function peg$parsePipelineCommandList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parsePipelineCommand();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parsePipelineCommand();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f465(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parsePipelineCommand();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f465(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f466(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipelineCommandList, "peg$parsePipelineCommandList");
  function peg$parsePipelineCommand() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceNoTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f467(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parsePipelineCommand, "peg$parsePipelineCommand");
  function peg$parseNeedsObject() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c77;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e204);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseNeedsLanguageList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 125) {
        s5 = peg$c78;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e205);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f468(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsObject, "peg$parseNeedsObject");
  function peg$parseNeedsLanguageList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseNeedsLanguageEntry();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseNeedsLanguageEntry();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f469(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseNeedsLanguageEntry();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f469(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f470(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsLanguageList, "peg$parseNeedsLanguageList");
  function peg$parseNeedsLanguageEntry() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseDataString();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c54;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e134);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parsePackagesObject();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f471(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsLanguageEntry, "peg$parseNeedsLanguageEntry");
  function peg$parsePackagesObject() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c77;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e204);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parsePackagesList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 125) {
        s5 = peg$c78;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e205);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f472(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePackagesObject, "peg$parsePackagesObject");
  function peg$parsePackagesList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parsePackageEntry();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parsePackageEntry();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f473(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parsePackageEntry();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f473(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f474(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePackagesList, "peg$parsePackagesList");
  function peg$parsePackageEntry() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseDataString();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c54;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e134);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseDataString();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f475(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePackageEntry, "peg$parsePackageEntry");
  function peg$parseAddPathCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parsePathExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f476(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseAddPathCore, "peg$parseAddPathCore");
  function peg$parseAddTemplateCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseTemplateCore();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f477(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseAddTemplateCore, "peg$parseAddTemplateCore");
  function peg$parseAddVariableCore() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseAtVar();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f478(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAddVariableCore, "peg$parseAddVariableCore");
  function peg$parseAddTemplateInvocationCore() {
    var s0, s1, s2, s4, s6, s8;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c74;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e158);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseTemplateArgumentList();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s8 = peg$c75;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e159);
            }
          }
          if (s8 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f479(s2, s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAddTemplateInvocationCore, "peg$parseAddTemplateInvocationCore");
  function peg$parseAddPathSectionCore() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = peg$parseQuotedContent();
    if (s1 !== peg$FAILED) {
      s2 = peg$parse_();
      if (input.substr(peg$currPos, 4) === peg$c132) {
        s3 = peg$c132;
        peg$currPos += 4;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e366);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parse_();
        s5 = peg$parsePathExpression();
        if (s5 !== peg$FAILED) {
          s6 = peg$parseAsNewTitle();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f480(s1, s5, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c41;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e117);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = input.charAt(peg$currPos);
        if (peg$r52.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e367);
          }
        }
        if (s4 !== peg$FAILED) {
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = input.charAt(peg$currPos);
            if (peg$r52.test(s4)) {
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e367);
              }
            }
          }
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s2 = input.substring(s2, peg$currPos);
        } else {
          s2 = s3;
        }
        if (s2 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 35) {
            s3 = peg$c23;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e63);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$parse_();
            s5 = peg$currPos;
            s6 = [];
            s7 = input.charAt(peg$currPos);
            if (peg$r34.test(s7)) {
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e198);
              }
            }
            if (s7 !== peg$FAILED) {
              while (s7 !== peg$FAILED) {
                s6.push(s7);
                s7 = input.charAt(peg$currPos);
                if (peg$r34.test(s7)) {
                  peg$currPos++;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e198);
                  }
                }
              }
            } else {
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              s5 = input.substring(s5, peg$currPos);
            } else {
              s5 = s6;
            }
            if (s5 !== peg$FAILED) {
              if (input.charCodeAt(peg$currPos) === 93) {
                s6 = peg$c42;
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e118);
                }
              }
              if (s6 !== peg$FAILED) {
                s7 = peg$parseAsNewTitle();
                if (s7 === peg$FAILED) {
                  s7 = null;
                }
                peg$savedPos = s0;
                s0 = peg$f481(s2, s5, s7);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseAddPathSectionCore, "peg$parseAddPathSectionCore");
  function peg$parseAddCore() {
    var s0;
    s0 = peg$parseAddPathSectionCore();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAddTemplateInvocationCore();
      if (s0 === peg$FAILED) {
        s0 = peg$parseAddTemplateCore();
        if (s0 === peg$FAILED) {
          s0 = peg$parseAddVariableCore();
          if (s0 === peg$FAILED) {
            s0 = peg$parseAddPathCore();
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseAddCore, "peg$parseAddCore");
  function peg$parseCodeCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseWrappedCodeContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f482(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCodeCore, "peg$parseCodeCore");
  function peg$parseLanguageCodeCore() {
    var s0, s1, s3;
    s0 = peg$currPos;
    s1 = peg$parseCodeLanguage();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWrappedCodeContent();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f483(s1, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseLanguageCodeCore, "peg$parseLanguageCodeCore");
  function peg$parseRunLanguageCodeCore() {
    var s0, s1, s3;
    s0 = peg$currPos;
    s1 = peg$parseRunCodeLanguage();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedCodeBrackets();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f484(s1, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRunLanguageCodeCore, "peg$parseRunLanguageCodeCore");
  function peg$parseRunLanguageCodeWithArgs() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseRunCodeLanguage();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseRunCodeArguments();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseUnifiedCodeBrackets();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f485(s1, s3, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRunLanguageCodeWithArgs, "peg$parseRunLanguageCodeWithArgs");
  function peg$parseCodeLanguage() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    s3 = peg$parseBaseIdentifier();
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s6 = peg$c11;
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e28);
        }
      }
      if (s6 !== peg$FAILED) {
        s7 = peg$parseBaseIdentifier();
        if (s7 !== peg$FAILED) {
          s6 = [
            s6,
            s7
          ];
          s5 = s6;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 46) {
          s6 = peg$c11;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e28);
          }
        }
        if (s6 !== peg$FAILED) {
          s7 = peg$parseBaseIdentifier();
          if (s7 !== peg$FAILED) {
            s6 = [
              s6,
              s7
            ];
            s5 = s6;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s3 = [
        s3,
        s4
      ];
      s2 = s3;
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f486(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCodeLanguage, "peg$parseCodeLanguage");
  function peg$parseRunCodeLanguage() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 10) === peg$c119) {
      s1 = peg$c119;
      peg$currPos += 10;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e346);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c118) {
        s1 = peg$c118;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e345);
        }
      }
      if (s1 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c59) {
          s1 = peg$c59;
          peg$currPos += 4;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e139);
          }
        }
        if (s1 === peg$FAILED) {
          if (input.substr(peg$currPos, 6) === peg$c133) {
            s1 = peg$c133;
            peg$currPos += 6;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e368);
            }
          }
          if (s1 === peg$FAILED) {
            if (input.substr(peg$currPos, 6) === peg$c56) {
              s1 = peg$c56;
              peg$currPos += 6;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e136);
              }
            }
            if (s1 === peg$FAILED) {
              if (input.substr(peg$currPos, 2) === peg$c134) {
                s1 = peg$c134;
                peg$currPos += 2;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e369);
                }
              }
              if (s1 === peg$FAILED) {
                if (input.substr(peg$currPos, 4) === peg$c61) {
                  s1 = peg$c61;
                  peg$currPos += 4;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e141);
                  }
                }
                if (s1 === peg$FAILED) {
                  if (input.substr(peg$currPos, 2) === peg$c60) {
                    s1 = peg$c60;
                    peg$currPos += 2;
                  } else {
                    s1 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e140);
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f487(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseRunCodeLanguage, "peg$parseRunCodeLanguage");
  function peg$parseRunCodeArguments() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c74;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e158);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseRunArgumentList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 41) {
        s5 = peg$c75;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e159);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f488(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRunCodeArguments, "peg$parseRunCodeArguments");
  function peg$parseRunArgumentList() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseRunArgument();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseRunArgument();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f489(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseRunArgument();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f489(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f490(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRunArgumentList, "peg$parseRunArgumentList");
  function peg$parseRunArgument() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseVariableNoTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f491(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseRunArgument, "peg$parseRunArgument");
  function peg$parseCommandCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseWrappedCommandContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f492(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCommandCore, "peg$parseCommandCore");
  function peg$parseParameterizedCommandCore() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseWrappedCommandContent();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCommandParameters();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f493(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseParameterizedCommandCore, "peg$parseParameterizedCommandCore");
  function peg$parseCommandParameters() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 58) {
      s1 = peg$c54;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e134);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseCommandParameterList();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f494(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCommandParameters, "peg$parseCommandParameters");
  function peg$parseCommandParameterList() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseCommandParameter();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseCommandParameter();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f495(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseCommandParameter();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f495(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f496(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCommandParameterList, "peg$parseCommandParameterList");
  function peg$parseCommandParameter() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 61) {
        s3 = peg$c84;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e231);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseStringLiteral();
        if (s5 === peg$FAILED) {
          s5 = peg$parseNumberLiteral();
          if (s5 === peg$FAILED) {
            s5 = peg$parseBooleanLiteral();
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f497(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCommandParameter, "peg$parseCommandParameter");
  function peg$parsePathCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parsePathExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f498(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parsePathCore, "peg$parsePathCore");
  function peg$parseSectionPathCore() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parsePathExpression();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 35) {
        s3 = peg$c23;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e63);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseBaseIdentifier();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f499(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSectionPathCore, "peg$parseSectionPathCore");
  function peg$parseURLPathCore() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseURLProtocol();
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 58) {
        s2 = peg$c54;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e134);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseURLContent();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f500(s1, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseURLPathCore, "peg$parseURLPathCore");
  function peg$parseURLProtocol() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c35) {
      s3 = peg$c35;
      peg$currPos += 4;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e95);
      }
    }
    if (s3 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 115) {
        s4 = peg$c101;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e277);
        }
      }
      if (s4 === peg$FAILED) {
        s4 = null;
      }
      s3 = [
        s3,
        s4
      ];
      s2 = s3;
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 === peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c102) {
        s2 = peg$c102;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e278);
        }
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f501(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseURLProtocol, "peg$parseURLProtocol");
  function peg$parseURLContent() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c103) {
      s3 = peg$c103;
      peg$currPos += 2;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e280);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = input.charAt(peg$currPos);
      if (peg$r53.test(s5)) {
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e370);
        }
      }
      if (s5 !== peg$FAILED) {
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          s5 = input.charAt(peg$currPos);
          if (peg$r53.test(s5)) {
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e370);
            }
          }
        }
      } else {
        s4 = peg$FAILED;
      }
      if (s4 !== peg$FAILED) {
        s3 = [
          s3,
          s4
        ];
        s2 = s3;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f502(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseURLContent, "peg$parseURLContent");
  function peg$parseRunExecCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceNoTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f503(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseRunExecCore, "peg$parseRunExecCore");
  function peg$parseSectionExtractionCore() {
    var s0, s1, s3, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseLiteralContent();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 4) === peg$c132) {
        s3 = peg$c132;
        peg$currPos += 4;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e366);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parsePathExpression();
        if (s5 !== peg$FAILED) {
          s6 = peg$parseAsNewTitle();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f504(s1, s5, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e371);
      }
    }
    return s0;
  }
  __name(peg$parseSectionExtractionCore, "peg$parseSectionExtractionCore");
  function peg$parseTemplateCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseWrappedTemplateContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f505(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseTemplateCore, "peg$parseTemplateCore");
  function peg$parseRichTemplateCore() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseWrappedTemplateContent();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTemplateOptions();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f506(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRichTemplateCore, "peg$parseRichTemplateCore");
  function peg$parseTemplateOptions() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 58) {
      s1 = peg$c54;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e134);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseTemplateOptionsList();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f507(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTemplateOptions, "peg$parseTemplateOptions");
  function peg$parseTemplateOptionsList() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseTemplateOption();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseTemplateOption();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f508(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseTemplateOption();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f508(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f509(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTemplateOptionsList, "peg$parseTemplateOptionsList");
  function peg$parseTemplateOption() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 61) {
        s3 = peg$c84;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e231);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseStringLiteral();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f510(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTemplateOption, "peg$parseTemplateOption");
  function peg$parseSlashExe() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c27) {
        s2 = peg$c27;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e77);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 64) {
          s4 = peg$c37;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e102);
          }
        }
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        s5 = peg$parseBaseIdentifier();
        if (s5 !== peg$FAILED) {
          s6 = peg$parseExecMetadata();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          s7 = peg$parseExecParameters();
          if (s7 === peg$FAILED) {
            s7 = null;
          }
          s8 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 61) {
            s9 = peg$c84;
            peg$currPos++;
          } else {
            s9 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e231);
            }
          }
          if (s9 !== peg$FAILED) {
            s10 = peg$parse_();
            s11 = peg$parseExeRHSContent();
            if (s11 !== peg$FAILED) {
              s12 = peg$parseWithClause();
              if (s12 === peg$FAILED) {
                s12 = null;
              }
              s13 = peg$currPos;
              s14 = peg$parse_();
              s15 = peg$parseTrustOption();
              if (s15 !== peg$FAILED) {
                peg$savedPos = s13;
                s13 = peg$f511(s5, s6, s7, s11, s12, s15);
              } else {
                peg$currPos = s13;
                s13 = peg$FAILED;
              }
              if (s13 === peg$FAILED) {
                s13 = null;
              }
              s14 = peg$parseStandardDirectiveEnding();
              peg$savedPos = s0;
              s0 = peg$f512(s5, s6, s7, s11, s12, s13, s14);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c27) {
          s2 = peg$c27;
          peg$currPos += 4;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e77);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$parseBaseIdentifier();
          if (s4 !== peg$FAILED) {
            s5 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s6 = peg$c84;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e231);
              }
            }
            if (s6 !== peg$FAILED) {
              s7 = peg$parse_();
              s8 = peg$parseExeRHSContent();
              if (s8 !== peg$FAILED) {
                s9 = peg$parseWithClause();
                if (s9 === peg$FAILED) {
                  s9 = null;
                }
                s10 = peg$currPos;
                s11 = peg$parse_();
                s12 = peg$parseTrustOption();
                if (s12 !== peg$FAILED) {
                  peg$savedPos = s10;
                  s10 = peg$f513(s4, s8, s9, s12);
                } else {
                  peg$currPos = s10;
                  s10 = peg$FAILED;
                }
                if (s10 === peg$FAILED) {
                  s10 = null;
                }
                s11 = peg$parseStandardDirectiveEnding();
                peg$savedPos = s0;
                s0 = peg$f514(s4, s8, s9, s10, s11);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          if (input.substr(peg$currPos, 4) === peg$c27) {
            s2 = peg$c27;
            peg$currPos += 4;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e77);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$parse_();
            s4 = peg$parseBaseIdentifier();
            if (s4 !== peg$FAILED) {
              s5 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 61) {
                s6 = peg$c84;
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e231);
                }
              }
              if (s6 !== peg$FAILED) {
                s7 = peg$parse_();
                s8 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 123) {
                  s9 = peg$c77;
                  peg$currPos++;
                } else {
                  s9 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e204);
                  }
                }
                peg$silentFails--;
                if (s9 === peg$FAILED) {
                  s8 = void 0;
                } else {
                  peg$currPos = s8;
                  s8 = peg$FAILED;
                }
                if (s8 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f515(s4);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c27) {
              s2 = peg$c27;
              peg$currPos += 4;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e77);
              }
            }
            if (s2 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 64) {
                s4 = peg$c37;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e102);
                }
              }
              if (s4 !== peg$FAILED) {
                s5 = peg$parseBaseIdentifier();
                if (s5 !== peg$FAILED) {
                  s6 = peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 40) {
                    s7 = peg$c74;
                    peg$currPos++;
                  } else {
                    s7 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e158);
                    }
                  }
                  if (s7 !== peg$FAILED) {
                    s8 = [];
                    s9 = input.charAt(peg$currPos);
                    if (peg$r54.test(s9)) {
                      peg$currPos++;
                    } else {
                      s9 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e372);
                      }
                    }
                    while (s9 !== peg$FAILED) {
                      s8.push(s9);
                      s9 = input.charAt(peg$currPos);
                      if (peg$r54.test(s9)) {
                        peg$currPos++;
                      } else {
                        s9 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e372);
                        }
                      }
                    }
                    if (input.charCodeAt(peg$currPos) === 41) {
                      s9 = peg$c75;
                      peg$currPos++;
                    } else {
                      s9 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e159);
                      }
                    }
                    if (s9 !== peg$FAILED) {
                      s10 = peg$parse_();
                      s11 = peg$currPos;
                      peg$silentFails++;
                      if (input.charCodeAt(peg$currPos) === 61) {
                        s12 = peg$c84;
                        peg$currPos++;
                      } else {
                        s12 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e231);
                        }
                      }
                      peg$silentFails--;
                      if (s12 === peg$FAILED) {
                        s11 = void 0;
                      } else {
                        peg$currPos = s11;
                        s11 = peg$FAILED;
                      }
                      if (s11 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f516(s5);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              if (input.substr(peg$currPos, 4) === peg$c27) {
                s2 = peg$c27;
                peg$currPos += 4;
              } else {
                s2 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e77);
                }
              }
              if (s2 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 64) {
                  s4 = peg$c37;
                  peg$currPos++;
                } else {
                  s4 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e102);
                  }
                }
                if (s4 !== peg$FAILED) {
                  s5 = peg$parseBaseIdentifier();
                  if (s5 !== peg$FAILED) {
                    s6 = peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 40) {
                      s7 = peg$c74;
                      peg$currPos++;
                    } else {
                      s7 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e158);
                      }
                    }
                    if (s7 !== peg$FAILED) {
                      peg$savedPos = peg$currPos;
                      s8 = peg$f517(s5);
                      if (s8) {
                        s8 = void 0;
                      } else {
                        s8 = peg$FAILED;
                      }
                      if (s8 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f518(s5);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                if (input.substr(peg$currPos, 4) === peg$c27) {
                  s2 = peg$c27;
                  peg$currPos += 4;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e77);
                  }
                }
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 64) {
                    s4 = peg$c37;
                    peg$currPos++;
                  } else {
                    s4 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e102);
                    }
                  }
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parseBaseIdentifier();
                    if (s5 !== peg$FAILED) {
                      s6 = peg$parseExecParameters();
                      if (s6 === peg$FAILED) {
                        s6 = null;
                      }
                      s7 = peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 61) {
                        s8 = peg$c84;
                        peg$currPos++;
                      } else {
                        s8 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e231);
                        }
                      }
                      if (s8 !== peg$FAILED) {
                        s9 = peg$parse_();
                        s10 = peg$currPos;
                        peg$silentFails++;
                        if (input.length > peg$currPos) {
                          s11 = input.charAt(peg$currPos);
                          peg$currPos++;
                        } else {
                          s11 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e8);
                          }
                        }
                        peg$silentFails--;
                        if (s11 === peg$FAILED) {
                          s10 = void 0;
                        } else {
                          peg$currPos = s10;
                          s10 = peg$FAILED;
                        }
                        if (s10 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f519(s5, s6);
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  if (input.substr(peg$currPos, 4) === peg$c27) {
                    s2 = peg$c27;
                    peg$currPos += 4;
                  } else {
                    s2 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e77);
                    }
                  }
                  if (s2 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f520();
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashExe, "peg$parseSlashExe");
  function peg$parseExecMetadata() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 46) {
      s1 = peg$c11;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e28);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 9) === peg$c135) {
        s2 = peg$c135;
        peg$currPos += 9;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e373);
        }
      }
      if (s2 === peg$FAILED) {
        if (input.substr(peg$currPos, 8) === peg$c136) {
          s2 = peg$c136;
          peg$currPos += 8;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e374);
          }
        }
        if (s2 === peg$FAILED) {
          if (input.substr(peg$currPos, 8) === peg$c137) {
            s2 = peg$c137;
            peg$currPos += 8;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e375);
            }
          }
          if (s2 === peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c138) {
              s2 = peg$c138;
              peg$currPos += 4;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e376);
              }
            }
            if (s2 === peg$FAILED) {
              if (input.substr(peg$currPos, 5) === peg$c139) {
                s2 = peg$c139;
                peg$currPos += 5;
              } else {
                s2 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e377);
                }
              }
              if (s2 === peg$FAILED) {
                if (input.substr(peg$currPos, 4) === peg$c140) {
                  s2 = peg$c140;
                  peg$currPos += 4;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e378);
                  }
                }
              }
            }
          }
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f521(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecMetadata, "peg$parseExecMetadata");
  function peg$parseExecParameters() {
    var s0, s2, s4, s6;
    s0 = peg$currPos;
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 40) {
      s2 = peg$c74;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e158);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseExecParameterList();
      if (s4 === peg$FAILED) {
        s4 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 41) {
        s6 = peg$c75;
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e159);
        }
      }
      if (s6 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f522(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecParameters, "peg$parseExecParameters");
  function peg$parseExecParameterList() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseExecParameter();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c43;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseExecParameter();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f523(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c43;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseExecParameter();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f523(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f524(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecParameterList, "peg$parseExecParameterList");
  function peg$parseExecParameter() {
    var s0, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      peg$currPos++;
    } else {
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    s2 = peg$parseBaseIdentifier();
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f525(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecParameter, "peg$parseExecParameter");
  function peg$parseSlashForSimple() {
    var s0, s1, s2, s4, s6, s8, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c141) {
        s2 = peg$c141;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e380);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.substr(peg$currPos, 5) === peg$c142) {
          s4 = peg$c142;
          peg$currPos += 5;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e381);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c90) {
            s6 = peg$c90;
            peg$currPos += 2;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e243);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 91) {
              s8 = peg$c41;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e117);
              }
            }
            if (s8 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 93) {
                s10 = peg$c42;
                peg$currPos++;
              } else {
                s10 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e118);
                }
              }
              if (s10 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f526();
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e379);
      }
    }
    return s0;
  }
  __name(peg$parseSlashForSimple, "peg$parseSlashForSimple");
  function peg$parseSlashFor() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c141) {
        s2 = peg$c141;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e380);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseForIterationPattern();
        if (s4 !== peg$FAILED) {
          s5 = peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c121) {
            s6 = peg$c121;
            peg$currPos += 2;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e350);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$parse_();
            s8 = peg$parseForSingleAction();
            if (s8 !== peg$FAILED) {
              s9 = peg$parseStandardDirectiveEnding();
              peg$savedPos = s0;
              s0 = peg$f527(s4, s8, s9);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c141) {
          s2 = peg$c141;
          peg$currPos += 4;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e380);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$parseForIterationPattern();
          if (s4 !== peg$FAILED) {
            s5 = peg$parse_();
            s6 = peg$currPos;
            peg$silentFails++;
            if (input.substr(peg$currPos, 2) === peg$c121) {
              s7 = peg$c121;
              peg$currPos += 2;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e350);
              }
            }
            peg$silentFails--;
            if (s7 === peg$FAILED) {
              s6 = void 0;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f528(s4);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          if (input.substr(peg$currPos, 4) === peg$c141) {
            s2 = peg$c141;
            peg$currPos += 4;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e380);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 64) {
              s4 = peg$c37;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e102);
              }
            }
            if (s4 !== peg$FAILED) {
              s5 = peg$parseBaseIdentifier();
              if (s5 !== peg$FAILED) {
                s6 = peg$parse_();
                s7 = peg$currPos;
                peg$silentFails++;
                if (input.substr(peg$currPos, 2) === peg$c90) {
                  s8 = peg$c90;
                  peg$currPos += 2;
                } else {
                  s8 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e243);
                  }
                }
                peg$silentFails--;
                if (s8 === peg$FAILED) {
                  s7 = void 0;
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
                if (s7 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f529(s5);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c141) {
              s2 = peg$c141;
              peg$currPos += 4;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e380);
              }
            }
            if (s2 !== peg$FAILED) {
              peg$parse_();
              s4 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 64) {
                s5 = peg$c37;
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e102);
                }
              }
              peg$silentFails--;
              if (s5 === peg$FAILED) {
                s4 = void 0;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f530();
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e382);
      }
    }
    return s0;
  }
  __name(peg$parseSlashFor, "peg$parseSlashFor");
  function peg$parseSlashImport() {
    var s0, s1, s2, s4, s5, s6, s8, s10, s12, s13;
    s0 = peg$parseSlashImportShorthand();
    if (s0 === peg$FAILED) {
      s0 = peg$parseSlashImportFull();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          if (input.substr(peg$currPos, 7) === peg$c29) {
            s2 = peg$c29;
            peg$currPos += 7;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e79);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 123) {
              s4 = peg$c77;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e204);
              }
            }
            if (s4 !== peg$FAILED) {
              peg$savedPos = peg$currPos;
              s5 = peg$f531();
              if (s5) {
                s5 = void 0;
              } else {
                s5 = peg$FAILED;
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f532();
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            if (input.substr(peg$currPos, 7) === peg$c29) {
              s2 = peg$c29;
              peg$currPos += 7;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e79);
              }
            }
            if (s2 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 123) {
                s4 = peg$c77;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e204);
                }
              }
              if (s4 !== peg$FAILED) {
                s5 = peg$parse_();
                s6 = peg$parseImportsList();
                if (s6 !== peg$FAILED) {
                  peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 125) {
                    s8 = peg$c78;
                    peg$currPos++;
                  } else {
                    s8 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e205);
                    }
                  }
                  if (s8 !== peg$FAILED) {
                    peg$parse_();
                    peg$savedPos = peg$currPos;
                    s10 = peg$f533();
                    if (s10) {
                      s10 = void 0;
                    } else {
                      s10 = peg$FAILED;
                    }
                    if (s10 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f534();
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              if (input.substr(peg$currPos, 7) === peg$c29) {
                s2 = peg$c29;
                peg$currPos += 7;
              } else {
                s2 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e79);
                }
              }
              if (s2 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 123) {
                  s4 = peg$c77;
                  peg$currPos++;
                } else {
                  s4 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e204);
                  }
                }
                if (s4 !== peg$FAILED) {
                  s5 = peg$parse_();
                  s6 = peg$parseImportsList();
                  if (s6 !== peg$FAILED) {
                    peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 125) {
                      s8 = peg$c78;
                      peg$currPos++;
                    } else {
                      s8 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e205);
                      }
                    }
                    if (s8 !== peg$FAILED) {
                      peg$parse_();
                      if (input.substr(peg$currPos, 4) === peg$c132) {
                        s10 = peg$c132;
                        peg$currPos += 4;
                      } else {
                        s10 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e366);
                        }
                      }
                      if (s10 !== peg$FAILED) {
                        peg$parse_();
                        s12 = peg$currPos;
                        peg$silentFails++;
                        s13 = peg$parseLineTerminator();
                        if (s13 === peg$FAILED) {
                          s13 = peg$parseEOF();
                        }
                        peg$silentFails--;
                        if (s13 !== peg$FAILED) {
                          peg$currPos = s12;
                          s12 = void 0;
                        } else {
                          s12 = peg$FAILED;
                        }
                        if (s12 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f535();
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                if (input.substr(peg$currPos, 7) === peg$c29) {
                  s2 = peg$c29;
                  peg$currPos += 7;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e79);
                  }
                }
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 123) {
                    s4 = peg$c77;
                    peg$currPos++;
                  } else {
                    s4 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e204);
                    }
                  }
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parse_();
                    s6 = peg$parseImportsList();
                    if (s6 !== peg$FAILED) {
                      peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 125) {
                        s8 = peg$c78;
                        peg$currPos++;
                      } else {
                        s8 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e205);
                        }
                      }
                      if (s8 !== peg$FAILED) {
                        peg$parse_();
                        if (input.substr(peg$currPos, 4) === peg$c132) {
                          s10 = peg$c132;
                          peg$currPos += 4;
                        } else {
                          s10 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e366);
                          }
                        }
                        if (s10 !== peg$FAILED) {
                          peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 34) {
                            s12 = peg$c20;
                            peg$currPos++;
                          } else {
                            s12 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e55);
                            }
                          }
                          if (s12 !== peg$FAILED) {
                            peg$savedPos = peg$currPos;
                            s13 = peg$f536();
                            if (s13) {
                              s13 = void 0;
                            } else {
                              s13 = peg$FAILED;
                            }
                            if (s13 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f537();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  if (input.substr(peg$currPos, 7) === peg$c29) {
                    s2 = peg$c29;
                    peg$currPos += 7;
                  } else {
                    s2 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e79);
                    }
                  }
                  if (s2 !== peg$FAILED) {
                    peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 123) {
                      s4 = peg$c77;
                      peg$currPos++;
                    } else {
                      s4 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e204);
                      }
                    }
                    if (s4 !== peg$FAILED) {
                      s5 = peg$parse_();
                      s6 = peg$parseImportsList();
                      if (s6 !== peg$FAILED) {
                        peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 125) {
                          s8 = peg$c78;
                          peg$currPos++;
                        } else {
                          s8 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e205);
                          }
                        }
                        if (s8 !== peg$FAILED) {
                          peg$parse_();
                          if (input.substr(peg$currPos, 4) === peg$c132) {
                            s10 = peg$c132;
                            peg$currPos += 4;
                          } else {
                            s10 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e366);
                            }
                          }
                          if (s10 !== peg$FAILED) {
                            peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 39) {
                              s12 = peg$c9;
                              peg$currPos++;
                            } else {
                              s12 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e24);
                              }
                            }
                            if (s12 !== peg$FAILED) {
                              peg$savedPos = peg$currPos;
                              s13 = peg$f538();
                              if (s13) {
                                s13 = void 0;
                              } else {
                                s13 = peg$FAILED;
                              }
                              if (s13 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f539();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    if (input.substr(peg$currPos, 7) === peg$c29) {
                      s2 = peg$c29;
                      peg$currPos += 7;
                    } else {
                      s2 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e79);
                      }
                    }
                    if (s2 !== peg$FAILED) {
                      peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 123) {
                        s4 = peg$c77;
                        peg$currPos++;
                      } else {
                        s4 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e204);
                        }
                      }
                      if (s4 !== peg$FAILED) {
                        s5 = peg$parse_();
                        s6 = peg$parseImportsList();
                        if (s6 !== peg$FAILED) {
                          peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 125) {
                            s8 = peg$c78;
                            peg$currPos++;
                          } else {
                            s8 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e205);
                            }
                          }
                          if (s8 !== peg$FAILED) {
                            peg$parse_();
                            if (input.substr(peg$currPos, 4) === peg$c132) {
                              s10 = peg$c132;
                              peg$currPos += 4;
                            } else {
                              s10 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e366);
                              }
                            }
                            if (s10 !== peg$FAILED) {
                              peg$parse_();
                              if (input.charCodeAt(peg$currPos) === 91) {
                                s12 = peg$c41;
                                peg$currPos++;
                              } else {
                                s12 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e117);
                                }
                              }
                              if (s12 !== peg$FAILED) {
                                peg$savedPos = peg$currPos;
                                s13 = peg$f540();
                                if (s13) {
                                  s13 = void 0;
                                } else {
                                  s13 = peg$FAILED;
                                }
                                if (s13 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f541();
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      if (input.substr(peg$currPos, 7) === peg$c29) {
                        s2 = peg$c29;
                        peg$currPos += 7;
                      } else {
                        s2 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e79);
                        }
                      }
                      if (s2 !== peg$FAILED) {
                        peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 123) {
                          s4 = peg$c77;
                          peg$currPos++;
                        } else {
                          s4 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e204);
                          }
                        }
                        if (s4 !== peg$FAILED) {
                          s5 = peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 42) {
                            s6 = peg$c15;
                            peg$currPos++;
                          } else {
                            s6 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e35);
                            }
                          }
                          if (s6 !== peg$FAILED) {
                            peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 125) {
                              s8 = peg$c78;
                              peg$currPos++;
                            } else {
                              s8 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e205);
                              }
                            }
                            if (s8 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f542();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        if (input.substr(peg$currPos, 7) === peg$c29) {
                          s2 = peg$c29;
                          peg$currPos += 7;
                        } else {
                          s2 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e79);
                          }
                        }
                        if (s2 !== peg$FAILED) {
                          peg$parse_();
                          s4 = peg$currPos;
                          peg$silentFails++;
                          s5 = peg$parseLineTerminator();
                          if (s5 === peg$FAILED) {
                            s5 = peg$parseEOF();
                          }
                          peg$silentFails--;
                          if (s5 !== peg$FAILED) {
                            peg$currPos = s4;
                            s4 = void 0;
                          } else {
                            s4 = peg$FAILED;
                          }
                          if (s4 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f543();
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          if (input.substr(peg$currPos, 7) === peg$c29) {
                            s2 = peg$c29;
                            peg$currPos += 7;
                          } else {
                            s2 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e79);
                            }
                          }
                          if (s2 !== peg$FAILED) {
                            peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 64) {
                              s4 = peg$c37;
                              peg$currPos++;
                            } else {
                              s4 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e102);
                              }
                            }
                            if (s4 !== peg$FAILED) {
                              peg$savedPos = peg$currPos;
                              s5 = peg$f544();
                              if (s5) {
                                s5 = void 0;
                              } else {
                                s5 = peg$FAILED;
                              }
                              if (s5 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f545();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            if (input.substr(peg$currPos, 7) === peg$c29) {
                              s2 = peg$c29;
                              peg$currPos += 7;
                            } else {
                              s2 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e79);
                              }
                            }
                            if (s2 !== peg$FAILED) {
                              peg$parse_();
                              if (input.charCodeAt(peg$currPos) === 91) {
                                s4 = peg$c41;
                                peg$currPos++;
                              } else {
                                s4 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e117);
                                }
                              }
                              if (s4 !== peg$FAILED) {
                                peg$savedPos = peg$currPos;
                                s5 = peg$f546();
                                if (s5) {
                                  s5 = void 0;
                                } else {
                                  s5 = peg$FAILED;
                                }
                                if (s5 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f547();
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            s1 = peg$parseDirectiveContext();
                            if (s1 !== peg$FAILED) {
                              if (input.substr(peg$currPos, 7) === peg$c29) {
                                s2 = peg$c29;
                                peg$currPos += 7;
                              } else {
                                s2 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e79);
                                }
                              }
                              if (s2 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f548();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashImport, "peg$parseSlashImport");
  function peg$parseSlashImportShorthand() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 7) === peg$c29) {
        s2 = peg$c29;
        peg$currPos += 7;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e79);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseImportPath();
        if (s4 !== peg$FAILED) {
          s5 = peg$currPos;
          s6 = peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c39) {
            s7 = peg$c39;
            peg$currPos += 2;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e106);
            }
          }
          if (s7 !== peg$FAILED) {
            s8 = peg$parse_();
            s9 = peg$parseBaseIdentifier();
            if (s9 !== peg$FAILED) {
              peg$savedPos = s5;
              s5 = peg$f549(s4, s9);
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          s6 = peg$currPos;
          s7 = peg$parse_();
          s8 = peg$parseTTLClause();
          if (s8 !== peg$FAILED) {
            s7 = [
              s7,
              s8
            ];
            s6 = s7;
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          s7 = peg$parseTailModifiers();
          if (s7 === peg$FAILED) {
            s7 = null;
          }
          s8 = peg$parseInlineComment();
          if (s8 === peg$FAILED) {
            s8 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f550(s4, s5, s6, s7, s8);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSlashImportShorthand, "peg$parseSlashImportShorthand");
  function peg$parseSlashImportFull() {
    var s0, s1, s2, s4, s6, s8, s10, s12, s13, s14, s15;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 7) === peg$c29) {
        s2 = peg$c29;
        peg$currPos += 7;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e79);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 123) {
          s4 = peg$c77;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e204);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseImportsList();
          if (s6 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 125) {
              s8 = peg$c78;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e205);
              }
            }
            if (s8 !== peg$FAILED) {
              peg$parse_();
              if (input.substr(peg$currPos, 4) === peg$c132) {
                s10 = peg$c132;
                peg$currPos += 4;
              } else {
                s10 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e366);
                }
              }
              if (s10 !== peg$FAILED) {
                peg$parse_();
                s12 = peg$parseImportPath();
                if (s12 !== peg$FAILED) {
                  s13 = peg$currPos;
                  s14 = peg$parse_();
                  s15 = peg$parseTTLClause();
                  if (s15 !== peg$FAILED) {
                    s14 = [
                      s14,
                      s15
                    ];
                    s13 = s14;
                  } else {
                    peg$currPos = s13;
                    s13 = peg$FAILED;
                  }
                  if (s13 === peg$FAILED) {
                    s13 = null;
                  }
                  s14 = peg$parseTailModifiers();
                  if (s14 === peg$FAILED) {
                    s14 = null;
                  }
                  s15 = peg$parseInlineComment();
                  if (s15 === peg$FAILED) {
                    s15 = null;
                  }
                  peg$savedPos = s0;
                  s0 = peg$f551(s6, s12, s13, s14, s15);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSlashImportFull, "peg$parseSlashImportFull");
  function peg$parseImportPath() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = input.substr(peg$currPos, 6);
    if (s1.toLowerCase() === peg$c143) {
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e383);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f552();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = input.substr(peg$currPos, 4);
      if (s1.toLowerCase() === peg$c144) {
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e384);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f553();
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = input.substr(peg$currPos, 5);
        if (s1.toLowerCase() === peg$c145) {
          peg$currPos += 5;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e385);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f554();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 6) === peg$c146) {
            s1 = peg$c146;
            peg$currPos += 6;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e386);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f555();
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$parseSpecialVariablePath();
            if (s0 === peg$FAILED) {
              s0 = peg$parseModuleReference();
              if (s0 === peg$FAILED) {
                s0 = peg$parseQuotedPath();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseImportAlligatorAdapter();
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseImportPath, "peg$parseImportPath");
  function peg$parseImportAlligatorAdapter() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseAlligatorExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f556(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseImportAlligatorAdapter, "peg$parseImportAlligatorAdapter");
  function peg$parseQuotedPath() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = peg$parseInterpolatedDoubleQuoteContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f557(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c9;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = input.charAt(peg$currPos);
        if (peg$r42.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e275);
          }
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = input.charAt(peg$currPos);
          if (peg$r42.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e275);
            }
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c9;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f558(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseQuotedPath, "peg$parseQuotedPath");
  function peg$parseModuleReference() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseModuleIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f559(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseModuleReference, "peg$parseModuleReference");
  function peg$parseModuleIdentifier() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    s1 = peg$parseModuleIdentifierPart();
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 47) {
        s2 = peg$c22;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e60);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseModulePathAndName();
        if (s3 !== peg$FAILED) {
          s4 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 64) {
            s5 = peg$c37;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$parseShortHash();
            if (s6 !== peg$FAILED) {
              peg$savedPos = s4;
              s4 = peg$f560(s1, s3, s6);
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f561(s1, s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseModuleIdentifier, "peg$parseModuleIdentifier");
  function peg$parseModulePathAndName() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$parseModuleIdentifierPart();
    if (s3 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 47) {
        s4 = peg$c22;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e60);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f562(s3);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$currPos;
      s3 = peg$parseModuleIdentifierPart();
      if (s3 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 47) {
          s4 = peg$c22;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e60);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f562(s3);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    }
    s2 = peg$parseModuleIdentifierPart();
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f563(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseModulePathAndName, "peg$parseModulePathAndName");
  function peg$parseModuleIdentifierPart() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = input.charAt(peg$currPos);
    if (peg$r11.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e65);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r24.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e133);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r24.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e133);
          }
        }
      }
      peg$savedPos = s0;
      s0 = peg$f564(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e387);
      }
    }
    return s0;
  }
  __name(peg$parseModuleIdentifierPart, "peg$parseModuleIdentifierPart");
  function peg$parseShortHash() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r55.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e388);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r55.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e388);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s2 = peg$f565(s1);
      if (s2) {
        s2 = void 0;
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f566(s1);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseShortHash, "peg$parseShortHash");
  function peg$parseImportsList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 42) {
      s1 = peg$c15;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e35);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c39) {
        s3 = peg$c39;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e106);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parse_();
        s5 = peg$parseBaseIdentifier();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f567(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 42) {
        s1 = peg$c15;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e35);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parse_();
        peg$savedPos = peg$currPos;
        s3 = peg$f568();
        if (s3) {
          s3 = void 0;
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f569();
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseImportItem();
        if (s1 !== peg$FAILED) {
          s2 = [];
          s3 = peg$currPos;
          s4 = peg$parseCommaSpace();
          if (s4 !== peg$FAILED) {
            s5 = peg$parseImportItem();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s3;
              s3 = peg$f570(s1, s5);
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = peg$currPos;
            s4 = peg$parseCommaSpace();
            if (s4 !== peg$FAILED) {
              s5 = peg$parseImportItem();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s3;
                s3 = peg$f570(s1, s5);
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
          }
          peg$savedPos = s0;
          s0 = peg$f571(s1, s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parse_();
          peg$savedPos = s0;
          s1 = peg$f572();
          s0 = s1;
        }
      }
    }
    return s0;
  }
  __name(peg$parseImportsList, "peg$parseImportsList");
  function peg$parseImportItem() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      if (input.substr(peg$currPos, 4) === peg$c38) {
        s3 = peg$c38;
        peg$currPos += 4;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e104);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseBaseIdentifier();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f573(s1, s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f574(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseImportItem, "peg$parseImportItem");
  function peg$parseImportPathParts() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseVariableNoTail();
    if (s2 === peg$FAILED) {
      s2 = peg$parsePathTextSegment();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathSeparator();
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseVariableNoTail();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathTextSegment();
        if (s2 === peg$FAILED) {
          s2 = peg$parsePathSeparator();
        }
      }
    }
    peg$savedPos = s0;
    s1 = peg$f575(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseImportPathParts, "peg$parseImportPathParts");
  function peg$parseSpecialVariablePath() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseSpecialVariable();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parsePathTextSegment();
      if (s3 === peg$FAILED) {
        s3 = peg$parsePathSeparator();
      }
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parsePathTextSegment();
          if (s3 === peg$FAILED) {
            s3 = peg$parsePathSeparator();
          }
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f576(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSpecialVariablePath, "peg$parseSpecialVariablePath");
  function peg$parseSlashOutput() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 7) === peg$c31) {
        s2 = peg$c31;
        peg$currPos += 7;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e81);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseDataString();
        if (s4 !== peg$FAILED) {
          s5 = peg$currPos;
          peg$silentFails++;
          s6 = peg$currPos;
          s7 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 91) {
            s8 = peg$c41;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e117);
            }
          }
          if (s8 !== peg$FAILED) {
            s7 = [
              s7,
              s8
            ];
            s6 = s7;
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f577(s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        if (input.substr(peg$currPos, 7) === peg$c31) {
          s2 = peg$c31;
          peg$currPos += 7;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e81);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$parseOutputSource();
          if (s4 !== peg$FAILED) {
            s5 = peg$parse_();
            if (input.substr(peg$currPos, 2) === peg$c92) {
              s6 = peg$c92;
              peg$currPos += 2;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e246);
              }
            }
            if (s6 !== peg$FAILED) {
              s7 = peg$parse_();
              s8 = peg$parseOutputTarget();
              if (s8 !== peg$FAILED) {
                s9 = peg$currPos;
                s10 = peg$parse_();
                s11 = peg$parseOutputFormat();
                if (s11 !== peg$FAILED) {
                  peg$savedPos = s9;
                  s9 = peg$f578(s4, s8, s11);
                } else {
                  peg$currPos = s9;
                  s9 = peg$FAILED;
                }
                if (s9 === peg$FAILED) {
                  s9 = null;
                }
                peg$savedPos = s0;
                s0 = peg$f579(s4, s8, s9);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          if (input.substr(peg$currPos, 7) === peg$c31) {
            s2 = peg$c31;
            peg$currPos += 7;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e81);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$parse_();
            s4 = peg$parseOutputSource();
            if (s4 !== peg$FAILED) {
              s5 = peg$parse_();
              s6 = peg$parseDataString();
              if (s6 !== peg$FAILED) {
                s7 = peg$currPos;
                peg$silentFails++;
                s8 = peg$currPos;
                s9 = peg$parse_();
                if (input.charCodeAt(peg$currPos) === 91) {
                  s10 = peg$c41;
                  peg$currPos++;
                } else {
                  s10 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e117);
                  }
                }
                if (s10 !== peg$FAILED) {
                  s9 = [
                    s9,
                    s10
                  ];
                  s8 = s9;
                } else {
                  peg$currPos = s8;
                  s8 = peg$FAILED;
                }
                peg$silentFails--;
                if (s8 === peg$FAILED) {
                  s7 = void 0;
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
                if (s7 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f580(s4, s6);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            if (input.substr(peg$currPos, 7) === peg$c31) {
              s2 = peg$c31;
              peg$currPos += 7;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e81);
              }
            }
            if (s2 !== peg$FAILED) {
              peg$parse_();
              if (input.substr(peg$currPos, 2) === peg$c92) {
                s4 = peg$c92;
                peg$currPos += 2;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e246);
                }
              }
              if (s4 !== peg$FAILED) {
                s5 = peg$parse_();
                s6 = peg$parseOutputTarget();
                if (s6 !== peg$FAILED) {
                  s7 = peg$currPos;
                  s8 = peg$parse_();
                  s9 = peg$parseOutputFormat();
                  if (s9 !== peg$FAILED) {
                    peg$savedPos = s7;
                    s7 = peg$f581(s6, s9);
                  } else {
                    peg$currPos = s7;
                    s7 = peg$FAILED;
                  }
                  if (s7 === peg$FAILED) {
                    s7 = null;
                  }
                  peg$savedPos = s0;
                  s0 = peg$f582(s6, s7);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              if (input.substr(peg$currPos, 7) === peg$c31) {
                s2 = peg$c31;
                peg$currPos += 7;
              } else {
                s2 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e81);
                }
              }
              if (s2 !== peg$FAILED) {
                peg$parse_();
                s4 = peg$parseOutputSource();
                if (s4 !== peg$FAILED) {
                  s5 = peg$parse_();
                  peg$savedPos = peg$currPos;
                  s6 = peg$f583();
                  if (s6) {
                    s6 = void 0;
                  } else {
                    s6 = peg$FAILED;
                  }
                  if (s6 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f584();
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                if (input.substr(peg$currPos, 7) === peg$c31) {
                  s2 = peg$c31;
                  peg$currPos += 7;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e81);
                  }
                }
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  s4 = peg$parseOutputSource();
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parse_();
                    if (input.substr(peg$currPos, 2) === peg$c92) {
                      s6 = peg$c92;
                      peg$currPos += 2;
                    } else {
                      s6 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e246);
                      }
                    }
                    if (s6 !== peg$FAILED) {
                      s7 = peg$parse_();
                      s8 = peg$currPos;
                      peg$silentFails++;
                      s9 = peg$parseLineTerminator();
                      if (s9 === peg$FAILED) {
                        s9 = peg$parseEOF();
                      }
                      peg$silentFails--;
                      if (s9 !== peg$FAILED) {
                        peg$currPos = s8;
                        s8 = void 0;
                      } else {
                        s8 = peg$FAILED;
                      }
                      if (s8 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f585();
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  if (input.substr(peg$currPos, 7) === peg$c31) {
                    s2 = peg$c31;
                    peg$currPos += 7;
                  } else {
                    s2 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e81);
                    }
                  }
                  if (s2 !== peg$FAILED) {
                    peg$parse_();
                    if (input.substr(peg$currPos, 2) === peg$c92) {
                      s4 = peg$c92;
                      peg$currPos += 2;
                    } else {
                      s4 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e246);
                      }
                    }
                    if (s4 !== peg$FAILED) {
                      s5 = peg$parse_();
                      s6 = peg$currPos;
                      peg$silentFails++;
                      s7 = peg$parseLineTerminator();
                      if (s7 === peg$FAILED) {
                        s7 = peg$parseEOF();
                      }
                      peg$silentFails--;
                      if (s7 !== peg$FAILED) {
                        peg$currPos = s6;
                        s6 = void 0;
                      } else {
                        s6 = peg$FAILED;
                      }
                      if (s6 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f586();
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    if (input.substr(peg$currPos, 7) === peg$c31) {
                      s2 = peg$c31;
                      peg$currPos += 7;
                    } else {
                      s2 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e81);
                      }
                    }
                    if (s2 !== peg$FAILED) {
                      peg$parse_();
                      s4 = peg$parseOutputSource();
                      if (s4 !== peg$FAILED) {
                        s5 = peg$parse_();
                        if (input.substr(peg$currPos, 2) === peg$c92) {
                          s6 = peg$c92;
                          peg$currPos += 2;
                        } else {
                          s6 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e246);
                          }
                        }
                        if (s6 !== peg$FAILED) {
                          s7 = peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 34) {
                            s8 = peg$c20;
                            peg$currPos++;
                          } else {
                            s8 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e55);
                            }
                          }
                          if (s8 !== peg$FAILED) {
                            peg$savedPos = peg$currPos;
                            s9 = peg$f587();
                            if (s9) {
                              s9 = void 0;
                            } else {
                              s9 = peg$FAILED;
                            }
                            if (s9 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f588();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      if (input.substr(peg$currPos, 7) === peg$c31) {
                        s2 = peg$c31;
                        peg$currPos += 7;
                      } else {
                        s2 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e81);
                        }
                      }
                      if (s2 !== peg$FAILED) {
                        peg$parse_();
                        s4 = peg$parseOutputSource();
                        if (s4 !== peg$FAILED) {
                          s5 = peg$parse_();
                          if (input.substr(peg$currPos, 2) === peg$c92) {
                            s6 = peg$c92;
                            peg$currPos += 2;
                          } else {
                            s6 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e246);
                            }
                          }
                          if (s6 !== peg$FAILED) {
                            s7 = peg$parse_();
                            s8 = peg$parseOutputTarget();
                            if (s8 !== peg$FAILED) {
                              s9 = peg$parse_();
                              if (input.substr(peg$currPos, 2) === peg$c39) {
                                s10 = peg$c39;
                                peg$currPos += 2;
                              } else {
                                s10 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e106);
                                }
                              }
                              if (s10 !== peg$FAILED) {
                                s11 = peg$parse_();
                                s12 = peg$currPos;
                                peg$silentFails++;
                                s13 = peg$parseLineTerminator();
                                if (s13 === peg$FAILED) {
                                  s13 = peg$parseEOF();
                                }
                                peg$silentFails--;
                                if (s13 !== peg$FAILED) {
                                  peg$currPos = s12;
                                  s12 = void 0;
                                } else {
                                  s12 = peg$FAILED;
                                }
                                if (s12 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f589();
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        if (input.substr(peg$currPos, 7) === peg$c31) {
                          s2 = peg$c31;
                          peg$currPos += 7;
                        } else {
                          s2 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e81);
                          }
                        }
                        if (s2 !== peg$FAILED) {
                          peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 64) {
                            s4 = peg$c37;
                            peg$currPos++;
                          } else {
                            s4 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e102);
                            }
                          }
                          if (s4 !== peg$FAILED) {
                            peg$savedPos = peg$currPos;
                            s5 = peg$f590();
                            if (s5) {
                              s5 = void 0;
                            } else {
                              s5 = peg$FAILED;
                            }
                            if (s5 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f591();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          if (input.substr(peg$currPos, 7) === peg$c31) {
                            s2 = peg$c31;
                            peg$currPos += 7;
                          } else {
                            s2 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e81);
                            }
                          }
                          if (s2 !== peg$FAILED) {
                            peg$parse_();
                            s4 = peg$currPos;
                            peg$silentFails++;
                            s5 = peg$parseLineTerminator();
                            if (s5 === peg$FAILED) {
                              s5 = peg$parseEOF();
                            }
                            peg$silentFails--;
                            if (s5 !== peg$FAILED) {
                              peg$currPos = s4;
                              s4 = void 0;
                            } else {
                              s4 = peg$FAILED;
                            }
                            if (s4 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f592();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            if (input.substr(peg$currPos, 7) === peg$c31) {
                              s2 = peg$c31;
                              peg$currPos += 7;
                            } else {
                              s2 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e81);
                              }
                            }
                            if (s2 !== peg$FAILED) {
                              peg$parse_();
                              s4 = peg$parseOutputSource();
                              if (s4 !== peg$FAILED) {
                                s5 = peg$parse_();
                                if (input.substr(peg$currPos, 2) === peg$c92) {
                                  s6 = peg$c92;
                                  peg$currPos += 2;
                                } else {
                                  s6 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e246);
                                  }
                                }
                                if (s6 !== peg$FAILED) {
                                  s7 = peg$parse_();
                                  if (input.substr(peg$currPos, 4) === peg$c147) {
                                    s8 = peg$c147;
                                    peg$currPos += 4;
                                  } else {
                                    s8 = peg$FAILED;
                                    if (peg$silentFails === 0) {
                                      peg$fail(peg$e389);
                                    }
                                  }
                                  if (s8 !== peg$FAILED) {
                                    peg$savedPos = peg$currPos;
                                    s9 = peg$f593();
                                    if (s9) {
                                      s9 = void 0;
                                    } else {
                                      s9 = peg$FAILED;
                                    }
                                    if (s9 !== peg$FAILED) {
                                      peg$savedPos = s0;
                                      s0 = peg$f594();
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            s1 = peg$parseDirectiveContext();
                            if (s1 !== peg$FAILED) {
                              if (input.substr(peg$currPos, 7) === peg$c31) {
                                s2 = peg$c31;
                                peg$currPos += 7;
                              } else {
                                s2 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e81);
                                }
                              }
                              if (s2 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f595();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashOutput, "peg$parseSlashOutput");
  function peg$parseOutputArguments() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c74;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e158);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseOutputArgumentList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 41) {
        s5 = peg$c75;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e159);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f596(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseOutputArguments, "peg$parseOutputArguments");
  function peg$parseOutputArgumentList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseOutputArgument();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseOutputArgument();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f597(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseOutputArgument();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f597(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f598(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseOutputArgumentList, "peg$parseOutputArgumentList");
  function peg$parseOutputArgument() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseDataString();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f599(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseVariable();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f600(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        s2 = [];
        s3 = input.charAt(peg$currPos);
        if (peg$r56.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e390);
          }
        }
        if (s3 !== peg$FAILED) {
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = input.charAt(peg$currPos);
            if (peg$r56.test(s3)) {
              peg$currPos++;
            } else {
              s3 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e390);
              }
            }
          }
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          s1 = input.substring(s1, peg$currPos);
        } else {
          s1 = s2;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f601(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseOutputArgument, "peg$parseOutputArgument");
  function peg$parseSlashPath() {
    var s0, s1, s2, s4, s5, s7, s9, s10, s11, s12, s13, s14;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 5) === peg$c28) {
        s2 = peg$c28;
        peg$currPos += 5;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e78);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 64) {
          s4 = peg$c37;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e102);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parseBaseIdentifier();
          if (s5 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s7 = peg$c84;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e231);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$parse_();
              s9 = peg$parseInterpolatedDoubleQuoteContent();
              if (s9 !== peg$FAILED) {
                s10 = peg$currPos;
                s11 = peg$parse_();
                s12 = peg$parseTTLClause();
                if (s12 !== peg$FAILED) {
                  s11 = [
                    s11,
                    s12
                  ];
                  s10 = s11;
                } else {
                  peg$currPos = s10;
                  s10 = peg$FAILED;
                }
                if (s10 === peg$FAILED) {
                  s10 = null;
                }
                s11 = peg$parseTailModifiers();
                if (s11 === peg$FAILED) {
                  s11 = null;
                }
                s12 = peg$parseInlineComment();
                if (s12 === peg$FAILED) {
                  s12 = null;
                }
                peg$savedPos = s0;
                s0 = peg$f602(s5, s9, s10, s11, s12);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        if (input.substr(peg$currPos, 5) === peg$c28) {
          s2 = peg$c28;
          peg$currPos += 5;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e78);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s4 = peg$c37;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$parseBaseIdentifier();
            if (s5 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 61) {
                s7 = peg$c84;
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e231);
                }
              }
              if (s7 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 39) {
                  s9 = peg$c9;
                  peg$currPos++;
                } else {
                  s9 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e24);
                  }
                }
                if (s9 !== peg$FAILED) {
                  s10 = peg$currPos;
                  s11 = [];
                  s12 = input.charAt(peg$currPos);
                  if (peg$r42.test(s12)) {
                    peg$currPos++;
                  } else {
                    s12 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e275);
                    }
                  }
                  while (s12 !== peg$FAILED) {
                    s11.push(s12);
                    s12 = input.charAt(peg$currPos);
                    if (peg$r42.test(s12)) {
                      peg$currPos++;
                    } else {
                      s12 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e275);
                      }
                    }
                  }
                  s10 = input.substring(s10, peg$currPos);
                  if (input.charCodeAt(peg$currPos) === 39) {
                    s11 = peg$c9;
                    peg$currPos++;
                  } else {
                    s11 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e24);
                    }
                  }
                  if (s11 !== peg$FAILED) {
                    s12 = peg$currPos;
                    s13 = peg$parse_();
                    s14 = peg$parseTTLClause();
                    if (s14 !== peg$FAILED) {
                      s13 = [
                        s13,
                        s14
                      ];
                      s12 = s13;
                    } else {
                      peg$currPos = s12;
                      s12 = peg$FAILED;
                    }
                    if (s12 === peg$FAILED) {
                      s12 = null;
                    }
                    s13 = peg$parseTailModifiers();
                    if (s13 === peg$FAILED) {
                      s13 = null;
                    }
                    s14 = peg$parseInlineComment();
                    if (s14 === peg$FAILED) {
                      s14 = null;
                    }
                    peg$savedPos = s0;
                    s0 = peg$f603(s5, s10, s12, s13, s14);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          if (input.substr(peg$currPos, 5) === peg$c28) {
            s2 = peg$c28;
            peg$currPos += 5;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e78);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 64) {
              s4 = peg$c37;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e102);
              }
            }
            if (s4 !== peg$FAILED) {
              s5 = peg$parseBaseIdentifier();
              if (s5 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 61) {
                  s7 = peg$c84;
                  peg$currPos++;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e231);
                  }
                }
                if (s7 !== peg$FAILED) {
                  peg$parse_();
                  s9 = peg$parsePathExpression();
                  if (s9 !== peg$FAILED) {
                    s10 = peg$currPos;
                    s11 = peg$parse_();
                    s12 = peg$parseTTLClause();
                    if (s12 !== peg$FAILED) {
                      s11 = [
                        s11,
                        s12
                      ];
                      s10 = s11;
                    } else {
                      peg$currPos = s10;
                      s10 = peg$FAILED;
                    }
                    if (s10 === peg$FAILED) {
                      s10 = null;
                    }
                    s11 = peg$parseTailModifiers();
                    if (s11 === peg$FAILED) {
                      s11 = null;
                    }
                    s12 = peg$parseInlineComment();
                    if (s12 === peg$FAILED) {
                      s12 = null;
                    }
                    peg$savedPos = s0;
                    s0 = peg$f604(s5, s9, s10, s11, s12);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashPath, "peg$parseSlashPath");
  function peg$parsePathAssignmentParts() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseVariableNoTail();
    if (s2 === peg$FAILED) {
      s2 = peg$parsePathTextSegment();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathSeparator();
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseVariableNoTail();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathTextSegment();
        if (s2 === peg$FAILED) {
          s2 = peg$parsePathSeparator();
        }
      }
    }
    peg$savedPos = s0;
    s1 = peg$f605(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parsePathAssignmentParts, "peg$parsePathAssignmentParts");
  function peg$parseSpecialPathIdentifier() {
    var s0, s1;
    if (input.substr(peg$currPos, 11) === peg$c148) {
      s0 = peg$c148;
      peg$currPos += 11;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e391);
      }
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s1 = peg$c11;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e28);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f606();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseSpecialPathIdentifier, "peg$parseSpecialPathIdentifier");
  function peg$parseSlashRun() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9, s10, s11;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c26) {
        s2 = peg$c26;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e76);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$currPos;
        s5 = peg$parseSecurityOptions();
        if (s5 !== peg$FAILED) {
          s6 = peg$parse_();
          s5 = [
            s5,
            s6
          ];
          s4 = s5;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        if (input.charCodeAt(peg$currPos) === 34) {
          s5 = peg$c20;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$currPos;
          s7 = [];
          s8 = input.charAt(peg$currPos);
          if (peg$r41.test(s8)) {
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e274);
            }
          }
          while (s8 !== peg$FAILED) {
            s7.push(s8);
            s8 = input.charAt(peg$currPos);
            if (peg$r41.test(s8)) {
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e274);
              }
            }
          }
          s6 = input.substring(s6, peg$currPos);
          if (input.charCodeAt(peg$currPos) === 34) {
            s7 = peg$c20;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e55);
            }
          }
          if (s7 !== peg$FAILED) {
            s8 = peg$parseTailModifiers();
            if (s8 === peg$FAILED) {
              s8 = null;
            }
            s9 = peg$parseInlineComment();
            if (s9 === peg$FAILED) {
              s9 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f607(s4, s6, s8, s9);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c26) {
          s2 = peg$c26;
          peg$currPos += 4;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e76);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$currPos;
          s5 = peg$parseSecurityOptions();
          if (s5 !== peg$FAILED) {
            s6 = peg$parse_();
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          s5 = peg$parseUnifiedCommandBrackets();
          if (s5 !== peg$FAILED) {
            s6 = peg$parseTailModifiers();
            if (s6 === peg$FAILED) {
              s6 = null;
            }
            s7 = peg$parseInlineComment();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f608(s4, s5, s6, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          if (input.substr(peg$currPos, 4) === peg$c26) {
            s2 = peg$c26;
            peg$currPos += 4;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e76);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$parse_();
            s4 = peg$currPos;
            s5 = peg$parseSecurityOptions();
            if (s5 !== peg$FAILED) {
              s6 = peg$parse_();
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
            if (s4 === peg$FAILED) {
              s4 = null;
            }
            s5 = peg$parseRunLanguageCodeWithArgs();
            if (s5 === peg$FAILED) {
              s5 = peg$parseRunLanguageCodeCore();
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$parseTailModifiers();
              if (s6 === peg$FAILED) {
                s6 = null;
              }
              s7 = peg$parseInlineComment();
              if (s7 === peg$FAILED) {
                s7 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f609(s4, s5, s6, s7);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c26) {
              s2 = peg$c26;
              peg$currPos += 4;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e76);
              }
            }
            if (s2 !== peg$FAILED) {
              peg$parse_();
              s4 = peg$currPos;
              s5 = peg$parseSecurityOptions();
              if (s5 !== peg$FAILED) {
                s6 = peg$parse_();
                s5 = [
                  s5,
                  s6
                ];
                s4 = s5;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 === peg$FAILED) {
                s4 = null;
              }
              s5 = peg$parseUnifiedReferenceWithTail();
              if (s5 !== peg$FAILED) {
                s6 = peg$parseInlineComment();
                if (s6 === peg$FAILED) {
                  s6 = null;
                }
                peg$savedPos = s0;
                s0 = peg$f610(s4, s5, s6);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              if (input.substr(peg$currPos, 4) === peg$c26) {
                s2 = peg$c26;
                peg$currPos += 4;
              } else {
                s2 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e76);
                }
              }
              if (s2 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 34) {
                  s4 = peg$c20;
                  peg$currPos++;
                } else {
                  s4 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e55);
                  }
                }
                if (s4 !== peg$FAILED) {
                  peg$savedPos = peg$currPos;
                  s5 = peg$f611();
                  if (s5) {
                    s5 = void 0;
                  } else {
                    s5 = peg$FAILED;
                  }
                  if (s5 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f612();
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                if (input.substr(peg$currPos, 4) === peg$c26) {
                  s2 = peg$c26;
                  peg$currPos += 4;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e76);
                  }
                }
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 123) {
                    s4 = peg$c77;
                    peg$currPos++;
                  } else {
                    s4 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e204);
                    }
                  }
                  if (s4 !== peg$FAILED) {
                    peg$savedPos = peg$currPos;
                    s5 = peg$f613();
                    if (s5) {
                      s5 = void 0;
                    } else {
                      s5 = peg$FAILED;
                    }
                    if (s5 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f614();
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  if (input.substr(peg$currPos, 4) === peg$c26) {
                    s2 = peg$c26;
                    peg$currPos += 4;
                  } else {
                    s2 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e76);
                    }
                  }
                  if (s2 !== peg$FAILED) {
                    peg$parse_();
                    s4 = peg$parseBaseIdentifier();
                    if (s4 !== peg$FAILED) {
                      s5 = peg$parse_();
                      s6 = peg$currPos;
                      peg$silentFails++;
                      if (input.charCodeAt(peg$currPos) === 123) {
                        s7 = peg$c77;
                        peg$currPos++;
                      } else {
                        s7 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e204);
                        }
                      }
                      peg$silentFails--;
                      if (s7 === peg$FAILED) {
                        s6 = void 0;
                      } else {
                        peg$currPos = s6;
                        s6 = peg$FAILED;
                      }
                      if (s6 !== peg$FAILED) {
                        s7 = peg$currPos;
                        peg$silentFails++;
                        if (input.charCodeAt(peg$currPos) === 40) {
                          s8 = peg$c74;
                          peg$currPos++;
                        } else {
                          s8 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e158);
                          }
                        }
                        peg$silentFails--;
                        if (s8 === peg$FAILED) {
                          s7 = void 0;
                        } else {
                          peg$currPos = s7;
                          s7 = peg$FAILED;
                        }
                        if (s7 !== peg$FAILED) {
                          s8 = peg$currPos;
                          peg$silentFails++;
                          s9 = peg$parseLineTerminator();
                          peg$silentFails--;
                          if (s9 === peg$FAILED) {
                            s8 = void 0;
                          } else {
                            peg$currPos = s8;
                            s8 = peg$FAILED;
                          }
                          if (s8 !== peg$FAILED) {
                            s9 = peg$currPos;
                            peg$silentFails++;
                            s10 = peg$parseEOF();
                            peg$silentFails--;
                            if (s10 === peg$FAILED) {
                              s9 = void 0;
                            } else {
                              peg$currPos = s9;
                              s9 = peg$FAILED;
                            }
                            if (s9 !== peg$FAILED) {
                              peg$savedPos = peg$currPos;
                              s10 = peg$f615(s4);
                              if (s10) {
                                s10 = void 0;
                              } else {
                                s10 = peg$FAILED;
                              }
                              if (s10 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f616(s4);
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    if (input.substr(peg$currPos, 4) === peg$c26) {
                      s2 = peg$c26;
                      peg$currPos += 4;
                    } else {
                      s2 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e76);
                      }
                    }
                    if (s2 !== peg$FAILED) {
                      peg$parse_();
                      s4 = peg$parseBaseIdentifier();
                      if (s4 !== peg$FAILED) {
                        s5 = peg$parse_();
                        s6 = peg$currPos;
                        peg$silentFails++;
                        s7 = peg$parseLineTerminator();
                        if (s7 === peg$FAILED) {
                          s7 = peg$parseEOF();
                        }
                        peg$silentFails--;
                        if (s7 !== peg$FAILED) {
                          peg$currPos = s6;
                          s6 = void 0;
                        } else {
                          s6 = peg$FAILED;
                        }
                        if (s6 !== peg$FAILED) {
                          peg$savedPos = peg$currPos;
                          s7 = peg$f617(s4);
                          if (s7) {
                            s7 = void 0;
                          } else {
                            s7 = peg$FAILED;
                          }
                          if (s7 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f618(s4);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      if (input.substr(peg$currPos, 4) === peg$c26) {
                        s2 = peg$c26;
                        peg$currPos += 4;
                      } else {
                        s2 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e76);
                        }
                      }
                      if (s2 !== peg$FAILED) {
                        peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 64) {
                          s4 = peg$c37;
                          peg$currPos++;
                        } else {
                          s4 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e102);
                          }
                        }
                        if (s4 !== peg$FAILED) {
                          peg$savedPos = peg$currPos;
                          s5 = peg$f619();
                          if (s5) {
                            s5 = void 0;
                          } else {
                            s5 = peg$FAILED;
                          }
                          if (s5 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f620();
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        if (input.substr(peg$currPos, 4) === peg$c26) {
                          s2 = peg$c26;
                          peg$currPos += 4;
                        } else {
                          s2 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e76);
                          }
                        }
                        if (s2 !== peg$FAILED) {
                          peg$parse_();
                          s4 = peg$currPos;
                          peg$silentFails++;
                          s5 = peg$parseLineTerminator();
                          if (s5 === peg$FAILED) {
                            s5 = peg$parseEOF();
                          }
                          peg$silentFails--;
                          if (s5 !== peg$FAILED) {
                            peg$currPos = s4;
                            s4 = void 0;
                          } else {
                            s4 = peg$FAILED;
                          }
                          if (s4 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f621();
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          if (input.substr(peg$currPos, 4) === peg$c26) {
                            s2 = peg$c26;
                            peg$currPos += 4;
                          } else {
                            s2 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e76);
                            }
                          }
                          if (s2 !== peg$FAILED) {
                            peg$parse_();
                            s4 = peg$parseBaseIdentifier();
                            if (s4 !== peg$FAILED) {
                              s5 = peg$parse_();
                              if (input.charCodeAt(peg$currPos) === 40) {
                                s6 = peg$c74;
                                peg$currPos++;
                              } else {
                                s6 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e158);
                                }
                              }
                              if (s6 !== peg$FAILED) {
                                s7 = [];
                                s8 = input.charAt(peg$currPos);
                                if (peg$r54.test(s8)) {
                                  peg$currPos++;
                                } else {
                                  s8 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e372);
                                  }
                                }
                                while (s8 !== peg$FAILED) {
                                  s7.push(s8);
                                  s8 = input.charAt(peg$currPos);
                                  if (peg$r54.test(s8)) {
                                    peg$currPos++;
                                  } else {
                                    s8 = peg$FAILED;
                                    if (peg$silentFails === 0) {
                                      peg$fail(peg$e372);
                                    }
                                  }
                                }
                                if (input.charCodeAt(peg$currPos) === 41) {
                                  s8 = peg$c75;
                                  peg$currPos++;
                                } else {
                                  s8 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e159);
                                  }
                                }
                                if (s8 !== peg$FAILED) {
                                  s9 = peg$parse_();
                                  if (input.charCodeAt(peg$currPos) === 123) {
                                    s10 = peg$c77;
                                    peg$currPos++;
                                  } else {
                                    s10 = peg$FAILED;
                                    if (peg$silentFails === 0) {
                                      peg$fail(peg$e204);
                                    }
                                  }
                                  if (s10 !== peg$FAILED) {
                                    peg$savedPos = peg$currPos;
                                    s11 = peg$f622(s4);
                                    if (s11) {
                                      s11 = void 0;
                                    } else {
                                      s11 = peg$FAILED;
                                    }
                                    if (s11 !== peg$FAILED) {
                                      peg$savedPos = s0;
                                      s0 = peg$f623(s4);
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            if (input.substr(peg$currPos, 4) === peg$c26) {
                              s2 = peg$c26;
                              peg$currPos += 4;
                            } else {
                              s2 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e76);
                              }
                            }
                            if (s2 !== peg$FAILED) {
                              peg$parse_();
                              s4 = peg$parseBaseIdentifier();
                              if (s4 !== peg$FAILED) {
                                s5 = peg$parse_();
                                if (input.charCodeAt(peg$currPos) === 123) {
                                  s6 = peg$c77;
                                  peg$currPos++;
                                } else {
                                  s6 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e204);
                                  }
                                }
                                if (s6 !== peg$FAILED) {
                                  peg$savedPos = peg$currPos;
                                  s7 = peg$f624(s4);
                                  if (s7) {
                                    s7 = void 0;
                                  } else {
                                    s7 = peg$FAILED;
                                  }
                                  if (s7 !== peg$FAILED) {
                                    peg$savedPos = s0;
                                    s0 = peg$f625(s4);
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            s1 = peg$parseDirectiveContext();
                            if (s1 !== peg$FAILED) {
                              if (input.substr(peg$currPos, 4) === peg$c26) {
                                s2 = peg$c26;
                                peg$currPos += 4;
                              } else {
                                s2 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e76);
                                }
                              }
                              if (s2 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f626();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashRun, "peg$parseSlashRun");
  function peg$parseRunDirectiveRef() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseRunLanguageCodeWithArgs();
    if (s1 === peg$FAILED) {
      s1 = peg$parseRunLanguageCodeCore();
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f627(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnifiedReferenceNoTail();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f628(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseUnifiedCommandBrackets();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f629(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseRunDirectiveRef, "peg$parseRunDirectiveRef");
  function peg$parseRunCommandArguments() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c74;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e158);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseRunCommandArgumentList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 41) {
        s5 = peg$c75;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e159);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f630(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRunCommandArguments, "peg$parseRunCommandArguments");
  function peg$parseRunCommandArgumentList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseRunCommandArgument();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseRunCommandArgument();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f631(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseRunCommandArgument();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f631(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f632(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRunCommandArgumentList, "peg$parseRunCommandArgumentList");
  function peg$parseRunCommandArgument() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseStringLiteral();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f633(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseSpecialVariable();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f634(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseVariableNoTail();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f635(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$currPos;
          s2 = [];
          s3 = input.charAt(peg$currPos);
          if (peg$r56.test(s3)) {
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e390);
            }
          }
          if (s3 !== peg$FAILED) {
            while (s3 !== peg$FAILED) {
              s2.push(s3);
              s3 = input.charAt(peg$currPos);
              if (peg$r56.test(s3)) {
                peg$currPos++;
              } else {
                s3 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e390);
                }
              }
            }
          } else {
            s2 = peg$FAILED;
          }
          if (s2 !== peg$FAILED) {
            s1 = input.substring(s1, peg$currPos);
          } else {
            s1 = s2;
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f636(s1);
          }
          s0 = s1;
        }
      }
    }
    return s0;
  }
  __name(peg$parseRunCommandArgument, "peg$parseRunCommandArgument");
  function peg$parseSlashShow() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9, s10, s11, s12;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 5) === peg$c25) {
        s2 = peg$c25;
        peg$currPos += 5;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e75);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseForeachCommandExpression();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseStandardDirectiveEnding();
          peg$savedPos = s0;
          s0 = peg$f637(s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        if (input.substr(peg$currPos, 5) === peg$c25) {
          s2 = peg$c25;
          peg$currPos += 5;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e75);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$parseWrappedTemplateContent();
          if (s4 !== peg$FAILED) {
            peg$savedPos = peg$currPos;
            s5 = peg$f638(s4);
            if (s5) {
              s5 = void 0;
            } else {
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$parseAsNewTitle();
              if (s6 === peg$FAILED) {
                s6 = null;
              }
              s7 = peg$parseStandardDirectiveEnding();
              peg$savedPos = s0;
              s0 = peg$f639(s4, s6, s7);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          if (input.substr(peg$currPos, 5) === peg$c25) {
            s2 = peg$c25;
            peg$currPos += 5;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e75);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$parse_();
            s4 = peg$parseAlligatorExpression();
            if (s4 !== peg$FAILED) {
              s5 = peg$parseAsNewTitle();
              if (s5 === peg$FAILED) {
                s5 = null;
              }
              s6 = peg$parseStandardDirectiveEnding();
              peg$savedPos = s0;
              s0 = peg$f640(s4, s5, s6);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            if (input.substr(peg$currPos, 5) === peg$c25) {
              s2 = peg$c25;
              peg$currPos += 5;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e75);
              }
            }
            if (s2 !== peg$FAILED) {
              peg$parse_();
              s4 = peg$currPos;
              s5 = peg$parseSecurityOptions();
              if (s5 !== peg$FAILED) {
                s6 = peg$parse_();
                s5 = [
                  s5,
                  s6
                ];
                s4 = s5;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 === peg$FAILED) {
                s4 = null;
              }
              s5 = peg$parseTemplateCore();
              if (s5 !== peg$FAILED) {
                s6 = peg$parse_();
                s7 = peg$parseHeaderLevel();
                if (s7 === peg$FAILED) {
                  s7 = null;
                }
                s8 = peg$parseUnderHeader();
                if (s8 === peg$FAILED) {
                  s8 = null;
                }
                s9 = peg$parseStandardDirectiveEnding();
                peg$savedPos = s0;
                s0 = peg$f641(s4, s5, s7, s8, s9);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              if (input.substr(peg$currPos, 5) === peg$c25) {
                s2 = peg$c25;
                peg$currPos += 5;
              } else {
                s2 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e75);
                }
              }
              if (s2 !== peg$FAILED) {
                peg$parse_();
                s4 = peg$currPos;
                s5 = peg$parseSecurityOptions();
                if (s5 !== peg$FAILED) {
                  s6 = peg$parse_();
                  s5 = [
                    s5,
                    s6
                  ];
                  s4 = s5;
                } else {
                  peg$currPos = s4;
                  s4 = peg$FAILED;
                }
                if (s4 === peg$FAILED) {
                  s4 = null;
                }
                if (input.charCodeAt(peg$currPos) === 64) {
                  s5 = peg$c37;
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e102);
                  }
                }
                if (s5 !== peg$FAILED) {
                  s6 = peg$parseShowVariableReference();
                  if (s6 !== peg$FAILED) {
                    s7 = peg$currPos;
                    peg$silentFails++;
                    if (input.charCodeAt(peg$currPos) === 40) {
                      s8 = peg$c74;
                      peg$currPos++;
                    } else {
                      s8 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e158);
                      }
                    }
                    peg$silentFails--;
                    if (s8 === peg$FAILED) {
                      s7 = void 0;
                    } else {
                      peg$currPos = s7;
                      s7 = peg$FAILED;
                    }
                    if (s7 !== peg$FAILED) {
                      s8 = peg$currPos;
                      peg$silentFails++;
                      s9 = peg$parseTailModifiers();
                      peg$silentFails--;
                      if (s9 === peg$FAILED) {
                        s8 = void 0;
                      } else {
                        peg$currPos = s8;
                        s8 = peg$FAILED;
                      }
                      if (s8 !== peg$FAILED) {
                        s9 = peg$parse_();
                        s10 = peg$parseHeaderLevel();
                        if (s10 === peg$FAILED) {
                          s10 = null;
                        }
                        s11 = peg$parseUnderHeader();
                        if (s11 === peg$FAILED) {
                          s11 = null;
                        }
                        s12 = peg$parseStandardDirectiveEnding();
                        peg$savedPos = s0;
                        s0 = peg$f642(s4, s6, s10, s11, s12);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                if (input.substr(peg$currPos, 5) === peg$c25) {
                  s2 = peg$c25;
                  peg$currPos += 5;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e75);
                  }
                }
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  s4 = peg$parseUnifiedReferenceWithTail();
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parse_();
                    s6 = peg$parseHeaderLevel();
                    if (s6 === peg$FAILED) {
                      s6 = null;
                    }
                    s7 = peg$parseUnderHeader();
                    if (s7 === peg$FAILED) {
                      s7 = null;
                    }
                    s8 = peg$parseStandardDirectiveEnding();
                    peg$savedPos = s0;
                    s0 = peg$f643(s4, s6, s7, s8);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  if (input.substr(peg$currPos, 5) === peg$c25) {
                    s2 = peg$c25;
                    peg$currPos += 5;
                  } else {
                    s2 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e75);
                    }
                  }
                  if (s2 !== peg$FAILED) {
                    peg$parse_();
                    s4 = peg$currPos;
                    s5 = peg$parseSecurityOptions();
                    if (s5 !== peg$FAILED) {
                      s6 = peg$parse_();
                      s5 = [
                        s5,
                        s6
                      ];
                      s4 = s5;
                    } else {
                      peg$currPos = s4;
                      s4 = peg$FAILED;
                    }
                    if (s4 === peg$FAILED) {
                      s4 = null;
                    }
                    if (input.charCodeAt(peg$currPos) === 34) {
                      s5 = peg$c20;
                      peg$currPos++;
                    } else {
                      s5 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e55);
                      }
                    }
                    if (s5 !== peg$FAILED) {
                      s6 = peg$currPos;
                      s7 = [];
                      s8 = input.charAt(peg$currPos);
                      if (peg$r41.test(s8)) {
                        peg$currPos++;
                      } else {
                        s8 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e274);
                        }
                      }
                      while (s8 !== peg$FAILED) {
                        s7.push(s8);
                        s8 = input.charAt(peg$currPos);
                        if (peg$r41.test(s8)) {
                          peg$currPos++;
                        } else {
                          s8 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e274);
                          }
                        }
                      }
                      s6 = input.substring(s6, peg$currPos);
                      if (input.charCodeAt(peg$currPos) === 34) {
                        s7 = peg$c20;
                        peg$currPos++;
                      } else {
                        s7 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e55);
                        }
                      }
                      if (s7 !== peg$FAILED) {
                        s8 = peg$parse_();
                        s9 = peg$parseHeaderLevel();
                        if (s9 === peg$FAILED) {
                          s9 = null;
                        }
                        s10 = peg$parseUnderHeader();
                        if (s10 === peg$FAILED) {
                          s10 = null;
                        }
                        s11 = peg$parseStandardDirectiveEnding();
                        peg$savedPos = s0;
                        s0 = peg$f644(s4, s6, s9, s10, s11);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    if (input.substr(peg$currPos, 5) === peg$c25) {
                      s2 = peg$c25;
                      peg$currPos += 5;
                    } else {
                      s2 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e75);
                      }
                    }
                    if (s2 !== peg$FAILED) {
                      peg$parse_();
                      s4 = peg$parsePathExpression();
                      if (s4 !== peg$FAILED) {
                        s5 = peg$currPos;
                        s6 = peg$parse_();
                        s7 = peg$parseSecurityOptions();
                        if (s7 !== peg$FAILED) {
                          peg$savedPos = s5;
                          s5 = peg$f645(s4, s7);
                        } else {
                          peg$currPos = s5;
                          s5 = peg$FAILED;
                        }
                        if (s5 === peg$FAILED) {
                          s5 = null;
                        }
                        s6 = peg$parse_();
                        s7 = peg$parseHeaderLevel();
                        if (s7 === peg$FAILED) {
                          s7 = null;
                        }
                        s8 = peg$parseUnderHeader();
                        if (s8 === peg$FAILED) {
                          s8 = null;
                        }
                        s9 = peg$parseStandardDirectiveEnding();
                        peg$savedPos = s0;
                        s0 = peg$f646(s4, s5, s7, s8, s9);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      if (input.substr(peg$currPos, 5) === peg$c25) {
                        s2 = peg$c25;
                        peg$currPos += 5;
                      } else {
                        s2 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e75);
                        }
                      }
                      if (s2 !== peg$FAILED) {
                        peg$parse_();
                        if (input.substr(peg$currPos, 2) === peg$c16) {
                          s4 = peg$c16;
                          peg$currPos += 2;
                        } else {
                          s4 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e37);
                          }
                        }
                        if (s4 !== peg$FAILED) {
                          peg$savedPos = peg$currPos;
                          s5 = peg$f647();
                          if (s5) {
                            s5 = void 0;
                          } else {
                            s5 = peg$FAILED;
                          }
                          if (s5 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f648();
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        if (input.substr(peg$currPos, 5) === peg$c25) {
                          s2 = peg$c25;
                          peg$currPos += 5;
                        } else {
                          s2 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e75);
                          }
                        }
                        if (s2 !== peg$FAILED) {
                          peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 60) {
                            s4 = peg$c19;
                            peg$currPos++;
                          } else {
                            s4 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e47);
                            }
                          }
                          if (s4 !== peg$FAILED) {
                            peg$savedPos = peg$currPos;
                            s5 = peg$f649();
                            if (s5) {
                              s5 = void 0;
                            } else {
                              s5 = peg$FAILED;
                            }
                            if (s5 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f650();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          if (input.substr(peg$currPos, 5) === peg$c25) {
                            s2 = peg$c25;
                            peg$currPos += 5;
                          } else {
                            s2 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e75);
                            }
                          }
                          if (s2 !== peg$FAILED) {
                            peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 64) {
                              s4 = peg$c37;
                              peg$currPos++;
                            } else {
                              s4 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e102);
                              }
                            }
                            if (s4 !== peg$FAILED) {
                              peg$savedPos = peg$currPos;
                              s5 = peg$f651();
                              if (s5) {
                                s5 = void 0;
                              } else {
                                s5 = peg$FAILED;
                              }
                              if (s5 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f652();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            if (input.substr(peg$currPos, 5) === peg$c25) {
                              s2 = peg$c25;
                              peg$currPos += 5;
                            } else {
                              s2 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e75);
                              }
                            }
                            if (s2 !== peg$FAILED) {
                              peg$parse_();
                              if (input.charCodeAt(peg$currPos) === 96) {
                                s4 = peg$c21;
                                peg$currPos++;
                              } else {
                                s4 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e58);
                                }
                              }
                              if (s4 !== peg$FAILED) {
                                peg$savedPos = peg$currPos;
                                s5 = peg$f653();
                                if (s5) {
                                  s5 = void 0;
                                } else {
                                  s5 = peg$FAILED;
                                }
                                if (s5 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f654();
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            s1 = peg$parseDirectiveContext();
                            if (s1 !== peg$FAILED) {
                              if (input.substr(peg$currPos, 5) === peg$c25) {
                                s2 = peg$c25;
                                peg$currPos += 5;
                              } else {
                                s2 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e75);
                                }
                              }
                              if (s2 !== peg$FAILED) {
                                peg$parse_();
                                if (input.substr(peg$currPos, 2) === peg$c5) {
                                  s4 = peg$c5;
                                  peg$currPos += 2;
                                } else {
                                  s4 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e7);
                                  }
                                }
                                if (s4 !== peg$FAILED) {
                                  peg$savedPos = peg$currPos;
                                  s5 = peg$f655();
                                  if (s5) {
                                    s5 = void 0;
                                  } else {
                                    s5 = peg$FAILED;
                                  }
                                  if (s5 !== peg$FAILED) {
                                    peg$savedPos = s0;
                                    s0 = peg$f656();
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                            if (s0 === peg$FAILED) {
                              s0 = peg$currPos;
                              s1 = peg$parseDirectiveContext();
                              if (s1 !== peg$FAILED) {
                                if (input.substr(peg$currPos, 5) === peg$c25) {
                                  s2 = peg$c25;
                                  peg$currPos += 5;
                                } else {
                                  s2 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e75);
                                  }
                                }
                                if (s2 !== peg$FAILED) {
                                  peg$parse_();
                                  s4 = peg$currPos;
                                  peg$silentFails++;
                                  s5 = peg$parseLineTerminator();
                                  if (s5 === peg$FAILED) {
                                    s5 = peg$parseEOF();
                                  }
                                  peg$silentFails--;
                                  if (s5 !== peg$FAILED) {
                                    peg$currPos = s4;
                                    s4 = void 0;
                                  } else {
                                    s4 = peg$FAILED;
                                  }
                                  if (s4 !== peg$FAILED) {
                                    peg$savedPos = s0;
                                    s0 = peg$f657();
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                              if (s0 === peg$FAILED) {
                                s0 = peg$currPos;
                                s1 = peg$parseDirectiveContext();
                                if (s1 !== peg$FAILED) {
                                  if (input.substr(peg$currPos, 5) === peg$c25) {
                                    s2 = peg$c25;
                                    peg$currPos += 5;
                                  } else {
                                    s2 = peg$FAILED;
                                    if (peg$silentFails === 0) {
                                      peg$fail(peg$e75);
                                    }
                                  }
                                  if (s2 !== peg$FAILED) {
                                    peg$parse_();
                                    if (input.substr(peg$currPos, 7) === peg$c86) {
                                      s4 = peg$c86;
                                      peg$currPos += 7;
                                    } else {
                                      s4 = peg$FAILED;
                                      if (peg$silentFails === 0) {
                                        peg$fail(peg$e238);
                                      }
                                    }
                                    if (s4 !== peg$FAILED) {
                                      s5 = peg$parse_();
                                      peg$savedPos = peg$currPos;
                                      s6 = peg$f658();
                                      if (s6) {
                                        s6 = void 0;
                                      } else {
                                        s6 = peg$FAILED;
                                      }
                                      if (s6 !== peg$FAILED) {
                                        peg$savedPos = s0;
                                        s0 = peg$f659();
                                      } else {
                                        peg$currPos = s0;
                                        s0 = peg$FAILED;
                                      }
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                                if (s0 === peg$FAILED) {
                                  s0 = peg$currPos;
                                  s1 = peg$parseDirectiveContext();
                                  if (s1 !== peg$FAILED) {
                                    if (input.substr(peg$currPos, 5) === peg$c25) {
                                      s2 = peg$c25;
                                      peg$currPos += 5;
                                    } else {
                                      s2 = peg$FAILED;
                                      if (peg$silentFails === 0) {
                                        peg$fail(peg$e75);
                                      }
                                    }
                                    if (s2 !== peg$FAILED) {
                                      peg$savedPos = s0;
                                      s0 = peg$f660();
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashShow, "peg$parseSlashShow");
  function peg$parseAddDirectiveRef() {
    var s0, s1, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseRHSContext();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseAlligatorExpression();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f661(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseRHSContext();
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseInterpolatedDoubleQuoteContent();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f662(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseRHSContext();
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$currPos;
          s4 = [];
          s5 = input.charAt(peg$currPos);
          if (peg$r18.test(s5)) {
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e90);
            }
          }
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = input.charAt(peg$currPos);
            if (peg$r18.test(s5)) {
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e90);
              }
            }
          }
          s3 = input.substring(s3, peg$currPos);
          peg$savedPos = s0;
          s0 = peg$f663(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseAddDirectiveRef, "peg$parseAddDirectiveRef");
  function peg$parseShowVariableReference() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseAnyFieldAccess();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseAnyFieldAccess();
      }
      peg$savedPos = s0;
      s0 = peg$f664(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseShowVariableReference, "peg$parseShowVariableReference");
  function peg$parseQuotedContent() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = [];
      s4 = peg$currPos;
      s5 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 34) {
        s6 = peg$c20;
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      peg$silentFails--;
      if (s6 === peg$FAILED) {
        s5 = void 0;
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      if (s5 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s6 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s6 !== peg$FAILED) {
          s5 = [
            s5,
            s6
          ];
          s4 = s5;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      } else {
        peg$currPos = s4;
        s4 = peg$FAILED;
      }
      while (s4 !== peg$FAILED) {
        s3.push(s4);
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 34) {
          s6 = peg$c20;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      }
      s2 = input.substring(s2, peg$currPos);
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f665(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c9;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 39) {
          s6 = peg$c9;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 39) {
            s6 = peg$c9;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e24);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s6 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e8);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c9;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f666(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseQuotedContent, "peg$parseQuotedContent");
  function peg$parseHeaderLevel() {
    var s0, s2, s4, s5;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c39) {
      s2 = peg$c39;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e106);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = [];
      if (input.charCodeAt(peg$currPos) === 35) {
        s5 = peg$c23;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e63);
        }
      }
      if (s5 !== peg$FAILED) {
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          if (input.charCodeAt(peg$currPos) === 35) {
            s5 = peg$c23;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e63);
            }
          }
        }
      } else {
        s4 = peg$FAILED;
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f667(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseHeaderLevel, "peg$parseHeaderLevel");
  function peg$parseUnderHeader() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 5) === peg$c149) {
      s2 = peg$c149;
      peg$currPos += 5;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e392);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseTextUntilNewline();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f668(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnderHeader, "peg$parseUnderHeader");
  function peg$parseAsNewTitle() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c39) {
      s2 = peg$c39;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e106);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseLiteralContent();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f669(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAsNewTitle, "peg$parseAsNewTitle");
  function peg$parseTemplateArgumentList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseTemplateArgument();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseTemplateArgument();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f670(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseTemplateArgument();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f670(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f671(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTemplateArgumentList, "peg$parseTemplateArgumentList");
  function peg$parseTemplateArgument() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseQuotedStringContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f672(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c37;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e102);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseShowVariableReference();
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f673(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseTemplateArgument, "peg$parseTemplateArgument");
  function peg$parseQuotedStringContent() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c20;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e55);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = [];
      s4 = peg$currPos;
      s5 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 34) {
        s6 = peg$c20;
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      peg$silentFails--;
      if (s6 === peg$FAILED) {
        s5 = void 0;
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      if (s5 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s6 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s6 !== peg$FAILED) {
          s5 = [
            s5,
            s6
          ];
          s4 = s5;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      } else {
        peg$currPos = s4;
        s4 = peg$FAILED;
      }
      while (s4 !== peg$FAILED) {
        s3.push(s4);
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 34) {
          s6 = peg$c20;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      }
      s2 = input.substring(s2, peg$currPos);
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c20;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e55);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f674(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c9;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e24);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 39) {
          s6 = peg$c9;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 39) {
            s6 = peg$c9;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e24);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s6 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e8);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c9;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f675(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseQuotedStringContent, "peg$parseQuotedStringContent");
  function peg$parseSlashVar() {
    var s0, s1, s2, s4, s5, s6, s7, s9, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c24) {
        s2 = peg$c24;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e74);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 64) {
          s4 = peg$c37;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e102);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parseBaseIdentifier();
          if (s5 !== peg$FAILED) {
            s6 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s7 = peg$c84;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e231);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$parse_();
              s9 = peg$parseVarRHSContent();
              if (s9 !== peg$FAILED) {
                s10 = peg$parseSecuredDirectiveEnding();
                peg$savedPos = s0;
                s0 = peg$f676(s5, s9, s10);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c24) {
          s2 = peg$c24;
          peg$currPos += 4;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e74);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s4 = peg$c37;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e102);
            }
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$parseBaseIdentifier();
            if (s5 !== peg$FAILED) {
              s6 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 61) {
                s7 = peg$c84;
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e231);
                }
              }
              if (s7 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 91) {
                  s9 = peg$c41;
                  peg$currPos++;
                } else {
                  s9 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e117);
                  }
                }
                if (s9 !== peg$FAILED) {
                  peg$savedPos = peg$currPos;
                  s10 = peg$f677(s5);
                  if (s10) {
                    s10 = void 0;
                  } else {
                    s10 = peg$FAILED;
                  }
                  if (s10 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f678(s5);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          if (input.substr(peg$currPos, 4) === peg$c24) {
            s2 = peg$c24;
            peg$currPos += 4;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e74);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 64) {
              s4 = peg$c37;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e102);
              }
            }
            if (s4 !== peg$FAILED) {
              s5 = peg$parseBaseIdentifier();
              if (s5 !== peg$FAILED) {
                s6 = peg$parse_();
                if (input.charCodeAt(peg$currPos) === 61) {
                  s7 = peg$c84;
                  peg$currPos++;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e231);
                  }
                }
                if (s7 !== peg$FAILED) {
                  peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 123) {
                    s9 = peg$c77;
                    peg$currPos++;
                  } else {
                    s9 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e204);
                    }
                  }
                  if (s9 !== peg$FAILED) {
                    peg$savedPos = peg$currPos;
                    s10 = peg$f679(s5);
                    if (s10) {
                      s10 = void 0;
                    } else {
                      s10 = peg$FAILED;
                    }
                    if (s10 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f680(s5);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c24) {
              s2 = peg$c24;
              peg$currPos += 4;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e74);
              }
            }
            if (s2 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 64) {
                s4 = peg$c37;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e102);
                }
              }
              if (s4 !== peg$FAILED) {
                s5 = peg$parseBaseIdentifier();
                if (s5 !== peg$FAILED) {
                  s6 = peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 61) {
                    s7 = peg$c84;
                    peg$currPos++;
                  } else {
                    s7 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e231);
                    }
                  }
                  if (s7 !== peg$FAILED) {
                    peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 34) {
                      s9 = peg$c20;
                      peg$currPos++;
                    } else {
                      s9 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e55);
                      }
                    }
                    if (s9 !== peg$FAILED) {
                      peg$savedPos = peg$currPos;
                      s10 = peg$f681(s5);
                      if (s10) {
                        s10 = void 0;
                      } else {
                        s10 = peg$FAILED;
                      }
                      if (s10 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f682(s5);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              if (input.substr(peg$currPos, 4) === peg$c24) {
                s2 = peg$c24;
                peg$currPos += 4;
              } else {
                s2 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e74);
                }
              }
              if (s2 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 64) {
                  s4 = peg$c37;
                  peg$currPos++;
                } else {
                  s4 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e102);
                  }
                }
                if (s4 !== peg$FAILED) {
                  s5 = peg$parseBaseIdentifier();
                  if (s5 !== peg$FAILED) {
                    s6 = peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 61) {
                      s7 = peg$c84;
                      peg$currPos++;
                    } else {
                      s7 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e231);
                      }
                    }
                    if (s7 !== peg$FAILED) {
                      peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 39) {
                        s9 = peg$c9;
                        peg$currPos++;
                      } else {
                        s9 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e24);
                        }
                      }
                      if (s9 !== peg$FAILED) {
                        peg$savedPos = peg$currPos;
                        s10 = peg$f683(s5);
                        if (s10) {
                          s10 = void 0;
                        } else {
                          s10 = peg$FAILED;
                        }
                        if (s10 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f684(s5);
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                if (input.substr(peg$currPos, 4) === peg$c24) {
                  s2 = peg$c24;
                  peg$currPos += 4;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e74);
                  }
                }
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 64) {
                    s4 = peg$c37;
                    peg$currPos++;
                  } else {
                    s4 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e102);
                    }
                  }
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parseBaseIdentifier();
                    if (s5 !== peg$FAILED) {
                      s6 = peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 61) {
                        s7 = peg$c84;
                        peg$currPos++;
                      } else {
                        s7 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e231);
                        }
                      }
                      if (s7 !== peg$FAILED) {
                        peg$parse_();
                        if (input.substr(peg$currPos, 2) === peg$c5) {
                          s9 = peg$c5;
                          peg$currPos += 2;
                        } else {
                          s9 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e7);
                          }
                        }
                        if (s9 !== peg$FAILED) {
                          peg$savedPos = peg$currPos;
                          s10 = peg$f685(s5);
                          if (s10) {
                            s10 = void 0;
                          } else {
                            s10 = peg$FAILED;
                          }
                          if (s10 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f686(s5);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  if (input.substr(peg$currPos, 4) === peg$c24) {
                    s2 = peg$c24;
                    peg$currPos += 4;
                  } else {
                    s2 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e74);
                    }
                  }
                  if (s2 !== peg$FAILED) {
                    peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 64) {
                      s4 = peg$c37;
                      peg$currPos++;
                    } else {
                      s4 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e102);
                      }
                    }
                    if (s4 !== peg$FAILED) {
                      s5 = peg$parseBaseIdentifier();
                      if (s5 !== peg$FAILED) {
                        s6 = peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 61) {
                          s7 = peg$c84;
                          peg$currPos++;
                        } else {
                          s7 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e231);
                          }
                        }
                        if (s7 !== peg$FAILED) {
                          peg$parse_();
                          s9 = peg$currPos;
                          peg$silentFails++;
                          s10 = peg$parseLineTerminator();
                          if (s10 === peg$FAILED) {
                            s10 = peg$parseEOF();
                          }
                          peg$silentFails--;
                          if (s10 !== peg$FAILED) {
                            peg$currPos = s9;
                            s9 = void 0;
                          } else {
                            s9 = peg$FAILED;
                          }
                          if (s9 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f687(s5);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    if (input.substr(peg$currPos, 4) === peg$c24) {
                      s2 = peg$c24;
                      peg$currPos += 4;
                    } else {
                      s2 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e74);
                      }
                    }
                    if (s2 !== peg$FAILED) {
                      peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 64) {
                        s4 = peg$c37;
                        peg$currPos++;
                      } else {
                        s4 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e102);
                        }
                      }
                      if (s4 !== peg$FAILED) {
                        s5 = peg$parseBaseIdentifier();
                        if (s5 !== peg$FAILED) {
                          s6 = peg$parse_();
                          peg$savedPos = peg$currPos;
                          s7 = peg$f688(s5);
                          if (s7) {
                            s7 = void 0;
                          } else {
                            s7 = peg$FAILED;
                          }
                          if (s7 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f689(s5);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      if (input.substr(peg$currPos, 4) === peg$c24) {
                        s2 = peg$c24;
                        peg$currPos += 4;
                      } else {
                        s2 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e74);
                        }
                      }
                      if (s2 !== peg$FAILED) {
                        peg$parse_();
                        s4 = peg$parseBaseIdentifier();
                        if (s4 !== peg$FAILED) {
                          s5 = peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 61) {
                            s6 = peg$c84;
                            peg$currPos++;
                          } else {
                            s6 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e231);
                            }
                          }
                          if (s6 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f690(s4);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        if (input.substr(peg$currPos, 4) === peg$c24) {
                          s2 = peg$c24;
                          peg$currPos += 4;
                        } else {
                          s2 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e74);
                          }
                        }
                        if (s2 !== peg$FAILED) {
                          peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 64) {
                            s4 = peg$c37;
                            peg$currPos++;
                          } else {
                            s4 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e102);
                            }
                          }
                          if (s4 !== peg$FAILED) {
                            s5 = peg$parse_();
                            peg$savedPos = peg$currPos;
                            s6 = peg$f691();
                            if (s6) {
                              s6 = void 0;
                            } else {
                              s6 = peg$FAILED;
                            }
                            if (s6 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f692();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          if (input.substr(peg$currPos, 4) === peg$c24) {
                            s2 = peg$c24;
                            peg$currPos += 4;
                          } else {
                            s2 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e74);
                            }
                          }
                          if (s2 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f693();
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e393);
      }
    }
    return s0;
  }
  __name(peg$parseSlashVar, "peg$parseSlashVar");
  function peg$parseSlashWhen() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9, s10, s11, s12, s14, s15, s17;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 5) === peg$c30) {
        s2 = peg$c30;
        peg$currPos += 5;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e80);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 64) {
          s4 = peg$c37;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e102);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parseBaseIdentifier();
          if (s5 !== peg$FAILED) {
            s6 = [];
            s7 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 46) {
              s8 = peg$c11;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e28);
              }
            }
            if (s8 !== peg$FAILED) {
              s9 = peg$parseBaseIdentifier();
              if (s9 !== peg$FAILED) {
                peg$savedPos = s7;
                s7 = peg$f694(s5, s9);
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
            while (s7 !== peg$FAILED) {
              s6.push(s7);
              s7 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 46) {
                s8 = peg$c11;
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e28);
                }
              }
              if (s8 !== peg$FAILED) {
                s9 = peg$parseBaseIdentifier();
                if (s9 !== peg$FAILED) {
                  peg$savedPos = s7;
                  s7 = peg$f694(s5, s9);
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
            }
            s7 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 91) {
              s8 = peg$c41;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e117);
              }
            }
            if (s8 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f695(s5, s6);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenMatchForm();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenSimpleForm();
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            if (input.substr(peg$currPos, 5) === peg$c30) {
              s2 = peg$c30;
              peg$currPos += 5;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e80);
              }
            }
            if (s2 !== peg$FAILED) {
              peg$parse_();
              s4 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 64) {
                s5 = peg$c37;
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e102);
                }
              }
              if (s5 !== peg$FAILED) {
                s6 = peg$parseBaseIdentifier();
                if (s6 !== peg$FAILED) {
                  peg$savedPos = s4;
                  s4 = peg$f696(s6);
                } else {
                  peg$currPos = s4;
                  s4 = peg$FAILED;
                }
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                s5 = peg$parse_();
                if (input.substr(peg$currPos, 3) === peg$c150) {
                  s6 = peg$c150;
                  peg$currPos += 3;
                } else {
                  s6 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e394);
                  }
                }
                if (s6 !== peg$FAILED) {
                  s7 = peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 58) {
                    s8 = peg$c54;
                    peg$currPos++;
                  } else {
                    s8 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e134);
                    }
                  }
                  if (s8 !== peg$FAILED) {
                    s9 = peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 91) {
                      s10 = peg$c41;
                      peg$currPos++;
                    } else {
                      s10 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e117);
                      }
                    }
                    if (s10 !== peg$FAILED) {
                      s11 = peg$parse_();
                      peg$savedPos = peg$currPos;
                      s12 = peg$f697(s4);
                      if (s12) {
                        s12 = void 0;
                      } else {
                        s12 = peg$FAILED;
                      }
                      if (s12 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f698(s4);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$parseWhenBlockForm();
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                if (input.substr(peg$currPos, 5) === peg$c30) {
                  s2 = peg$c30;
                  peg$currPos += 5;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e80);
                  }
                }
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  s4 = peg$parseWhenModifier();
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 58) {
                      s6 = peg$c54;
                      peg$currPos++;
                    } else {
                      s6 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e134);
                      }
                    }
                    if (s6 !== peg$FAILED) {
                      s7 = peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 91) {
                        s8 = peg$c41;
                        peg$currPos++;
                      } else {
                        s8 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e117);
                        }
                      }
                      if (s8 !== peg$FAILED) {
                        s9 = peg$parse_();
                        s10 = peg$parseWhenConditionList();
                        if (s10 !== peg$FAILED) {
                          s11 = peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 93) {
                            s12 = peg$c42;
                            peg$currPos++;
                          } else {
                            s12 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e118);
                            }
                          }
                          if (s12 !== peg$FAILED) {
                            peg$parse_();
                            s14 = peg$currPos;
                            if (input.substr(peg$currPos, 2) === peg$c121) {
                              s15 = peg$c121;
                              peg$currPos += 2;
                            } else {
                              s15 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e350);
                              }
                            }
                            if (s15 !== peg$FAILED) {
                              peg$parse_();
                              s17 = peg$parseWhenAction();
                              if (s17 !== peg$FAILED) {
                                peg$savedPos = s14;
                                s14 = peg$f699(s4, s10, s17);
                              } else {
                                peg$currPos = s14;
                                s14 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s14;
                              s14 = peg$FAILED;
                            }
                            if (s14 === peg$FAILED) {
                              s14 = null;
                            }
                            peg$savedPos = s0;
                            s0 = peg$f700(s4, s10, s14);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$parseWhenBareBlockForm();
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    if (input.substr(peg$currPos, 5) === peg$c30) {
                      s2 = peg$c30;
                      peg$currPos += 5;
                    } else {
                      s2 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e80);
                      }
                    }
                    if (s2 !== peg$FAILED) {
                      peg$parse_();
                      s4 = peg$parseWhenSimpleCondition();
                      if (s4 !== peg$FAILED) {
                        s5 = peg$parse_();
                        s6 = peg$currPos;
                        peg$silentFails++;
                        if (input.substr(peg$currPos, 2) === peg$c121) {
                          s7 = peg$c121;
                          peg$currPos += 2;
                        } else {
                          s7 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e350);
                          }
                        }
                        peg$silentFails--;
                        if (s7 === peg$FAILED) {
                          s6 = void 0;
                        } else {
                          peg$currPos = s6;
                          s6 = peg$FAILED;
                        }
                        if (s6 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f701(s4);
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      if (input.substr(peg$currPos, 5) === peg$c30) {
                        s2 = peg$c30;
                        peg$currPos += 5;
                      } else {
                        s2 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e80);
                        }
                      }
                      if (s2 !== peg$FAILED) {
                        peg$parse_();
                        s4 = peg$parseWhenSimpleCondition();
                        if (s4 !== peg$FAILED) {
                          s5 = peg$parse_();
                          if (input.substr(peg$currPos, 2) === peg$c121) {
                            s6 = peg$c121;
                            peg$currPos += 2;
                          } else {
                            s6 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e350);
                            }
                          }
                          if (s6 !== peg$FAILED) {
                            s7 = peg$parse_();
                            s8 = peg$currPos;
                            peg$silentFails++;
                            if (input.length > peg$currPos) {
                              s9 = input.charAt(peg$currPos);
                              peg$currPos++;
                            } else {
                              s9 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e8);
                              }
                            }
                            peg$silentFails--;
                            if (s9 === peg$FAILED) {
                              s8 = void 0;
                            } else {
                              peg$currPos = s8;
                              s8 = peg$FAILED;
                            }
                            if (s8 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f702(s4);
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        if (input.substr(peg$currPos, 5) === peg$c30) {
                          s2 = peg$c30;
                          peg$currPos += 5;
                        } else {
                          s2 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e80);
                          }
                        }
                        if (s2 !== peg$FAILED) {
                          peg$parse_();
                          s4 = peg$currPos;
                          if (input.charCodeAt(peg$currPos) === 64) {
                            s5 = peg$c37;
                            peg$currPos++;
                          } else {
                            s5 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e102);
                            }
                          }
                          if (s5 !== peg$FAILED) {
                            s6 = peg$parseBaseIdentifier();
                            if (s6 !== peg$FAILED) {
                              peg$savedPos = s4;
                              s4 = peg$f703(s6);
                            } else {
                              peg$currPos = s4;
                              s4 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s4;
                            s4 = peg$FAILED;
                          }
                          if (s4 === peg$FAILED) {
                            s4 = null;
                          }
                          s5 = peg$parse_();
                          if (input.substr(peg$currPos, 3) === peg$c151) {
                            s6 = peg$c151;
                            peg$currPos += 3;
                          } else {
                            s6 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e395);
                            }
                          }
                          if (s6 !== peg$FAILED) {
                            s7 = peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 58) {
                              s8 = peg$c54;
                              peg$currPos++;
                            } else {
                              s8 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e134);
                              }
                            }
                            if (s8 !== peg$FAILED) {
                              s9 = peg$parse_();
                              if (input.charCodeAt(peg$currPos) === 91) {
                                s10 = peg$c41;
                                peg$currPos++;
                              } else {
                                s10 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e117);
                                }
                              }
                              if (s10 !== peg$FAILED) {
                                s11 = peg$parse_();
                                peg$savedPos = peg$currPos;
                                s12 = peg$f704(s4);
                                if (s12) {
                                  s12 = void 0;
                                } else {
                                  s12 = peg$FAILED;
                                }
                                if (s12 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f705(s4);
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          if (input.substr(peg$currPos, 5) === peg$c30) {
                            s2 = peg$c30;
                            peg$currPos += 5;
                          } else {
                            s2 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e80);
                            }
                          }
                          if (s2 !== peg$FAILED) {
                            peg$parse_();
                            s4 = peg$currPos;
                            if (input.charCodeAt(peg$currPos) === 64) {
                              s5 = peg$c37;
                              peg$currPos++;
                            } else {
                              s5 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e102);
                              }
                            }
                            if (s5 !== peg$FAILED) {
                              s6 = peg$parseBaseIdentifier();
                              if (s6 !== peg$FAILED) {
                                peg$savedPos = s4;
                                s4 = peg$f706(s6);
                              } else {
                                peg$currPos = s4;
                                s4 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s4;
                              s4 = peg$FAILED;
                            }
                            if (s4 === peg$FAILED) {
                              s4 = null;
                            }
                            s5 = peg$parse_();
                            s6 = peg$parseWhenModifier();
                            if (s6 === peg$FAILED) {
                              s6 = null;
                            }
                            s7 = peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 58) {
                              s8 = peg$c54;
                              peg$currPos++;
                            } else {
                              s8 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e134);
                              }
                            }
                            if (s8 !== peg$FAILED) {
                              s9 = peg$parse_();
                              if (input.charCodeAt(peg$currPos) === 91) {
                                s10 = peg$c41;
                                peg$currPos++;
                              } else {
                                s10 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e117);
                                }
                              }
                              if (s10 !== peg$FAILED) {
                                s11 = peg$parse_();
                                peg$savedPos = peg$currPos;
                                s12 = peg$f707(s4, s6);
                                if (s12) {
                                  s12 = void 0;
                                } else {
                                  s12 = peg$FAILED;
                                }
                                if (s12 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f708(s4, s6);
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            if (input.substr(peg$currPos, 5) === peg$c30) {
                              s2 = peg$c30;
                              peg$currPos += 5;
                            } else {
                              s2 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e80);
                              }
                            }
                            if (s2 !== peg$FAILED) {
                              peg$parse_();
                              s4 = peg$currPos;
                              if (input.charCodeAt(peg$currPos) === 64) {
                                s5 = peg$c37;
                                peg$currPos++;
                              } else {
                                s5 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e102);
                                }
                              }
                              if (s5 !== peg$FAILED) {
                                s6 = peg$parseBaseIdentifier();
                                if (s6 !== peg$FAILED) {
                                  peg$savedPos = s4;
                                  s4 = peg$f709(s6);
                                } else {
                                  peg$currPos = s4;
                                  s4 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s4;
                                s4 = peg$FAILED;
                              }
                              if (s4 === peg$FAILED) {
                                s4 = null;
                              }
                              s5 = peg$parse_();
                              s6 = peg$parseBaseIdentifier();
                              if (s6 !== peg$FAILED) {
                                peg$savedPos = peg$currPos;
                                s7 = peg$f710(s4, s6);
                                if (s7) {
                                  s7 = void 0;
                                } else {
                                  s7 = peg$FAILED;
                                }
                                if (s7 !== peg$FAILED) {
                                  s8 = peg$parse_();
                                  if (input.charCodeAt(peg$currPos) === 58) {
                                    s9 = peg$c54;
                                    peg$currPos++;
                                  } else {
                                    s9 = peg$FAILED;
                                    if (peg$silentFails === 0) {
                                      peg$fail(peg$e134);
                                    }
                                  }
                                  if (s9 !== peg$FAILED) {
                                    s10 = peg$parse_();
                                    if (input.charCodeAt(peg$currPos) === 91) {
                                      s11 = peg$c41;
                                      peg$currPos++;
                                    } else {
                                      s11 = peg$FAILED;
                                      if (peg$silentFails === 0) {
                                        peg$fail(peg$e117);
                                      }
                                    }
                                    if (s11 !== peg$FAILED) {
                                      peg$savedPos = s0;
                                      s0 = peg$f711(s4, s6);
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            s1 = peg$parseDirectiveContext();
                            if (s1 !== peg$FAILED) {
                              if (input.substr(peg$currPos, 5) === peg$c30) {
                                s2 = peg$c30;
                                peg$currPos += 5;
                              } else {
                                s2 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e80);
                                }
                              }
                              if (s2 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f712();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashWhen, "peg$parseSlashWhen");
  function peg$parseWhenSimpleForm() {
    var s0, s1, s2, s4, s6, s8;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 5) === peg$c30) {
        s2 = peg$c30;
        peg$currPos += 5;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e80);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseWhenSimpleCondition();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c121) {
            s6 = peg$c121;
            peg$currPos += 2;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e350);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            s8 = peg$parseWhenAction();
            if (s8 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f713(s4, s8);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenSimpleForm, "peg$parseWhenSimpleForm");
  function peg$parseWhenMatchForm() {
    var s0, s1, s2, s4, s6, s8, s10, s12;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 5) === peg$c30) {
        s2 = peg$c30;
        peg$currPos += 5;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e80);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseWhenConditionExpression();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 58) {
            s6 = peg$c54;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e134);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 91) {
              s8 = peg$c41;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e117);
              }
            }
            if (s8 !== peg$FAILED) {
              peg$parse_();
              s10 = peg$parseWhenConditionList();
              if (s10 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 93) {
                  s12 = peg$c42;
                  peg$currPos++;
                } else {
                  s12 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e118);
                  }
                }
                if (s12 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f714(s4, s10);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenMatchForm, "peg$parseWhenMatchForm");
  function peg$parseWhenBlockForm() {
    var s0, s1, s2, s4, s5, s6, s8, s10, s12, s14, s16, s17, s19;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 5) === peg$c30) {
        s2 = peg$c30;
        peg$currPos += 5;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e80);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 64) {
          s5 = peg$c37;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e102);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseBaseIdentifier();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f715(s6);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        s5 = peg$parse_();
        s6 = peg$parseWhenModifier();
        if (s6 === peg$FAILED) {
          s6 = null;
        }
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 58) {
          s8 = peg$c54;
          peg$currPos++;
        } else {
          s8 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e134);
          }
        }
        if (s8 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 91) {
            s10 = peg$c41;
            peg$currPos++;
          } else {
            s10 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e117);
            }
          }
          if (s10 !== peg$FAILED) {
            peg$parse_();
            s12 = peg$parseWhenConditionList();
            if (s12 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 93) {
                s14 = peg$c42;
                peg$currPos++;
              } else {
                s14 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e118);
                }
              }
              if (s14 !== peg$FAILED) {
                peg$parse_();
                s16 = peg$currPos;
                if (input.substr(peg$currPos, 2) === peg$c121) {
                  s17 = peg$c121;
                  peg$currPos += 2;
                } else {
                  s17 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e350);
                  }
                }
                if (s17 !== peg$FAILED) {
                  peg$parse_();
                  s19 = peg$parseWhenAction();
                  if (s19 !== peg$FAILED) {
                    peg$savedPos = s16;
                    s16 = peg$f716(s4, s6, s12, s19);
                  } else {
                    peg$currPos = s16;
                    s16 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s16;
                  s16 = peg$FAILED;
                }
                if (s16 === peg$FAILED) {
                  s16 = null;
                }
                peg$savedPos = s0;
                s0 = peg$f717(s4, s6, s12, s16);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenBlockForm, "peg$parseWhenBlockForm");
  function peg$parseWhenBareBlockForm() {
    var s0, s1, s2, s4, s6, s8;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 5) === peg$c30) {
        s2 = peg$c30;
        peg$currPos += 5;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e80);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 91) {
          s4 = peg$c41;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e117);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseWhenConditionList();
          if (s6 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 93) {
              s8 = peg$c42;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e118);
              }
            }
            if (s8 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f718(s6);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenBareBlockForm, "peg$parseWhenBareBlockForm");
  function peg$parseWhenModifier() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c152) {
      s1 = peg$c152;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e396);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 3) === peg$c151) {
        s1 = peg$c151;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e395);
        }
      }
      if (s1 === peg$FAILED) {
        if (input.substr(peg$currPos, 3) === peg$c150) {
          s1 = peg$c150;
          peg$currPos += 3;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e394);
          }
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f719(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenModifier, "peg$parseWhenModifier");
  function peg$parseWhenSimpleCondition() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f720(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenSimpleCondition, "peg$parseWhenSimpleCondition");
  function peg$parseNegatedSimpleCondition() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 33) {
      s1 = peg$c85;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e232);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseNonNegatedSimpleCondition();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f721(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNegatedSimpleCondition, "peg$parseNegatedSimpleCondition");
  function peg$parseNonNegatedSimpleCondition() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceWithTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f722(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseVariableNoTail();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f723(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseVariable();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f724();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseBooleanLiteral();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f725(s1);
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseNullLiteral();
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f726(s1);
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseStringLiteral();
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f727(s1);
              }
              s0 = s1;
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseNonNegatedSimpleCondition, "peg$parseNonNegatedSimpleCondition");
  function peg$parseWhenConditionExpression() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f728(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$parseNegatedCondition();
      if (s0 === peg$FAILED) {
        s0 = peg$parseNonNegatedCondition();
      }
    }
    return s0;
  }
  __name(peg$parseWhenConditionExpression, "peg$parseWhenConditionExpression");
  function peg$parseNegatedCondition() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 33) {
      s1 = peg$c85;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e232);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseNonNegatedCondition();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f729(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNegatedCondition, "peg$parseNegatedCondition");
  function peg$parseNonNegatedCondition() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceWithTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f730(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseVariableNoTail();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f731(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseVariable();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f732();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseBooleanLiteral();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f733(s1);
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseNullLiteral();
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f734(s1);
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseStringLiteral();
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f735(s1);
              }
              s0 = s1;
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseNonNegatedCondition, "peg$parseNonNegatedCondition");
  function peg$parseWhenConditionList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseWhenConditionPair();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseWhenConditionSeparator();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseWhenConditionPair();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f736(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseWhenConditionSeparator();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseWhenConditionPair();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f736(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f737(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenConditionList, "peg$parseWhenConditionList");
  function peg$parseWhenConditionSeparator() {
    var s0, s2;
    s0 = peg$currPos;
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 44) {
      s2 = peg$c43;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e120);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      peg$savedPos = s0;
      s0 = peg$f738();
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$parse_();
    }
    return s0;
  }
  __name(peg$parseWhenConditionSeparator, "peg$parseWhenConditionSeparator");
  function peg$parseWhenConditionPair() {
    var s0, s1, s3, s4, s6;
    s0 = peg$currPos;
    s1 = peg$parseWhenConditionExpression();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$currPos;
      if (input.substr(peg$currPos, 2) === peg$c121) {
        s4 = peg$c121;
        peg$currPos += 2;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e350);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseWhenAction();
        if (s6 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f739(s1, s6);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f740(s1, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenConditionPair, "peg$parseWhenConditionPair");
  function peg$parseWhenAction() {
    var s0;
    s0 = peg$parseWhenActionBlock();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenImplicitAction();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenActionDirective();
      }
    }
    return s0;
  }
  __name(peg$parseWhenAction, "peg$parseWhenAction");
  function peg$parseWhenActionBlock() {
    var s0, s1, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c41;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWhenBlockAction();
      if (s3 !== peg$FAILED) {
        s4 = [];
        s5 = peg$currPos;
        s6 = peg$parse_();
        s7 = peg$parseWhenBlockAction();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s5;
          s5 = peg$f741(s3, s7);
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          s5 = peg$currPos;
          s6 = peg$parse_();
          s7 = peg$parseWhenBlockAction();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f741(s3, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        }
        s5 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 93) {
          s6 = peg$c42;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e118);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f742(s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenActionBlock, "peg$parseWhenActionBlock");
  function peg$parseWhenBlockAction() {
    var s0;
    s0 = peg$parseWhenImplicitAction();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenActionDirective();
    }
    return s0;
  }
  __name(peg$parseWhenBlockAction, "peg$parseWhenBlockAction");
  function peg$parseWhenActionDirective() {
    var s0, s2, s4, s5, s6, s7, s8, s9;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      peg$currPos++;
    } else {
      if (peg$silentFails === 0) {
        peg$fail(peg$e60);
      }
    }
    if (input.substr(peg$currPos, 6) === peg$c91) {
      s2 = peg$c91;
      peg$currPos += 6;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e245);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseWhenOutputSource();
      if (s4 === peg$FAILED) {
        s4 = null;
      }
      s5 = peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c92) {
        s6 = peg$c92;
        peg$currPos += 2;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e246);
        }
      }
      if (s6 !== peg$FAILED) {
        s7 = peg$parse_();
        s8 = peg$parseWhenOutputTarget();
        if (s8 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f743(s4, s8);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 47) {
        peg$currPos++;
      } else {
        if (peg$silentFails === 0) {
          peg$fail(peg$e60);
        }
      }
      if (input.substr(peg$currPos, 4) === peg$c93) {
        s2 = peg$c93;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e247);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseVariableNoTail();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f744(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 47) {
          peg$currPos++;
        } else {
          if (peg$silentFails === 0) {
            peg$fail(peg$e60);
          }
        }
        if (input.substr(peg$currPos, 4) === peg$c93) {
          s2 = peg$c93;
          peg$currPos += 4;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e247);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$parseUnifiedReferenceWithTail();
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f745(s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 47) {
            peg$currPos++;
          } else {
            if (peg$silentFails === 0) {
              peg$fail(peg$e60);
            }
          }
          if (input.substr(peg$currPos, 4) === peg$c93) {
            s2 = peg$c93;
            peg$currPos += 4;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e247);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$parse_();
            s4 = peg$parseTemplateCore();
            if (s4 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f746(s4);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 47) {
              peg$currPos++;
            } else {
              if (peg$silentFails === 0) {
                peg$fail(peg$e60);
              }
            }
            if (input.substr(peg$currPos, 3) === peg$c94) {
              s2 = peg$c94;
              peg$currPos += 3;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e248);
              }
            }
            if (s2 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 64) {
                s4 = peg$c37;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e102);
                }
              }
              if (s4 !== peg$FAILED) {
                s5 = peg$parseBaseIdentifier();
                if (s5 !== peg$FAILED) {
                  s6 = peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 61) {
                    s7 = peg$c84;
                    peg$currPos++;
                  } else {
                    s7 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e231);
                    }
                  }
                  if (s7 !== peg$FAILED) {
                    s8 = peg$parse_();
                    s9 = peg$parseVarRHSContent();
                    if (s9 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f747(s5, s9);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 47) {
                peg$currPos++;
              } else {
                if (peg$silentFails === 0) {
                  peg$fail(peg$e60);
                }
              }
              if (input.substr(peg$currPos, 3) === peg$c48) {
                s2 = peg$c48;
                peg$currPos += 3;
              } else {
                s2 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e127);
                }
              }
              if (s2 !== peg$FAILED) {
                peg$parse_();
                s4 = peg$parseUnifiedReferenceWithTail();
                if (s4 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f748(s4);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                if (input.charCodeAt(peg$currPos) === 47) {
                  peg$currPos++;
                } else {
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e60);
                  }
                }
                if (input.substr(peg$currPos, 3) === peg$c48) {
                  s2 = peg$c48;
                  peg$currPos += 3;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e127);
                  }
                }
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  s4 = peg$parseUnifiedCommandBrackets();
                  if (s4 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f749(s4);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  if (input.charCodeAt(peg$currPos) === 47) {
                    peg$currPos++;
                  } else {
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e60);
                    }
                  }
                  if (input.substr(peg$currPos, 6) === peg$c91) {
                    s2 = peg$c91;
                    peg$currPos += 6;
                  } else {
                    s2 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e245);
                    }
                  }
                  if (s2 !== peg$FAILED) {
                    peg$parse_();
                    s4 = peg$parseWhenOutputSource();
                    if (s4 === peg$FAILED) {
                      s4 = null;
                    }
                    s5 = peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 91) {
                      s6 = peg$c41;
                      peg$currPos++;
                    } else {
                      s6 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e117);
                      }
                    }
                    if (s6 !== peg$FAILED) {
                      s7 = peg$parseWhenPathText();
                      if (s7 !== peg$FAILED) {
                        if (input.charCodeAt(peg$currPos) === 93) {
                          s8 = peg$c42;
                          peg$currPos++;
                        } else {
                          s8 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e118);
                          }
                        }
                        if (s8 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f750(s4, s7);
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseWhenActionDirective, "peg$parseWhenActionDirective");
  function peg$parseWhenCommandText() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r34.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e198);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r34.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e198);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f751(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenCommandText, "peg$parseWhenCommandText");
  function peg$parseWhenBraceCommandText() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r50.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e333);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r50.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e333);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f752(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenBraceCommandText, "peg$parseWhenBraceCommandText");
  function peg$parseWhenPathText() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r34.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e198);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r34.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e198);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f753(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenPathText, "peg$parseWhenPathText");
  function peg$parseWhenOutputSource() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f754(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDataString();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f755(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseWhenOutputSource, "peg$parseWhenOutputSource");
  function peg$parseWhenOutputTarget() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c98) {
      s1 = peg$c98;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e261);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 6) === peg$c99) {
        s1 = peg$c99;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e262);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f756(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c100) {
        s1 = peg$c100;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e264);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 58) {
          s3 = peg$c54;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e134);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseBaseIdentifier();
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f757(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 === peg$FAILED) {
          s2 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f758(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDataString();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f759(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseWhenOutputTarget, "peg$parseWhenOutputTarget");
  function peg$parseWhenImplicitAction() {
    var s0;
    s0 = peg$parseWhenImplicitVarAssignment();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenImplicitExecAssignment();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenImplicitFunctionCall();
        if (s0 === peg$FAILED) {
          s0 = peg$parseWhenImplicitRichContent();
        }
      }
    }
    return s0;
  }
  __name(peg$parseWhenImplicitAction, "peg$parseWhenImplicitAction");
  function peg$parseWhenImplicitVarAssignment() {
    var s0, s1, s2, s4, s6;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 61) {
          s4 = peg$c84;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e231);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseVarRHSContent();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f760(s2, s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenImplicitVarAssignment, "peg$parseWhenImplicitVarAssignment");
  function peg$parseWhenImplicitExecAssignment() {
    var s0, s1, s2, s3, s4, s6, s8, s10;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s3 = peg$c74;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e158);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseCommandArgumentList();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s6 = peg$c75;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e159);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s8 = peg$c84;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e231);
              }
            }
            if (s8 !== peg$FAILED) {
              peg$parse_();
              s10 = peg$parseVarRHSContent();
              if (s10 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f761(s2, s4, s10);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenImplicitExecAssignment, "peg$parseWhenImplicitExecAssignment");
  function peg$parseWhenImplicitFunctionCall() {
    var s0, s1, s2, s3, s4, s6, s7;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e102);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s3 = peg$c74;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e158);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseCommandArgumentList();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s6 = peg$c75;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e159);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$parseTailModifiers();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f762(s2, s4, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenImplicitFunctionCall, "peg$parseWhenImplicitFunctionCall");
  function peg$parseWhenImplicitRichContent() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseTemplateCore();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f763(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseVarRHSContent();
      if (s1 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s2 = peg$f764(s1);
        if (s2) {
          s2 = void 0;
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f765(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseWhenImplicitRichContent, "peg$parseWhenImplicitRichContent");
  if (typeof options !== "undefined") {
    options.rhsDirectiveType = "";
    options.afterDirectiveType = "";
  }
  peg$result = peg$startRuleFunction();
  if (options.peg$library) {
    return (
      /** @type {any} */
      {
        peg$result,
        peg$currPos,
        peg$FAILED,
        peg$maxFailExpected,
        peg$maxFailPos
      }
    );
  }
  if (peg$result !== peg$FAILED && peg$currPos === input.length) {
    return peg$result;
  } else {
    if (peg$result !== peg$FAILED && peg$currPos < input.length) {
      peg$fail(peg$endExpectation());
    }
    throw peg$buildStructuredError(peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos));
  }
}
__name(peg$parse, "peg$parse");
var peg$allowedStartRules = [
  "Start"
];
var parser = {
  parse: peg$parse,
  SyntaxError: peg$SyntaxError,
  StartRules: peg$allowedStartRules
};
var parser_default = parser;

// grammar/parser/index.ts
async function parse2(source, options) {
  try {
    const ast = parser_default.parse(source, {
      startRule: "Start",
      ...options
    });
    return {
      ast,
      success: true
    };
  } catch (error) {
    return {
      ast: [],
      success: false,
      error: error instanceof Error ? error : new Error(String(error))
    };
  }
}
__name(parse2, "parse");
function parseSync(source, options) {
  return parser_default.parse(source, {
    startRule: "Start",
    ...options
  });
}
__name(parseSync, "parseSync");
var SyntaxError = parser_default.SyntaxError;

export { SyntaxError, parse2 as parse, parseSync, parser_default };
//# sourceMappingURL=chunk-VI5FKUWW.mjs.map
//# sourceMappingURL=chunk-VI5FKUWW.mjs.map