{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Vega Visualization Specification Language",
  "definitions": {
    "autosize": {
      "oneOf": [
        {
          "enum": [
            "pad",
            "fit",
            "fit-x",
            "fit-y",
            "none"
          ],
          "default": "pad"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "pad",
                "fit",
                "fit-x",
                "fit-y",
                "none"
              ],
              "default": "pad"
            },
            "resize": {
              "type": "boolean"
            },
            "contains": {
              "enum": [
                "content",
                "padding"
              ]
            }
          },
          "required": [
            "type"
          ],
          "additionalProperties": false
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "axis": {
      "type": "object",
      "properties": {
        "orient": {
          "oneOf": [
            {
              "enum": [
                "top",
                "bottom",
                "left",
                "right"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "scale": {
          "type": "string"
        },
        "format": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "properties": {
                "year": {
                  "type": "string"
                },
                "quarter": {
                  "type": "string"
                },
                "month": {
                  "type": "string"
                },
                "date": {
                  "type": "string"
                },
                "week": {
                  "type": "string"
                },
                "day": {
                  "type": "string"
                },
                "hours": {
                  "type": "string"
                },
                "minutes": {
                  "type": "string"
                },
                "seconds": {
                  "type": "string"
                },
                "milliseconds": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "formatType": {
          "oneOf": [
            {
              "enum": [
                "number",
                "time",
                "utc"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "minExtent": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "maxExtent": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "offset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "position": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "bandPosition": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "translate": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "values": {
          "$ref": "#/definitions/arrayOrSignal"
        },
        "zindex": {
          "type": "number"
        },
        "aria": {
          "type": "boolean"
        },
        "description": {
          "type": "string"
        },
        "title": {
          "$ref": "#/definitions/textOrSignal"
        },
        "titlePadding": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "titleAlign": {
          "oneOf": [
            {
              "enum": [
                "left",
                "right",
                "center"
              ]
            },
            {
              "$ref": "#/definitions/alignValue"
            }
          ]
        },
        "titleAnchor": {
          "oneOf": [
            {
              "enum": [
                null,
                "start",
                "middle",
                "end"
              ]
            },
            {
              "$ref": "#/definitions/anchorValue"
            }
          ]
        },
        "titleAngle": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "titleX": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "titleY": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "titleBaseline": {
          "oneOf": [
            {
              "enum": [
                "top",
                "middle",
                "bottom",
                "alphabetic",
                "line-top",
                "line-bottom"
              ]
            },
            {
              "$ref": "#/definitions/baselineValue"
            }
          ]
        },
        "titleColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/colorValue"
            }
          ]
        },
        "titleFont": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/stringValue"
            }
          ]
        },
        "titleFontSize": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "titleFontStyle": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/stringValue"
            }
          ]
        },
        "titleFontWeight": {
          "oneOf": [
            {
              "enum": [
                null,
                "normal",
                "bold",
                "lighter",
                "bolder",
                "100",
                "200",
                "300",
                "400",
                "500",
                "600",
                "700",
                "800",
                "900",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            {
              "$ref": "#/definitions/fontWeightValue"
            }
          ]
        },
        "titleLimit": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "titleLineHeight": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "titleOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "domain": {
          "type": "boolean"
        },
        "domainCap": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/stringValue"
            }
          ]
        },
        "domainColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/colorValue"
            }
          ]
        },
        "domainDash": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "number"
              }
            },
            {
              "$ref": "#/definitions/arrayValue"
            }
          ]
        },
        "domainDashOffset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "domainOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "domainWidth": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "ticks": {
          "type": "boolean"
        },
        "tickBand": {
          "$ref": "#/definitions/tickBand"
        },
        "tickCap": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/stringValue"
            }
          ]
        },
        "tickColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/colorValue"
            }
          ]
        },
        "tickDash": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "number"
              }
            },
            {
              "$ref": "#/definitions/arrayValue"
            }
          ]
        },
        "tickDashOffset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "tickOffset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "tickOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "tickRound": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/booleanValue"
            }
          ]
        },
        "tickSize": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "tickWidth": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "tickCount": {
          "$ref": "#/definitions/tickCount"
        },
        "tickExtra": {
          "$ref": "#/definitions/booleanOrSignal"
        },
        "tickMinStep": {
          "$ref": "#/definitions/numberOrSignal"
        },
        "grid": {
          "type": "boolean"
        },
        "gridScale": {
          "type": "string"
        },
        "gridCap": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/stringValue"
            }
          ]
        },
        "gridColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/colorValue"
            }
          ]
        },
        "gridDash": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "number"
              }
            },
            {
              "$ref": "#/definitions/arrayValue"
            }
          ]
        },
        "gridDashOffset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "gridOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "gridWidth": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "labels": {
          "type": "boolean"
        },
        "labelAlign": {
          "oneOf": [
            {
              "enum": [
                "left",
                "right",
                "center"
              ]
            },
            {
              "$ref": "#/definitions/alignValue"
            }
          ]
        },
        "labelBaseline": {
          "oneOf": [
            {
              "enum": [
                "top",
                "middle",
                "bottom",
                "alphabetic",
                "line-top",
                "line-bottom"
              ]
            },
            {
              "$ref": "#/definitions/baselineValue"
            }
          ]
        },
        "labelBound": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "labelFlush": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "labelFlushOffset": {
          "$ref": "#/definitions/numberOrSignal"
        },
        "labelOverlap": {
          "$ref": "#/definitions/labelOverlap"
        },
        "labelAngle": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "labelColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/colorValue"
            }
          ]
        },
        "labelFont": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/stringValue"
            }
          ]
        },
        "labelFontSize": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "labelFontWeight": {
          "oneOf": [
            {
              "enum": [
                null,
                "normal",
                "bold",
                "lighter",
                "bolder",
                "100",
                "200",
                "300",
                "400",
                "500",
                "600",
                "700",
                "800",
                "900",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            {
              "$ref": "#/definitions/fontWeightValue"
            }
          ]
        },
        "labelFontStyle": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/stringValue"
            }
          ]
        },
        "labelLimit": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "labelLineHeight": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "labelOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "labelOffset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "labelPadding": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "labelSeparation": {
          "$ref": "#/definitions/numberOrSignal"
        },
        "encode": {
          "type": "object",
          "properties": {
            "axis": {
              "$ref": "#/definitions/guideEncode"
            },
            "ticks": {
              "$ref": "#/definitions/guideEncode"
            },
            "labels": {
              "$ref": "#/definitions/guideEncode"
            },
            "title": {
              "$ref": "#/definitions/guideEncode"
            },
            "grid": {
              "$ref": "#/definitions/guideEncode"
            },
            "domain": {
              "$ref": "#/definitions/guideEncode"
            }
          },
          "additionalProperties": false
        }
      },
      "required": [
        "orient",
        "scale"
      ],
      "additionalProperties": false
    },
    "labelOverlap": {
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "enum": [
            "parity",
            "greedy"
          ]
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "tickBand": {
      "oneOf": [
        {
          "enum": [
            "center",
            "extent"
          ]
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "tickCount": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "enum": [
            "millisecond",
            "second",
            "minute",
            "hour",
            "day",
            "week",
            "month",
            "year"
          ]
        },
        {
          "type": "object",
          "properties": {
            "interval": {
              "oneOf": [
                {
                  "enum": [
                    "millisecond",
                    "second",
                    "minute",
                    "hour",
                    "day",
                    "week",
                    "month",
                    "year"
                  ]
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "step": {
              "$ref": "#/definitions/numberOrSignal"
            }
          },
          "required": [
            "interval"
          ],
          "additionalProperties": false
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "background": {
      "$ref": "#/definitions/stringOrSignal"
    },
    "bind": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "input": {
              "enum": [
                "checkbox"
              ]
            },
            "element": {
              "$ref": "#/definitions/element"
            },
            "debounce": {
              "type": "number"
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "input"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "input": {
              "enum": [
                "radio",
                "select"
              ]
            },
            "element": {
              "$ref": "#/definitions/element"
            },
            "options": {
              "type": "array"
            },
            "labels": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "debounce": {
              "type": "number"
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "input",
            "options"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "input": {
              "enum": [
                "range"
              ]
            },
            "element": {
              "$ref": "#/definitions/element"
            },
            "min": {
              "type": "number"
            },
            "max": {
              "type": "number"
            },
            "step": {
              "type": "number"
            },
            "debounce": {
              "type": "number"
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "input"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "input": {
              "not": {
                "enum": [
                  "checkbox",
                  "radio",
                  "range",
                  "select"
                ]
              }
            },
            "element": {
              "$ref": "#/definitions/element"
            },
            "debounce": {
              "type": "number"
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "input"
          ],
          "additionalProperties": true
        },
        {
          "type": "object",
          "properties": {
            "element": {
              "$ref": "#/definitions/element"
            },
            "event": {
              "type": "string"
            },
            "debounce": {
              "type": "number"
            }
          },
          "required": [
            "element"
          ],
          "additionalProperties": false
        }
      ]
    },
    "element": {
      "type": "string"
    },
    "data": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "transform": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/transform"
              }
            },
            "on": {
              "$ref": "#/definitions/onTrigger"
            }
          },
          "required": [
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "source": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "minItems": 1
                }
              ]
            },
            "name": {
              "type": "string"
            },
            "transform": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/transform"
              }
            },
            "on": {
              "$ref": "#/definitions/onTrigger"
            }
          },
          "required": [
            "source",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "url": {
              "$ref": "#/definitions/stringOrSignal"
            },
            "format": {
              "oneOf": [
                {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "$ref": "#/definitions/stringOrSignal"
                        },
                        "parse": {
                          "oneOf": [
                            {
                              "enum": [
                                "auto"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": {
                                "oneOf": [
                                  {
                                    "enum": [
                                      "boolean",
                                      "number",
                                      "date",
                                      "string"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(date|utc):.*$"
                                  }
                                ]
                              }
                            },
                            {
                              "$ref": "#/definitions/signalRef"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "enum": [
                            "json"
                          ]
                        },
                        "parse": {
                          "oneOf": [
                            {
                              "enum": [
                                "auto"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": {
                                "oneOf": [
                                  {
                                    "enum": [
                                      "boolean",
                                      "number",
                                      "date",
                                      "string"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(date|utc):.*$"
                                  }
                                ]
                              }
                            },
                            {
                              "$ref": "#/definitions/signalRef"
                            }
                          ]
                        },
                        "property": {
                          "$ref": "#/definitions/stringOrSignal"
                        },
                        "copy": {
                          "$ref": "#/definitions/booleanOrSignal"
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "enum": [
                            "csv",
                            "tsv"
                          ]
                        },
                        "header": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "parse": {
                          "oneOf": [
                            {
                              "enum": [
                                "auto"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": {
                                "oneOf": [
                                  {
                                    "enum": [
                                      "boolean",
                                      "number",
                                      "date",
                                      "string"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(date|utc):.*$"
                                  }
                                ]
                              }
                            },
                            {
                              "$ref": "#/definitions/signalRef"
                            }
                          ]
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "enum": [
                            "dsv"
                          ]
                        },
                        "delimiter": {
                          "type": "string"
                        },
                        "header": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "parse": {
                          "oneOf": [
                            {
                              "enum": [
                                "auto"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": {
                                "oneOf": [
                                  {
                                    "enum": [
                                      "boolean",
                                      "number",
                                      "date",
                                      "string"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(date|utc):.*$"
                                  }
                                ]
                              }
                            },
                            {
                              "$ref": "#/definitions/signalRef"
                            }
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "delimiter"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "enum": [
                                "topojson"
                              ]
                            },
                            "feature": {
                              "$ref": "#/definitions/stringOrSignal"
                            },
                            "property": {
                              "$ref": "#/definitions/stringOrSignal"
                            }
                          },
                          "required": [
                            "type",
                            "feature"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "enum": [
                                "topojson"
                              ]
                            },
                            "mesh": {
                              "$ref": "#/definitions/stringOrSignal"
                            },
                            "property": {
                              "$ref": "#/definitions/stringOrSignal"
                            },
                            "filter": {
                              "enum": [
                                "interior",
                                "exterior",
                                null
                              ]
                            }
                          },
                          "required": [
                            "type",
                            "mesh"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  ]
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "async": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "name": {
              "type": "string"
            },
            "transform": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/transform"
              }
            },
            "on": {
              "$ref": "#/definitions/onTrigger"
            }
          },
          "required": [
            "url",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "values": {
              "oneOf": [
                {},
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "format": {
              "oneOf": [
                {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "$ref": "#/definitions/stringOrSignal"
                        },
                        "parse": {
                          "oneOf": [
                            {
                              "enum": [
                                "auto"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": {
                                "oneOf": [
                                  {
                                    "enum": [
                                      "boolean",
                                      "number",
                                      "date",
                                      "string"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(date|utc):.*$"
                                  }
                                ]
                              }
                            },
                            {
                              "$ref": "#/definitions/signalRef"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "enum": [
                            "json"
                          ]
                        },
                        "parse": {
                          "oneOf": [
                            {
                              "enum": [
                                "auto"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": {
                                "oneOf": [
                                  {
                                    "enum": [
                                      "boolean",
                                      "number",
                                      "date",
                                      "string"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(date|utc):.*$"
                                  }
                                ]
                              }
                            },
                            {
                              "$ref": "#/definitions/signalRef"
                            }
                          ]
                        },
                        "property": {
                          "$ref": "#/definitions/stringOrSignal"
                        },
                        "copy": {
                          "$ref": "#/definitions/booleanOrSignal"
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "enum": [
                            "csv",
                            "tsv"
                          ]
                        },
                        "header": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "parse": {
                          "oneOf": [
                            {
                              "enum": [
                                "auto"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": {
                                "oneOf": [
                                  {
                                    "enum": [
                                      "boolean",
                                      "number",
                                      "date",
                                      "string"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(date|utc):.*$"
                                  }
                                ]
                              }
                            },
                            {
                              "$ref": "#/definitions/signalRef"
                            }
                          ]
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "enum": [
                            "dsv"
                          ]
                        },
                        "delimiter": {
                          "type": "string"
                        },
                        "header": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "parse": {
                          "oneOf": [
                            {
                              "enum": [
                                "auto"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": {
                                "oneOf": [
                                  {
                                    "enum": [
                                      "boolean",
                                      "number",
                                      "date",
                                      "string"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(date|utc):.*$"
                                  }
                                ]
                              }
                            },
                            {
                              "$ref": "#/definitions/signalRef"
                            }
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "delimiter"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "enum": [
                                "topojson"
                              ]
                            },
                            "feature": {
                              "$ref": "#/definitions/stringOrSignal"
                            },
                            "property": {
                              "$ref": "#/definitions/stringOrSignal"
                            }
                          },
                          "required": [
                            "type",
                            "feature"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "enum": [
                                "topojson"
                              ]
                            },
                            "mesh": {
                              "$ref": "#/definitions/stringOrSignal"
                            },
                            "property": {
                              "$ref": "#/definitions/stringOrSignal"
                            },
                            "filter": {
                              "enum": [
                                "interior",
                                "exterior",
                                null
                              ]
                            }
                          },
                          "required": [
                            "type",
                            "mesh"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  ]
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "async": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "name": {
              "type": "string"
            },
            "transform": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/transform"
              }
            },
            "on": {
              "$ref": "#/definitions/onTrigger"
            }
          },
          "required": [
            "values",
            "name"
          ],
          "additionalProperties": false
        }
      ]
    },
    "paramField": {
      "type": "object",
      "properties": {
        "field": {
          "type": "string"
        },
        "as": {
          "type": "string"
        }
      },
      "required": [
        "field"
      ],
      "additionalProperties": false
    },
    "rule": {
      "type": "object",
      "properties": {
        "test": {
          "type": "string"
        }
      }
    },
    "encodeEntry": {
      "type": "object",
      "properties": {
        "x": {
          "$ref": "#/definitions/numberValue"
        },
        "x2": {
          "$ref": "#/definitions/numberValue"
        },
        "xc": {
          "$ref": "#/definitions/numberValue"
        },
        "width": {
          "$ref": "#/definitions/numberValue"
        },
        "y": {
          "$ref": "#/definitions/numberValue"
        },
        "y2": {
          "$ref": "#/definitions/numberValue"
        },
        "yc": {
          "$ref": "#/definitions/numberValue"
        },
        "height": {
          "$ref": "#/definitions/numberValue"
        },
        "opacity": {
          "$ref": "#/definitions/numberValue"
        },
        "fill": {
          "$ref": "#/definitions/colorValue"
        },
        "fillOpacity": {
          "$ref": "#/definitions/numberValue"
        },
        "stroke": {
          "$ref": "#/definitions/colorValue"
        },
        "strokeOpacity": {
          "$ref": "#/definitions/numberValue"
        },
        "strokeWidth": {
          "$ref": "#/definitions/numberValue"
        },
        "strokeCap": {
          "$ref": "#/definitions/strokeCapValue"
        },
        "strokeDash": {
          "$ref": "#/definitions/arrayValue"
        },
        "strokeDashOffset": {
          "$ref": "#/definitions/numberValue"
        },
        "strokeJoin": {
          "$ref": "#/definitions/strokeJoinValue"
        },
        "strokeMiterLimit": {
          "$ref": "#/definitions/numberValue"
        },
        "blend": {
          "$ref": "#/definitions/blendValue"
        },
        "cursor": {
          "$ref": "#/definitions/stringValue"
        },
        "tooltip": {
          "$ref": "#/definitions/anyValue"
        },
        "zindex": {
          "$ref": "#/definitions/numberValue"
        },
        "description": {
          "$ref": "#/definitions/stringValue"
        },
        "aria": {
          "$ref": "#/definitions/booleanValue"
        },
        "ariaRole": {
          "$ref": "#/definitions/stringValue"
        },
        "ariaRoleDescription": {
          "$ref": "#/definitions/stringValue"
        },
        "clip": {
          "$ref": "#/definitions/booleanValue"
        },
        "strokeForeground": {
          "$ref": "#/definitions/booleanValue"
        },
        "strokeOffset": {
          "$ref": "#/definitions/numberValue"
        },
        "cornerRadius": {
          "$ref": "#/definitions/numberValue"
        },
        "cornerRadiusTopLeft": {
          "$ref": "#/definitions/numberValue"
        },
        "cornerRadiusTopRight": {
          "$ref": "#/definitions/numberValue"
        },
        "cornerRadiusBottomRight": {
          "$ref": "#/definitions/numberValue"
        },
        "cornerRadiusBottomLeft": {
          "$ref": "#/definitions/numberValue"
        },
        "angle": {
          "$ref": "#/definitions/numberValue"
        },
        "size": {
          "$ref": "#/definitions/numberValue"
        },
        "shape": {
          "$ref": "#/definitions/stringValue"
        },
        "path": {
          "$ref": "#/definitions/stringValue"
        },
        "scaleX": {
          "$ref": "#/definitions/numberValue"
        },
        "scaleY": {
          "$ref": "#/definitions/numberValue"
        },
        "innerRadius": {
          "$ref": "#/definitions/numberValue"
        },
        "outerRadius": {
          "$ref": "#/definitions/numberValue"
        },
        "startAngle": {
          "$ref": "#/definitions/numberValue"
        },
        "endAngle": {
          "$ref": "#/definitions/numberValue"
        },
        "padAngle": {
          "$ref": "#/definitions/numberValue"
        },
        "interpolate": {
          "$ref": "#/definitions/stringValue"
        },
        "tension": {
          "$ref": "#/definitions/numberValue"
        },
        "orient": {
          "$ref": "#/definitions/directionValue"
        },
        "defined": {
          "$ref": "#/definitions/booleanValue"
        },
        "url": {
          "$ref": "#/definitions/stringValue"
        },
        "align": {
          "$ref": "#/definitions/alignValue"
        },
        "baseline": {
          "$ref": "#/definitions/baselineValue"
        },
        "aspect": {
          "$ref": "#/definitions/booleanValue"
        },
        "smooth": {
          "$ref": "#/definitions/booleanValue"
        },
        "text": {
          "$ref": "#/definitions/textValue"
        },
        "dir": {
          "$ref": "#/definitions/stringValue"
        },
        "ellipsis": {
          "$ref": "#/definitions/stringValue"
        },
        "limit": {
          "$ref": "#/definitions/numberValue"
        },
        "lineBreak": {
          "$ref": "#/definitions/stringValue"
        },
        "lineHeight": {
          "$ref": "#/definitions/numberValue"
        },
        "dx": {
          "$ref": "#/definitions/numberValue"
        },
        "dy": {
          "$ref": "#/definitions/numberValue"
        },
        "radius": {
          "$ref": "#/definitions/numberValue"
        },
        "theta": {
          "$ref": "#/definitions/numberValue"
        },
        "font": {
          "$ref": "#/definitions/stringValue"
        },
        "fontSize": {
          "$ref": "#/definitions/numberValue"
        },
        "fontWeight": {
          "$ref": "#/definitions/fontWeightValue"
        },
        "fontStyle": {
          "$ref": "#/definitions/stringValue"
        }
      },
      "additionalProperties": true
    },
    "encode": {
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^.+$": {
          "$ref": "#/definitions/encodeEntry"
        }
      }
    },
    "field": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/definitions/signalRef"
        },
        {
          "type": "object",
          "properties": {
            "datum": {
              "$ref": "#/definitions/field"
            }
          },
          "required": [
            "datum"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "group": {
              "$ref": "#/definitions/field"
            },
            "level": {
              "type": "number"
            }
          },
          "required": [
            "group"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "parent": {
              "$ref": "#/definitions/field"
            },
            "level": {
              "type": "number"
            }
          },
          "required": [
            "parent"
          ],
          "additionalProperties": false
        }
      ]
    },
    "stringModifiers": {
      "type": "object",
      "properties": {
        "scale": {
          "$ref": "#/definitions/field"
        }
      }
    },
    "numberModifiers": {
      "type": "object",
      "properties": {
        "exponent": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "mult": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "offset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/numberValue"
            }
          ]
        },
        "round": {
          "type": "boolean",
          "default": false
        },
        "scale": {
          "$ref": "#/definitions/field"
        },
        "band": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "extra": {
          "type": "boolean"
        }
      }
    },
    "anyValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {}
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {}
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "blendValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "enum": [
                                  null,
                                  "multiply",
                                  "screen",
                                  "overlay",
                                  "darken",
                                  "lighten",
                                  "color-dodge",
                                  "color-burn",
                                  "hard-light",
                                  "soft-light",
                                  "difference",
                                  "exclusion",
                                  "hue",
                                  "saturation",
                                  "color",
                                  "luminosity"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "enum": [
                            null,
                            "multiply",
                            "screen",
                            "overlay",
                            "darken",
                            "lighten",
                            "color-dodge",
                            "color-burn",
                            "hard-light",
                            "soft-light",
                            "difference",
                            "exclusion",
                            "hue",
                            "saturation",
                            "color",
                            "luminosity"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "numberValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/numberModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/numberModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "stringValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "textValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "oneOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "oneOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "booleanValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "arrayValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "array"
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "array"
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "fontWeightValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "enum": [
                                  null,
                                  "normal",
                                  "bold",
                                  "lighter",
                                  "bolder",
                                  "100",
                                  "200",
                                  "300",
                                  "400",
                                  "500",
                                  "600",
                                  "700",
                                  "800",
                                  "900",
                                  100,
                                  200,
                                  300,
                                  400,
                                  500,
                                  600,
                                  700,
                                  800,
                                  900
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "enum": [
                            null,
                            "normal",
                            "bold",
                            "lighter",
                            "bolder",
                            "100",
                            "200",
                            "300",
                            "400",
                            "500",
                            "600",
                            "700",
                            "800",
                            "900",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "anchorValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "enum": [
                                  "start",
                                  "middle",
                                  "end"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "enum": [
                            "start",
                            "middle",
                            "end"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "alignValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "enum": [
                                  "left",
                                  "right",
                                  "center"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "enum": [
                            "left",
                            "right",
                            "center"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "baselineValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "enum": [
                                  "top",
                                  "middle",
                                  "bottom",
                                  "alphabetic"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "enum": [
                            "top",
                            "middle",
                            "bottom",
                            "alphabetic"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "directionValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "enum": [
                                  "horizontal",
                                  "vertical"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "enum": [
                            "horizontal",
                            "vertical"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "orientValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "enum": [
                                  "left",
                                  "right",
                                  "top",
                                  "bottom"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "enum": [
                            "left",
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "strokeCapValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "enum": [
                                  "butt",
                                  "round",
                                  "square"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "enum": [
                            "butt",
                            "round",
                            "square"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "strokeJoinValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "allOf": [
                  {
                    "$ref": "#/definitions/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/definitions/signalRef"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "value": {
                                "enum": [
                                  "miter",
                                  "round",
                                  "bevel"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "field": {
                                "$ref": "#/definitions/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "oneOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "enum": [
                            "miter",
                            "round",
                            "bevel"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "baseColorValue": {
      "oneOf": [
        {
          "allOf": [
            {
              "$ref": "#/definitions/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/signalRef"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "value": {
                          "oneOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "field": {
                          "$ref": "#/definitions/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "range": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        },
        {
          "type": "object",
          "properties": {
            "value": {
              "$ref": "#/definitions/linearGradient"
            }
          },
          "required": [
            "value"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "value": {
              "$ref": "#/definitions/radialGradient"
            }
          },
          "required": [
            "value"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "gradient": {
              "$ref": "#/definitions/field"
            },
            "start": {
              "type": "array",
              "items": {
                "type": "number"
              },
              "minItems": 2,
              "maxItems": 2
            },
            "stop": {
              "type": "array",
              "items": {
                "type": "number"
              },
              "minItems": 2,
              "maxItems": 2
            },
            "count": {
              "type": "number"
            }
          },
          "required": [
            "gradient"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/definitions/colorRGB"
                },
                {
                  "$ref": "#/definitions/colorHSL"
                },
                {
                  "$ref": "#/definitions/colorLAB"
                },
                {
                  "$ref": "#/definitions/colorHCL"
                }
              ]
            }
          },
          "required": [
            "color"
          ],
          "additionalProperties": false
        }
      ]
    },
    "colorRGB": {
      "type": "object",
      "properties": {
        "r": {
          "$ref": "#/definitions/numberValue"
        },
        "g": {
          "$ref": "#/definitions/numberValue"
        },
        "b": {
          "$ref": "#/definitions/numberValue"
        }
      },
      "required": [
        "r",
        "g",
        "b"
      ]
    },
    "colorHSL": {
      "type": "object",
      "properties": {
        "h": {
          "$ref": "#/definitions/numberValue"
        },
        "s": {
          "$ref": "#/definitions/numberValue"
        },
        "l": {
          "$ref": "#/definitions/numberValue"
        }
      },
      "required": [
        "h",
        "s",
        "l"
      ]
    },
    "colorLAB": {
      "type": "object",
      "properties": {
        "l": {
          "$ref": "#/definitions/numberValue"
        },
        "a": {
          "$ref": "#/definitions/numberValue"
        },
        "b": {
          "$ref": "#/definitions/numberValue"
        }
      },
      "required": [
        "l",
        "a",
        "b"
      ]
    },
    "colorHCL": {
      "type": "object",
      "properties": {
        "h": {
          "$ref": "#/definitions/numberValue"
        },
        "c": {
          "$ref": "#/definitions/numberValue"
        },
        "l": {
          "$ref": "#/definitions/numberValue"
        }
      },
      "required": [
        "h",
        "c",
        "l"
      ]
    },
    "colorValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/definitions/rule"
              },
              {
                "$ref": "#/definitions/baseColorValue"
              }
            ]
          }
        },
        {
          "$ref": "#/definitions/baseColorValue"
        }
      ]
    },
    "gradientStops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "number"
          },
          "color": {
            "type": "string"
          }
        },
        "required": [
          "offset",
          "color"
        ],
        "additionalProperties": false
      }
    },
    "linearGradient": {
      "type": "object",
      "properties": {
        "gradient": {
          "enum": [
            "linear"
          ]
        },
        "id": {
          "type": "string"
        },
        "x1": {
          "type": "number"
        },
        "y1": {
          "type": "number"
        },
        "x2": {
          "type": "number"
        },
        "y2": {
          "type": "number"
        },
        "stops": {
          "$ref": "#/definitions/gradientStops"
        }
      },
      "required": [
        "gradient",
        "stops"
      ],
      "additionalProperties": false
    },
    "radialGradient": {
      "type": "object",
      "properties": {
        "gradient": {
          "enum": [
            "radial"
          ]
        },
        "id": {
          "type": "string"
        },
        "x1": {
          "type": "number"
        },
        "y1": {
          "type": "number"
        },
        "r1": {
          "type": "number"
        },
        "x2": {
          "type": "number"
        },
        "y2": {
          "type": "number"
        },
        "r2": {
          "type": "number"
        },
        "stops": {
          "$ref": "#/definitions/gradientStops"
        }
      },
      "required": [
        "gradient",
        "stops"
      ],
      "additionalProperties": false
    },
    "expr": {
      "type": "object",
      "properties": {
        "expr": {
          "type": "string"
        },
        "as": {
          "type": "string"
        }
      },
      "required": [
        "expr"
      ]
    },
    "exprString": {
      "type": "string"
    },
    "layout": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "align": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "enum": [
                        "all",
                        "each",
                        "none"
                      ]
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "oneOf": [
                        {
                          "enum": [
                            "all",
                            "each",
                            "none"
                          ]
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "column": {
                      "oneOf": [
                        {
                          "enum": [
                            "all",
                            "each",
                            "none"
                          ]
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "bounds": {
              "oneOf": [
                {
                  "enum": [
                    "full",
                    "flush"
                  ]
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "center": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "$ref": "#/definitions/signalRef"
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "$ref": "#/definitions/booleanOrSignal"
                    },
                    "column": {
                      "$ref": "#/definitions/booleanOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "columns": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "padding": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/signalRef"
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "column": {
                      "$ref": "#/definitions/numberOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "offset": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/signalRef"
                },
                {
                  "type": "object",
                  "properties": {
                    "rowHeader": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "rowFooter": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "rowTitle": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "columnHeader": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "columnFooter": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "columnTitle": {
                      "$ref": "#/definitions/numberOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "headerBand": {
              "oneOf": [
                {
                  "$ref": "#/definitions/numberOrSignal"
                },
                {
                  "type": "null"
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "column": {
                      "$ref": "#/definitions/numberOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "footerBand": {
              "oneOf": [
                {
                  "$ref": "#/definitions/numberOrSignal"
                },
                {
                  "type": "null"
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "column": {
                      "$ref": "#/definitions/numberOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "titleBand": {
              "oneOf": [
                {
                  "$ref": "#/definitions/numberOrSignal"
                },
                {
                  "type": "null"
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "column": {
                      "$ref": "#/definitions/numberOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "titleAnchor": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "enum": [
                        "start",
                        "end"
                      ]
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "oneOf": [
                        {
                          "enum": [
                            "start",
                            "end"
                          ]
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "column": {
                      "oneOf": [
                        {
                          "enum": [
                            "start",
                            "end"
                          ]
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "guideEncode": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "interactive": {
          "type": "boolean",
          "default": false
        },
        "style": {
          "$ref": "#/definitions/style"
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^(?!interactive|name|style).+$": {
          "$ref": "#/definitions/encodeEntry"
        }
      }
    },
    "legend": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "size": {
              "type": "string"
            },
            "shape": {
              "type": "string"
            },
            "fill": {
              "type": "string"
            },
            "stroke": {
              "type": "string"
            },
            "opacity": {
              "type": "string"
            },
            "strokeDash": {
              "type": "string"
            },
            "strokeWidth": {
              "type": "string"
            },
            "type": {
              "enum": [
                "gradient",
                "symbol"
              ]
            },
            "direction": {
              "enum": [
                "vertical",
                "horizontal"
              ]
            },
            "orient": {
              "oneOf": [
                {
                  "enum": [
                    "none",
                    "left",
                    "right",
                    "top",
                    "bottom",
                    "top-left",
                    "top-right",
                    "bottom-left",
                    "bottom-right"
                  ],
                  "default": "right"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "tickCount": {
              "$ref": "#/definitions/tickCount"
            },
            "tickMinStep": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "symbolLimit": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "values": {
              "$ref": "#/definitions/arrayOrSignal"
            },
            "zindex": {
              "type": "number"
            },
            "aria": {
              "type": "boolean"
            },
            "description": {
              "type": "string"
            },
            "cornerRadius": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "fillColor": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/colorValue"
                }
              ]
            },
            "offset": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "padding": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "strokeColor": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/colorValue"
                }
              ]
            },
            "legendX": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "legendY": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "title": {
              "$ref": "#/definitions/textOrSignal"
            },
            "titleAlign": {
              "oneOf": [
                {
                  "enum": [
                    "left",
                    "right",
                    "center"
                  ]
                },
                {
                  "$ref": "#/definitions/alignValue"
                }
              ]
            },
            "titleAnchor": {
              "oneOf": [
                {
                  "enum": [
                    null,
                    "start",
                    "middle",
                    "end"
                  ]
                },
                {
                  "$ref": "#/definitions/anchorValue"
                }
              ]
            },
            "titleBaseline": {
              "oneOf": [
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom",
                    "alphabetic",
                    "line-top",
                    "line-bottom"
                  ]
                },
                {
                  "$ref": "#/definitions/baselineValue"
                }
              ]
            },
            "titleColor": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/colorValue"
                }
              ]
            },
            "titleFont": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/stringValue"
                }
              ]
            },
            "titleFontSize": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "titleFontStyle": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/stringValue"
                }
              ]
            },
            "titleFontWeight": {
              "oneOf": [
                {
                  "enum": [
                    null,
                    "normal",
                    "bold",
                    "lighter",
                    "bolder",
                    "100",
                    "200",
                    "300",
                    "400",
                    "500",
                    "600",
                    "700",
                    "800",
                    "900",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                {
                  "$ref": "#/definitions/fontWeightValue"
                }
              ]
            },
            "titleLimit": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "titleLineHeight": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "titleOpacity": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "titleOrient": {
              "oneOf": [
                {
                  "enum": [
                    "left",
                    "right",
                    "top",
                    "bottom"
                  ]
                },
                {
                  "$ref": "#/definitions/orientValue"
                }
              ]
            },
            "titlePadding": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "gradientLength": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "gradientOpacity": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "gradientStrokeColor": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/colorValue"
                }
              ]
            },
            "gradientStrokeWidth": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "gradientThickness": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "clipHeight": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "columns": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "columnPadding": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "rowPadding": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "gridAlign": {
              "oneOf": [
                {
                  "enum": [
                    "all",
                    "each",
                    "none"
                  ]
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "symbolDash": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "number"
                  }
                },
                {
                  "$ref": "#/definitions/arrayValue"
                }
              ]
            },
            "symbolDashOffset": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "symbolFillColor": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/colorValue"
                }
              ]
            },
            "symbolOffset": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "symbolOpacity": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "symbolSize": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "symbolStrokeColor": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/colorValue"
                }
              ]
            },
            "symbolStrokeWidth": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "symbolType": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/stringValue"
                }
              ]
            },
            "format": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "object",
                  "properties": {
                    "year": {
                      "type": "string"
                    },
                    "quarter": {
                      "type": "string"
                    },
                    "month": {
                      "type": "string"
                    },
                    "date": {
                      "type": "string"
                    },
                    "week": {
                      "type": "string"
                    },
                    "day": {
                      "type": "string"
                    },
                    "hours": {
                      "type": "string"
                    },
                    "minutes": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "string"
                    },
                    "milliseconds": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "formatType": {
              "oneOf": [
                {
                  "enum": [
                    "number",
                    "time",
                    "utc"
                  ]
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "labelAlign": {
              "oneOf": [
                {
                  "enum": [
                    "left",
                    "right",
                    "center"
                  ]
                },
                {
                  "$ref": "#/definitions/alignValue"
                }
              ]
            },
            "labelBaseline": {
              "oneOf": [
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom",
                    "alphabetic",
                    "line-top",
                    "line-bottom"
                  ]
                },
                {
                  "$ref": "#/definitions/baselineValue"
                }
              ]
            },
            "labelColor": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/colorValue"
                }
              ]
            },
            "labelFont": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/stringValue"
                }
              ]
            },
            "labelFontSize": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "labelFontStyle": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/stringValue"
                }
              ]
            },
            "labelFontWeight": {
              "oneOf": [
                {
                  "enum": [
                    null,
                    "normal",
                    "bold",
                    "lighter",
                    "bolder",
                    "100",
                    "200",
                    "300",
                    "400",
                    "500",
                    "600",
                    "700",
                    "800",
                    "900",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                {
                  "$ref": "#/definitions/fontWeightValue"
                }
              ]
            },
            "labelLimit": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "labelOffset": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "labelOpacity": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "labelOverlap": {
              "$ref": "#/definitions/labelOverlap"
            },
            "labelSeparation": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "encode": {
              "type": "object",
              "properties": {
                "title": {
                  "$ref": "#/definitions/guideEncode"
                },
                "labels": {
                  "$ref": "#/definitions/guideEncode"
                },
                "legend": {
                  "$ref": "#/definitions/guideEncode"
                },
                "entries": {
                  "$ref": "#/definitions/guideEncode"
                },
                "symbols": {
                  "$ref": "#/definitions/guideEncode"
                },
                "gradient": {
                  "$ref": "#/definitions/guideEncode"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "size"
              ]
            },
            {
              "type": "object",
              "required": [
                "shape"
              ]
            },
            {
              "type": "object",
              "required": [
                "fill"
              ]
            },
            {
              "type": "object",
              "required": [
                "stroke"
              ]
            },
            {
              "type": "object",
              "required": [
                "opacity"
              ]
            },
            {
              "type": "object",
              "required": [
                "strokeDash"
              ]
            },
            {
              "type": "object",
              "required": [
                "strokeWidth"
              ]
            }
          ]
        }
      ]
    },
    "compare": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "field": {
              "oneOf": [
                {
                  "$ref": "#/definitions/scaleField"
                },
                {
                  "$ref": "#/definitions/expr"
                }
              ]
            },
            "order": {
              "$ref": "#/definitions/sortOrder"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            "order": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/sortOrder"
              }
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "from": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "facet": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string"
        },
        "facet": {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "data": {
                  "type": "string"
                },
                "field": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "data",
                "field"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "data": {
                  "type": "string"
                },
                "groupby": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  ]
                },
                "aggregate": {
                  "type": "object",
                  "properties": {
                    "cross": {
                      "type": "boolean"
                    },
                    "fields": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "ops": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "as": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "additionalProperties": false
                }
              },
              "required": [
                "name",
                "data",
                "groupby"
              ],
              "additionalProperties": false
            }
          ]
        }
      },
      "required": [
        "facet"
      ],
      "additionalProperties": false
    },
    "mark": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/marktype"
        },
        "role": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "aria": {
          "type": "boolean"
        },
        "style": {
          "$ref": "#/definitions/style"
        },
        "key": {
          "type": "string"
        },
        "clip": {
          "$ref": "#/definitions/markclip"
        },
        "sort": {
          "$ref": "#/definitions/compare"
        },
        "interactive": {
          "$ref": "#/definitions/booleanOrSignal"
        },
        "encode": {
          "$ref": "#/definitions/encode"
        },
        "transform": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/transformMark"
          }
        },
        "on": {
          "$ref": "#/definitions/onMarkTrigger"
        }
      },
      "required": [
        "type"
      ]
    },
    "markclip": {
      "oneOf": [
        {
          "$ref": "#/definitions/booleanOrSignal"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "$ref": "#/definitions/stringOrSignal"
            }
          },
          "required": [
            "path"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "sphere": {
              "$ref": "#/definitions/stringOrSignal"
            }
          },
          "required": [
            "sphere"
          ],
          "additionalProperties": false
        }
      ]
    },
    "markGroup": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "group"
              ]
            },
            "from": {
              "oneOf": [
                {
                  "$ref": "#/definitions/from"
                },
                {
                  "$ref": "#/definitions/facet"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        },
        {
          "$ref": "#/definitions/mark"
        },
        {
          "$ref": "#/definitions/scope"
        }
      ]
    },
    "markVisual": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "not": {
                "enum": [
                  "group"
                ]
              }
            },
            "from": {
              "$ref": "#/definitions/from"
            }
          }
        },
        {
          "$ref": "#/definitions/mark"
        }
      ]
    },
    "style": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "marktype": {
      "type": "string"
    },
    "listener": {
      "oneOf": [
        {
          "$ref": "#/definitions/signalRef"
        },
        {
          "type": "object",
          "properties": {
            "scale": {
              "type": "string"
            }
          },
          "required": [
            "scale"
          ]
        },
        {
          "$ref": "#/definitions/stream"
        }
      ]
    },
    "onEvents": {
      "type": "array",
      "items": {
        "allOf": [
          {
            "type": "object",
            "properties": {
              "events": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/selector"
                  },
                  {
                    "$ref": "#/definitions/listener"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/definitions/listener"
                    },
                    "minItems": 1
                  }
                ]
              },
              "force": {
                "type": "boolean"
              }
            },
            "required": [
              "events"
            ]
          },
          {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "encode": {
                    "type": "string"
                  }
                },
                "required": [
                  "encode"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "update": {
                    "oneOf": [
                      {
                        "$ref": "#/definitions/exprString"
                      },
                      {
                        "$ref": "#/definitions/expr"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "value": {}
                        },
                        "required": [
                          "value"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "update"
                ]
              }
            ]
          }
        ]
      }
    },
    "onTrigger": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "trigger": {
            "$ref": "#/definitions/exprString"
          },
          "insert": {
            "$ref": "#/definitions/exprString"
          },
          "remove": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "$ref": "#/definitions/exprString"
              }
            ]
          },
          "toggle": {
            "$ref": "#/definitions/exprString"
          },
          "modify": {
            "$ref": "#/definitions/exprString"
          },
          "values": {
            "$ref": "#/definitions/exprString"
          }
        },
        "required": [
          "trigger"
        ],
        "additionalProperties": false
      }
    },
    "onMarkTrigger": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "trigger": {
            "$ref": "#/definitions/exprString"
          },
          "modify": {
            "$ref": "#/definitions/exprString"
          },
          "values": {
            "$ref": "#/definitions/exprString"
          }
        },
        "required": [
          "trigger"
        ],
        "additionalProperties": false
      }
    },
    "padding": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "object",
          "properties": {
            "top": {
              "type": "number"
            },
            "bottom": {
              "type": "number"
            },
            "left": {
              "type": "number"
            },
            "right": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "projection": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/stringOrSignal"
        },
        "clipAngle": {
          "$ref": "#/definitions/numberOrSignal"
        },
        "clipExtent": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "minItems": 2,
                    "maxItems": 2
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "minItems": 2,
              "maxItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "scale": {
          "$ref": "#/definitions/numberOrSignal"
        },
        "translate": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/numberOrSignal"
              },
              "minItems": 2,
              "maxItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "center": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/numberOrSignal"
              },
              "minItems": 2,
              "maxItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "rotate": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/numberOrSignal"
              },
              "minItems": 2,
              "maxItems": 3
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "parallels": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/numberOrSignal"
              },
              "minItems": 2,
              "maxItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "precision": {
          "$ref": "#/definitions/numberOrSignal"
        },
        "pointRadius": {
          "$ref": "#/definitions/numberOrSignal"
        },
        "fit": {
          "oneOf": [
            {
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "minItems": 2,
                    "maxItems": 2
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "minItems": 2,
              "maxItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/numberOrSignal"
              },
              "minItems": 2,
              "maxItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        }
      },
      "required": [
        "name"
      ],
      "additionalProperties": true
    },
    "scale": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "identity"
              ]
            },
            "nice": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "ordinal"
              ]
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/definitions/signalRef"
                              }
                            ]
                          }
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "count": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "extent": {
                      "oneOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/definitions/numberOrSignal"
                          },
                          "minItems": 2,
                          "maxItems": 2
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "required": [
                    "scheme"
                  ],
                  "additionalProperties": false
                },
                {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "string"
                        },
                        "field": {
                          "$ref": "#/definitions/stringOrSignal"
                        },
                        "sort": {
                          "oneOf": [
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "field": {
                                  "$ref": "#/definitions/stringOrSignal"
                                },
                                "op": {
                                  "$ref": "#/definitions/stringOrSignal"
                                },
                                "order": {
                                  "$ref": "#/definitions/sortOrder"
                                }
                              },
                              "additionalProperties": false
                            }
                          ]
                        }
                      },
                      "required": [
                        "data",
                        "field"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "string"
                        },
                        "fields": {
                          "type": "array",
                          "items": {
                            "$ref": "#/definitions/stringOrSignal"
                          },
                          "minItems": 1
                        },
                        "sort": {
                          "oneOf": [
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "op": {
                                  "enum": [
                                    "count"
                                  ]
                                },
                                "order": {
                                  "$ref": "#/definitions/sortOrder"
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "field": {
                                  "$ref": "#/definitions/stringOrSignal"
                                },
                                "op": {
                                  "enum": [
                                    "count",
                                    "min",
                                    "max"
                                  ]
                                },
                                "order": {
                                  "$ref": "#/definitions/sortOrder"
                                }
                              },
                              "required": [
                                "field",
                                "op"
                              ],
                              "additionalProperties": false
                            }
                          ]
                        }
                      },
                      "required": [
                        "data",
                        "fields"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "fields": {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "data": {
                                    "type": "string"
                                  },
                                  "field": {
                                    "$ref": "#/definitions/stringOrSignal"
                                  }
                                },
                                "required": [
                                  "data",
                                  "field"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "array",
                                "items": {
                                  "oneOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "boolean"
                                    }
                                  ]
                                }
                              },
                              {
                                "$ref": "#/definitions/signalRef"
                              }
                            ]
                          },
                          "minItems": 1
                        },
                        "sort": {
                          "oneOf": [
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "op": {
                                  "enum": [
                                    "count"
                                  ]
                                },
                                "order": {
                                  "$ref": "#/definitions/sortOrder"
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "field": {
                                  "$ref": "#/definitions/stringOrSignal"
                                },
                                "op": {
                                  "enum": [
                                    "count",
                                    "min",
                                    "max"
                                  ]
                                },
                                "order": {
                                  "$ref": "#/definitions/sortOrder"
                                }
                              },
                              "required": [
                                "field",
                                "op"
                              ],
                              "additionalProperties": false
                            }
                          ]
                        }
                      },
                      "required": [
                        "fields"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "interpolate": {
              "$ref": "#/definitions/scaleInterpolate"
            },
            "domainImplicit": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "band"
              ]
            },
            "paddingInner": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "step": {
                      "$ref": "#/definitions/numberOrSignal"
                    }
                  },
                  "required": [
                    "step"
                  ],
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "padding": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "paddingOuter": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "align": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "point"
              ]
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "step": {
                      "$ref": "#/definitions/numberOrSignal"
                    }
                  },
                  "required": [
                    "step"
                  ],
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "padding": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "paddingOuter": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "align": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "quantize",
                "threshold"
              ]
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/definitions/signalRef"
                              }
                            ]
                          }
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "count": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "extent": {
                      "oneOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/definitions/numberOrSignal"
                          },
                          "minItems": 2,
                          "maxItems": 2
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "required": [
                    "scheme"
                  ],
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "interpolate": {
              "$ref": "#/definitions/scaleInterpolate"
            },
            "nice": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "zero": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "quantile"
              ]
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/definitions/signalRef"
                              }
                            ]
                          }
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "count": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "extent": {
                      "oneOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/definitions/numberOrSignal"
                          },
                          "minItems": 2,
                          "maxItems": 2
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "required": [
                    "scheme"
                  ],
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "interpolate": {
              "$ref": "#/definitions/scaleInterpolate"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "bin-ordinal"
              ]
            },
            "bins": {
              "$ref": "#/definitions/scaleBins"
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/definitions/signalRef"
                              }
                            ]
                          }
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "count": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "extent": {
                      "oneOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/definitions/numberOrSignal"
                          },
                          "minItems": 2,
                          "maxItems": 2
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "required": [
                    "scheme"
                  ],
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "interpolate": {
              "$ref": "#/definitions/scaleInterpolate"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "time",
                "utc"
              ]
            },
            "nice": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "enum": [
                    "millisecond",
                    "second",
                    "minute",
                    "hour",
                    "day",
                    "week",
                    "month",
                    "year"
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "interval": {
                      "oneOf": [
                        {
                          "enum": [
                            "millisecond",
                            "second",
                            "minute",
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year"
                          ]
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "step": {
                      "$ref": "#/definitions/numberOrSignal"
                    }
                  },
                  "required": [
                    "interval"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/definitions/signalRef"
                              }
                            ]
                          }
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "count": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "extent": {
                      "oneOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/definitions/numberOrSignal"
                          },
                          "minItems": 2,
                          "maxItems": 2
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "required": [
                    "scheme"
                  ],
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "bins": {
              "$ref": "#/definitions/scaleBins"
            },
            "interpolate": {
              "$ref": "#/definitions/scaleInterpolate"
            },
            "clamp": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "padding": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "linear",
                "sqrt",
                "sequential"
              ]
            },
            "nice": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "zero": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/definitions/signalRef"
                              }
                            ]
                          }
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "count": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "extent": {
                      "oneOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/definitions/numberOrSignal"
                          },
                          "minItems": 2,
                          "maxItems": 2
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "required": [
                    "scheme"
                  ],
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "bins": {
              "$ref": "#/definitions/scaleBins"
            },
            "interpolate": {
              "$ref": "#/definitions/scaleInterpolate"
            },
            "clamp": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "padding": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "log"
              ]
            },
            "base": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "nice": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "zero": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/definitions/signalRef"
                              }
                            ]
                          }
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "count": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "extent": {
                      "oneOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/definitions/numberOrSignal"
                          },
                          "minItems": 2,
                          "maxItems": 2
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "required": [
                    "scheme"
                  ],
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "bins": {
              "$ref": "#/definitions/scaleBins"
            },
            "interpolate": {
              "$ref": "#/definitions/scaleInterpolate"
            },
            "clamp": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "padding": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "pow"
              ]
            },
            "exponent": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "nice": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "zero": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/definitions/signalRef"
                              }
                            ]
                          }
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "count": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "extent": {
                      "oneOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/definitions/numberOrSignal"
                          },
                          "minItems": 2,
                          "maxItems": 2
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "required": [
                    "scheme"
                  ],
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "bins": {
              "$ref": "#/definitions/scaleBins"
            },
            "interpolate": {
              "$ref": "#/definitions/scaleInterpolate"
            },
            "clamp": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "padding": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "symlog"
              ]
            },
            "constant": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "nice": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "zero": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "range": {
              "oneOf": [
                {
                  "enum": [
                    "width",
                    "height",
                    "symbol",
                    "category",
                    "ordinal",
                    "ramp",
                    "diverging",
                    "heatmap"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/definitions/signalRef"
                              }
                            ]
                          }
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    },
                    "count": {
                      "$ref": "#/definitions/numberOrSignal"
                    },
                    "extent": {
                      "oneOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/definitions/numberOrSignal"
                          },
                          "minItems": 2,
                          "maxItems": 2
                        },
                        {
                          "$ref": "#/definitions/signalRef"
                        }
                      ]
                    }
                  },
                  "required": [
                    "scheme"
                  ],
                  "additionalProperties": false
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "bins": {
              "$ref": "#/definitions/scaleBins"
            },
            "interpolate": {
              "$ref": "#/definitions/scaleInterpolate"
            },
            "clamp": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "padding": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "name": {
              "type": "string"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/definitions/numberOrSignal"
                        }
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/definitions/scaleData"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "reverse": {
              "$ref": "#/definitions/booleanOrSignal"
            },
            "round": {
              "$ref": "#/definitions/booleanOrSignal"
            }
          },
          "required": [
            "type",
            "name"
          ],
          "additionalProperties": false
        }
      ]
    },
    "scaleField": {
      "$ref": "#/definitions/stringOrSignal"
    },
    "sortOrder": {
      "oneOf": [
        {
          "enum": [
            "ascending",
            "descending"
          ]
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "scaleBins": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/numberOrSignal"
          }
        },
        {
          "type": "object",
          "properties": {
            "step": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "start": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "stop": {
              "$ref": "#/definitions/numberOrSignal"
            }
          },
          "required": [
            "step"
          ],
          "additionalProperties": false
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "scaleInterpolate": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/definitions/signalRef"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "$ref": "#/definitions/stringOrSignal"
            },
            "gamma": {
              "$ref": "#/definitions/numberOrSignal"
            }
          },
          "required": [
            "type"
          ],
          "additionalProperties": false
        }
      ]
    },
    "scaleData": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "string"
            },
            "field": {
              "$ref": "#/definitions/stringOrSignal"
            },
            "sort": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "object",
                  "properties": {
                    "field": {
                      "$ref": "#/definitions/stringOrSignal"
                    },
                    "op": {
                      "$ref": "#/definitions/stringOrSignal"
                    },
                    "order": {
                      "$ref": "#/definitions/sortOrder"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            }
          },
          "required": [
            "data",
            "field"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "string"
            },
            "fields": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/stringOrSignal"
              },
              "minItems": 1
            },
            "sort": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "object",
                  "properties": {
                    "op": {
                      "enum": [
                        "count"
                      ]
                    },
                    "order": {
                      "$ref": "#/definitions/sortOrder"
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "field": {
                      "$ref": "#/definitions/stringOrSignal"
                    },
                    "op": {
                      "enum": [
                        "count",
                        "min",
                        "max"
                      ]
                    },
                    "order": {
                      "$ref": "#/definitions/sortOrder"
                    }
                  },
                  "required": [
                    "field",
                    "op"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          },
          "required": [
            "data",
            "fields"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "fields": {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "data": {
                        "type": "string"
                      },
                      "field": {
                        "$ref": "#/definitions/stringOrSignal"
                      }
                    },
                    "required": [
                      "data",
                      "field"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    }
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "minItems": 1
            },
            "sort": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "object",
                  "properties": {
                    "op": {
                      "enum": [
                        "count"
                      ]
                    },
                    "order": {
                      "$ref": "#/definitions/sortOrder"
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "field": {
                      "$ref": "#/definitions/stringOrSignal"
                    },
                    "op": {
                      "enum": [
                        "count",
                        "min",
                        "max"
                      ]
                    },
                    "order": {
                      "$ref": "#/definitions/sortOrder"
                    }
                  },
                  "required": [
                    "field",
                    "op"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          },
          "required": [
            "fields"
          ],
          "additionalProperties": false
        }
      ]
    },
    "scope": {
      "type": "object",
      "properties": {
        "encode": {
          "$ref": "#/definitions/encode"
        },
        "layout": {
          "$ref": "#/definitions/layout"
        },
        "signals": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/signal"
          }
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/data"
          }
        },
        "scales": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/scale"
          }
        },
        "projections": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/projection"
          }
        },
        "axes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/axis"
          }
        },
        "legends": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/legend"
          }
        },
        "title": {
          "$ref": "#/definitions/title"
        },
        "marks": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/definitions/markGroup"
              },
              {
                "$ref": "#/definitions/markVisual"
              }
            ]
          }
        },
        "usermeta": {
          "type": "object"
        }
      }
    },
    "selector": {
      "type": "string"
    },
    "signal": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "name": {
              "$ref": "#/definitions/signalName"
            },
            "description": {
              "type": "string"
            },
            "push": {
              "enum": [
                "outer"
              ]
            },
            "on": {
              "$ref": "#/definitions/onEvents"
            }
          },
          "required": [
            "name",
            "push"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "name": {
              "$ref": "#/definitions/signalName"
            },
            "description": {
              "type": "string"
            },
            "value": {},
            "react": {
              "type": "boolean",
              "default": true
            },
            "update": {
              "$ref": "#/definitions/exprString"
            },
            "on": {
              "$ref": "#/definitions/onEvents"
            },
            "bind": {
              "$ref": "#/definitions/bind"
            }
          },
          "required": [
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "name": {
              "$ref": "#/definitions/signalName"
            },
            "description": {
              "type": "string"
            },
            "value": {},
            "init": {
              "$ref": "#/definitions/exprString"
            },
            "on": {
              "$ref": "#/definitions/onEvents"
            },
            "bind": {
              "$ref": "#/definitions/bind"
            }
          },
          "required": [
            "name",
            "init"
          ],
          "additionalProperties": false
        }
      ]
    },
    "signalName": {
      "type": "string",
      "not": {
        "enum": [
          "parent",
          "datum",
          "event",
          "item"
        ]
      }
    },
    "signalRef": {
      "type": "object",
      "properties": {
        "signal": {
          "type": "string"
        }
      },
      "required": [
        "signal"
      ]
    },
    "arrayOrSignal": {
      "oneOf": [
        {
          "type": "array"
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "booleanOrSignal": {
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "numberOrSignal": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "stringOrSignal": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "textOrSignal": {
      "oneOf": [
        {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        {
          "$ref": "#/definitions/signalRef"
        }
      ]
    },
    "stream": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "between": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/stream"
              },
              "minItems": 2,
              "maxItems": 2
            },
            "marktype": {
              "type": "string"
            },
            "markname": {
              "type": "string"
            },
            "filter": {
              "oneOf": [
                {
                  "$ref": "#/definitions/exprString"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/exprString"
                  },
                  "minItems": 1
                }
              ]
            },
            "throttle": {
              "type": "number"
            },
            "debounce": {
              "type": "number"
            },
            "consume": {
              "type": "boolean"
            }
          }
        },
        {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "source": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ]
            },
            {
              "type": "object",
              "properties": {
                "stream": {
                  "$ref": "#/definitions/stream"
                }
              },
              "required": [
                "stream"
              ]
            },
            {
              "type": "object",
              "properties": {
                "merge": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/stream"
                  },
                  "minItems": 1
                }
              },
              "required": [
                "merge"
              ]
            }
          ]
        }
      ]
    },
    "title": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "orient": {
              "oneOf": [
                {
                  "enum": [
                    "none",
                    "left",
                    "right",
                    "top",
                    "bottom"
                  ],
                  "default": "top"
                },
                {
                  "$ref": "#/definitions/signalRef"
                }
              ]
            },
            "anchor": {
              "oneOf": [
                {
                  "enum": [
                    null,
                    "start",
                    "middle",
                    "end"
                  ]
                },
                {
                  "$ref": "#/definitions/anchorValue"
                }
              ]
            },
            "frame": {
              "oneOf": [
                {
                  "enum": [
                    "group",
                    "bounds"
                  ]
                },
                {
                  "$ref": "#/definitions/stringValue"
                }
              ]
            },
            "offset": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "aria": {
              "type": "boolean"
            },
            "limit": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "zindex": {
              "type": "number"
            },
            "align": {
              "oneOf": [
                {
                  "enum": [
                    "left",
                    "right",
                    "center"
                  ]
                },
                {
                  "$ref": "#/definitions/alignValue"
                }
              ]
            },
            "angle": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "baseline": {
              "oneOf": [
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom",
                    "alphabetic",
                    "line-top",
                    "line-bottom"
                  ]
                },
                {
                  "$ref": "#/definitions/baselineValue"
                }
              ]
            },
            "dx": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "dy": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "text": {
              "$ref": "#/definitions/textOrSignal"
            },
            "color": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/colorValue"
                }
              ]
            },
            "font": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/stringValue"
                }
              ]
            },
            "fontSize": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "fontStyle": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/stringValue"
                }
              ]
            },
            "fontWeight": {
              "oneOf": [
                {
                  "enum": [
                    null,
                    "normal",
                    "bold",
                    "lighter",
                    "bolder",
                    "100",
                    "200",
                    "300",
                    "400",
                    "500",
                    "600",
                    "700",
                    "800",
                    "900",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                {
                  "$ref": "#/definitions/fontWeightValue"
                }
              ]
            },
            "lineHeight": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "subtitle": {
              "$ref": "#/definitions/textOrSignal"
            },
            "subtitleColor": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/colorValue"
                }
              ]
            },
            "subtitleFont": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/stringValue"
                }
              ]
            },
            "subtitleFontSize": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "subtitleFontStyle": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/stringValue"
                }
              ]
            },
            "subtitleFontWeight": {
              "oneOf": [
                {
                  "enum": [
                    null,
                    "normal",
                    "bold",
                    "lighter",
                    "bolder",
                    "100",
                    "200",
                    "300",
                    "400",
                    "500",
                    "600",
                    "700",
                    "800",
                    "900",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                {
                  "$ref": "#/definitions/fontWeightValue"
                }
              ]
            },
            "subtitleLineHeight": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/definitions/numberValue"
                }
              ]
            },
            "subtitlePadding": {
              "$ref": "#/definitions/numberOrSignal"
            },
            "encode": {
              "anyOf": [
                {
                  "type": "object",
                  "additionalProperties": false,
                  "patternProperties": {
                    "^(?!interactive|name|style).+$": {
                      "$ref": "#/definitions/encodeEntry"
                    }
                  }
                },
                {
                  "type": "object",
                  "properties": {
                    "group": {
                      "$ref": "#/definitions/guideEncode"
                    },
                    "title": {
                      "$ref": "#/definitions/guideEncode"
                    },
                    "subtitle": {
                      "$ref": "#/definitions/guideEncode"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "name": {
              "type": "string"
            },
            "interactive": {
              "type": "boolean"
            },
            "style": {
              "$ref": "#/definitions/style"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "transform": {
      "oneOf": [
        {
          "$ref": "#/definitions/crossfilterTransform"
        },
        {
          "$ref": "#/definitions/resolvefilterTransform"
        },
        {
          "$ref": "#/definitions/linkpathTransform"
        },
        {
          "$ref": "#/definitions/pieTransform"
        },
        {
          "$ref": "#/definitions/stackTransform"
        },
        {
          "$ref": "#/definitions/forceTransform"
        },
        {
          "$ref": "#/definitions/contourTransform"
        },
        {
          "$ref": "#/definitions/geojsonTransform"
        },
        {
          "$ref": "#/definitions/geopathTransform"
        },
        {
          "$ref": "#/definitions/geopointTransform"
        },
        {
          "$ref": "#/definitions/geoshapeTransform"
        },
        {
          "$ref": "#/definitions/graticuleTransform"
        },
        {
          "$ref": "#/definitions/heatmapTransform"
        },
        {
          "$ref": "#/definitions/isocontourTransform"
        },
        {
          "$ref": "#/definitions/kde2dTransform"
        },
        {
          "$ref": "#/definitions/nestTransform"
        },
        {
          "$ref": "#/definitions/packTransform"
        },
        {
          "$ref": "#/definitions/partitionTransform"
        },
        {
          "$ref": "#/definitions/stratifyTransform"
        },
        {
          "$ref": "#/definitions/treeTransform"
        },
        {
          "$ref": "#/definitions/treelinksTransform"
        },
        {
          "$ref": "#/definitions/treemapTransform"
        },
        {
          "$ref": "#/definitions/labelTransform"
        },
        {
          "$ref": "#/definitions/loessTransform"
        },
        {
          "$ref": "#/definitions/regressionTransform"
        },
        {
          "$ref": "#/definitions/aggregateTransform"
        },
        {
          "$ref": "#/definitions/binTransform"
        },
        {
          "$ref": "#/definitions/collectTransform"
        },
        {
          "$ref": "#/definitions/countpatternTransform"
        },
        {
          "$ref": "#/definitions/crossTransform"
        },
        {
          "$ref": "#/definitions/densityTransform"
        },
        {
          "$ref": "#/definitions/dotbinTransform"
        },
        {
          "$ref": "#/definitions/extentTransform"
        },
        {
          "$ref": "#/definitions/filterTransform"
        },
        {
          "$ref": "#/definitions/flattenTransform"
        },
        {
          "$ref": "#/definitions/foldTransform"
        },
        {
          "$ref": "#/definitions/formulaTransform"
        },
        {
          "$ref": "#/definitions/imputeTransform"
        },
        {
          "$ref": "#/definitions/joinaggregateTransform"
        },
        {
          "$ref": "#/definitions/kdeTransform"
        },
        {
          "$ref": "#/definitions/lookupTransform"
        },
        {
          "$ref": "#/definitions/pivotTransform"
        },
        {
          "$ref": "#/definitions/projectTransform"
        },
        {
          "$ref": "#/definitions/quantileTransform"
        },
        {
          "$ref": "#/definitions/sampleTransform"
        },
        {
          "$ref": "#/definitions/sequenceTransform"
        },
        {
          "$ref": "#/definitions/timeunitTransform"
        },
        {
          "$ref": "#/definitions/windowTransform"
        },
        {
          "$ref": "#/definitions/identifierTransform"
        },
        {
          "$ref": "#/definitions/voronoiTransform"
        },
        {
          "$ref": "#/definitions/wordcloudTransform"
        }
      ]
    },
    "transformMark": {
      "oneOf": [
        {
          "$ref": "#/definitions/crossfilterTransform"
        },
        {
          "$ref": "#/definitions/resolvefilterTransform"
        },
        {
          "$ref": "#/definitions/linkpathTransform"
        },
        {
          "$ref": "#/definitions/pieTransform"
        },
        {
          "$ref": "#/definitions/stackTransform"
        },
        {
          "$ref": "#/definitions/forceTransform"
        },
        {
          "$ref": "#/definitions/geojsonTransform"
        },
        {
          "$ref": "#/definitions/geopathTransform"
        },
        {
          "$ref": "#/definitions/geopointTransform"
        },
        {
          "$ref": "#/definitions/geoshapeTransform"
        },
        {
          "$ref": "#/definitions/heatmapTransform"
        },
        {
          "$ref": "#/definitions/packTransform"
        },
        {
          "$ref": "#/definitions/partitionTransform"
        },
        {
          "$ref": "#/definitions/stratifyTransform"
        },
        {
          "$ref": "#/definitions/treeTransform"
        },
        {
          "$ref": "#/definitions/treemapTransform"
        },
        {
          "$ref": "#/definitions/labelTransform"
        },
        {
          "$ref": "#/definitions/binTransform"
        },
        {
          "$ref": "#/definitions/collectTransform"
        },
        {
          "$ref": "#/definitions/dotbinTransform"
        },
        {
          "$ref": "#/definitions/extentTransform"
        },
        {
          "$ref": "#/definitions/formulaTransform"
        },
        {
          "$ref": "#/definitions/joinaggregateTransform"
        },
        {
          "$ref": "#/definitions/lookupTransform"
        },
        {
          "$ref": "#/definitions/sampleTransform"
        },
        {
          "$ref": "#/definitions/timeunitTransform"
        },
        {
          "$ref": "#/definitions/windowTransform"
        },
        {
          "$ref": "#/definitions/identifierTransform"
        },
        {
          "$ref": "#/definitions/voronoiTransform"
        },
        {
          "$ref": "#/definitions/wordcloudTransform"
        }
      ]
    },
    "crossfilterTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "crossfilter"
          ]
        },
        "signal": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "query": {
          "oneOf": [
            {
              "type": "array",
              "items": {}
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        }
      },
      "required": [
        "type",
        "fields",
        "query"
      ],
      "additionalProperties": false
    },
    "resolvefilterTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "resolvefilter"
          ]
        },
        "signal": {
          "type": "string"
        },
        "ignore": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "filter": {}
      },
      "required": [
        "type",
        "ignore",
        "filter"
      ],
      "additionalProperties": false
    },
    "linkpathTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "linkpath"
          ]
        },
        "signal": {
          "type": "string"
        },
        "sourceX": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ],
          "default": "source.x"
        },
        "sourceY": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ],
          "default": "source.y"
        },
        "targetX": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ],
          "default": "target.x"
        },
        "targetY": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ],
          "default": "target.y"
        },
        "orient": {
          "anyOf": [
            {
              "enum": [
                "horizontal",
                "vertical",
                "radial"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "vertical"
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "line",
                "arc",
                "curve",
                "diagonal",
                "orthogonal"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "line"
        },
        "require": {
          "$ref": "#/definitions/signalRef"
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "path"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "pieTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "pie"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "startAngle": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "endAngle": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 6.283185307179586
        },
        "sort": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "startAngle",
            "endAngle"
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "stackTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "stack"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "sort": {
          "$ref": "#/definitions/compare"
        },
        "offset": {
          "anyOf": [
            {
              "enum": [
                "zero",
                "center",
                "normalize"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "zero"
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "y0",
            "y1"
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "forceTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "force"
          ]
        },
        "signal": {
          "type": "string"
        },
        "static": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "restart": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "iterations": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 300
        },
        "alpha": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 1
        },
        "alphaMin": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 0.001
        },
        "alphaTarget": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "velocityDecay": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 0.4
        },
        "forces": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "center"
                    ]
                  },
                  "x": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      }
                    ]
                  },
                  "y": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      }
                    ]
                  }
                },
                "required": [
                  "force"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "collide"
                    ]
                  },
                  "radius": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "$ref": "#/definitions/expr"
                      },
                      {
                        "$ref": "#/definitions/paramField"
                      }
                    ]
                  },
                  "strength": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      }
                    ],
                    "default": 0.7
                  },
                  "iterations": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      }
                    ],
                    "default": 1
                  }
                },
                "required": [
                  "force"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "nbody"
                    ]
                  },
                  "strength": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "$ref": "#/definitions/expr"
                      },
                      {
                        "$ref": "#/definitions/paramField"
                      }
                    ],
                    "default": -30
                  },
                  "theta": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      }
                    ],
                    "default": 0.9
                  },
                  "distanceMin": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      }
                    ],
                    "default": 1
                  },
                  "distanceMax": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      }
                    ]
                  }
                },
                "required": [
                  "force"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "link"
                    ]
                  },
                  "links": {
                    "type": "string"
                  },
                  "id": {
                    "oneOf": [
                      {
                        "$ref": "#/definitions/scaleField"
                      },
                      {
                        "$ref": "#/definitions/paramField"
                      },
                      {
                        "$ref": "#/definitions/expr"
                      }
                    ]
                  },
                  "distance": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "$ref": "#/definitions/expr"
                      },
                      {
                        "$ref": "#/definitions/paramField"
                      }
                    ],
                    "default": 30
                  },
                  "strength": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      },
                      {
                        "$ref": "#/definitions/expr"
                      },
                      {
                        "$ref": "#/definitions/paramField"
                      }
                    ]
                  },
                  "iterations": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      }
                    ],
                    "default": 1
                  }
                },
                "required": [
                  "force"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "x"
                    ]
                  },
                  "strength": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      }
                    ],
                    "default": 0.1
                  },
                  "x": {
                    "oneOf": [
                      {
                        "$ref": "#/definitions/scaleField"
                      },
                      {
                        "$ref": "#/definitions/paramField"
                      },
                      {
                        "$ref": "#/definitions/expr"
                      }
                    ]
                  }
                },
                "required": [
                  "force"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "y"
                    ]
                  },
                  "strength": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/definitions/signalRef"
                      }
                    ],
                    "default": 0.1
                  },
                  "y": {
                    "oneOf": [
                      {
                        "$ref": "#/definitions/scaleField"
                      },
                      {
                        "$ref": "#/definitions/paramField"
                      },
                      {
                        "$ref": "#/definitions/expr"
                      }
                    ]
                  }
                },
                "required": [
                  "force"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "x",
            "y",
            "vx",
            "vy"
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "contourTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "contour"
          ]
        },
        "signal": {
          "type": "string"
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "values": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "x": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "y": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "weight": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "cellSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "bandwidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "count": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "nice": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "thresholds": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "smooth": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": true
        }
      },
      "required": [
        "type",
        "size"
      ],
      "additionalProperties": false
    },
    "geojsonTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "geojson"
          ]
        },
        "signal": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "geojson": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "geopathTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "geopath"
          ]
        },
        "signal": {
          "type": "string"
        },
        "projection": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "pointRadius": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ]
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "path"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "geopointTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "geopoint"
          ]
        },
        "signal": {
          "type": "string"
        },
        "projection": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "x",
            "y"
          ]
        }
      },
      "required": [
        "type",
        "projection",
        "fields"
      ],
      "additionalProperties": false
    },
    "geoshapeTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "geoshape"
          ]
        },
        "signal": {
          "type": "string"
        },
        "projection": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ],
          "default": "datum"
        },
        "pointRadius": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ]
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "shape"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "graticuleTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "graticule"
          ]
        },
        "signal": {
          "type": "string"
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {},
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "extentMajor": {
          "oneOf": [
            {
              "type": "array",
              "items": {},
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "extentMinor": {
          "oneOf": [
            {
              "type": "array",
              "items": {},
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "step": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "stepMajor": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            90,
            360
          ]
        },
        "stepMinor": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            10,
            10
          ]
        },
        "precision": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 2.5
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "heatmapTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "heatmap"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "color": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ]
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ]
        },
        "resolve": {
          "anyOf": [
            {
              "enum": [
                "shared",
                "independent"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "independent"
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "image"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "isocontourTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "isocontour"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "thresholds": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "levels": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "nice": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "resolve": {
          "anyOf": [
            {
              "enum": [
                "shared",
                "independent"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "independent"
        },
        "zero": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": true
        },
        "smooth": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": true
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ]
        },
        "translate": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "type": "null"
            }
          ],
          "default": "contour"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "kde2dTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "kde2d"
          ]
        },
        "signal": {
          "type": "string"
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "x": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "y": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "weight": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "cellSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "bandwidth": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "counts": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "grid"
        }
      },
      "required": [
        "type",
        "size",
        "x",
        "y"
      ],
      "additionalProperties": false
    },
    "nestTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "nest"
          ]
        },
        "signal": {
          "type": "string"
        },
        "keys": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "generate": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "packTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "pack"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "sort": {
          "$ref": "#/definitions/compare"
        },
        "padding": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "radius": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 5,
              "minItems": 5
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "x",
            "y",
            "r",
            "depth",
            "children"
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "partitionTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "partition"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "sort": {
          "$ref": "#/definitions/compare"
        },
        "padding": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "round": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 6,
              "minItems": 6
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "x0",
            "y0",
            "x1",
            "y1",
            "depth",
            "children"
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "stratifyTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "stratify"
          ]
        },
        "signal": {
          "type": "string"
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "parentKey": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        }
      },
      "required": [
        "type",
        "key",
        "parentKey"
      ],
      "additionalProperties": false
    },
    "treeTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "tree"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "sort": {
          "$ref": "#/definitions/compare"
        },
        "method": {
          "anyOf": [
            {
              "enum": [
                "tidy",
                "cluster"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "tidy"
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "nodeSize": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "separation": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": true
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 4,
              "minItems": 4
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "x",
            "y",
            "depth",
            "children"
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "treelinksTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "treelinks"
          ]
        },
        "signal": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "treemapTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "treemap"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "sort": {
          "$ref": "#/definitions/compare"
        },
        "method": {
          "anyOf": [
            {
              "enum": [
                "squarify",
                "resquarify",
                "binary",
                "dice",
                "slice",
                "slicedice"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "squarify"
        },
        "padding": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "paddingInner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "paddingOuter": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "paddingTop": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "paddingRight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "paddingBottom": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "paddingLeft": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "ratio": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 1.618033988749895
        },
        "round": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 6,
              "minItems": 6
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "x0",
            "y0",
            "x1",
            "y1",
            "depth",
            "children"
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "labelTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "label"
          ]
        },
        "signal": {
          "type": "string"
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "sort": {
          "$ref": "#/definitions/compare"
        },
        "anchor": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "top-left",
            "left",
            "bottom-left",
            "top",
            "bottom",
            "top-right",
            "right",
            "bottom-right"
          ]
        },
        "offset": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            1
          ]
        },
        "padding": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "type": "null"
            }
          ]
        },
        "lineAnchor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "end"
        },
        "markIndex": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "avoidBaseMark": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": true
        },
        "avoidMarks": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "method": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "naive"
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 5,
              "minItems": 5
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "x",
            "y",
            "opacity",
            "align",
            "baseline"
          ]
        }
      },
      "required": [
        "type",
        "size"
      ],
      "additionalProperties": false
    },
    "loessTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "loess"
          ]
        },
        "signal": {
          "type": "string"
        },
        "x": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "y": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "bandwidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 0.3
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        }
      },
      "required": [
        "type",
        "x",
        "y"
      ],
      "additionalProperties": false
    },
    "regressionTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "regression"
          ]
        },
        "signal": {
          "type": "string"
        },
        "x": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "y": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "method": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "linear"
        },
        "order": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 3
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "params": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        }
      },
      "required": [
        "type",
        "x",
        "y"
      ],
      "additionalProperties": false
    },
    "aggregateTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "aggregate"
          ]
        },
        "signal": {
          "type": "string"
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "ops": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "enum": [
                      "values",
                      "count",
                      "missing",
                      "valid",
                      "sum",
                      "product",
                      "mean",
                      "average",
                      "variance",
                      "variancep",
                      "stdev",
                      "stdevp",
                      "stderr",
                      "distinct",
                      "ci0",
                      "ci1",
                      "median",
                      "q1",
                      "q3",
                      "min",
                      "max",
                      "argmin",
                      "argmax",
                      "exponential",
                      "exponentialb"
                    ]
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "aggregate_params": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "drop": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": true
        },
        "cross": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "binTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "bin"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "interval": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": true
        },
        "anchor": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "maxbins": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 20
        },
        "base": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 10
        },
        "divide": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            5,
            2
          ]
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "span": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "step": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "steps": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "minstep": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "nice": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": true
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "bin0",
            "bin1"
          ]
        }
      },
      "required": [
        "type",
        "field",
        "extent"
      ],
      "additionalProperties": false
    },
    "collectTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "collect"
          ]
        },
        "signal": {
          "type": "string"
        },
        "sort": {
          "$ref": "#/definitions/compare"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "countpatternTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "countpattern"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "case": {
          "anyOf": [
            {
              "enum": [
                "upper",
                "lower",
                "mixed"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "mixed"
        },
        "pattern": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "[\\w\"]+"
        },
        "stopwords": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "text",
            "count"
          ]
        }
      },
      "required": [
        "type",
        "field"
      ],
      "additionalProperties": false
    },
    "crossTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "cross"
          ]
        },
        "signal": {
          "type": "string"
        },
        "filter": {
          "$ref": "#/definitions/exprString"
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "a",
            "b"
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "densityTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "density"
          ]
        },
        "signal": {
          "type": "string"
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "steps": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "minsteps": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 25
        },
        "maxsteps": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 200
        },
        "method": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "pdf"
        },
        "distribution": {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "function": {
                  "enum": [
                    "normal"
                  ]
                },
                "mean": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ]
                },
                "stdev": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ],
                  "default": 1
                }
              },
              "required": [
                "function"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "function": {
                  "enum": [
                    "lognormal"
                  ]
                },
                "mean": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ]
                },
                "stdev": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ],
                  "default": 1
                }
              },
              "required": [
                "function"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "function": {
                  "enum": [
                    "uniform"
                  ]
                },
                "min": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ]
                },
                "max": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ],
                  "default": 1
                }
              },
              "required": [
                "function"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "function": {
                  "enum": [
                    "kde"
                  ]
                },
                "field": {
                  "oneOf": [
                    {
                      "$ref": "#/definitions/scaleField"
                    },
                    {
                      "$ref": "#/definitions/paramField"
                    },
                    {
                      "$ref": "#/definitions/expr"
                    }
                  ]
                },
                "from": {
                  "type": "string"
                },
                "bandwidth": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ]
                }
              },
              "required": [
                "function",
                "field"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "function": {
                  "enum": [
                    "mixture"
                  ]
                },
                "distributions": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {}
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ]
                },
                "weights": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/definitions/signalRef"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/definitions/signalRef"
                    }
                  ]
                }
              },
              "required": [
                "function"
              ],
              "additionalProperties": false
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "value",
            "density"
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "dotbinTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "dotbin"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "step": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "smooth": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "bin"
        }
      },
      "required": [
        "type",
        "field"
      ],
      "additionalProperties": false
    },
    "extentTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "extent"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        }
      },
      "required": [
        "type",
        "field"
      ],
      "additionalProperties": false
    },
    "filterTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "filter"
          ]
        },
        "signal": {
          "type": "string"
        },
        "expr": {
          "$ref": "#/definitions/exprString"
        }
      },
      "required": [
        "type",
        "expr"
      ],
      "additionalProperties": false
    },
    "flattenTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "flatten"
          ]
        },
        "signal": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "index": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        }
      },
      "required": [
        "type",
        "fields"
      ],
      "additionalProperties": false
    },
    "foldTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "fold"
          ]
        },
        "signal": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "key",
            "value"
          ]
        }
      },
      "required": [
        "type",
        "fields"
      ],
      "additionalProperties": false
    },
    "formulaTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "formula"
          ]
        },
        "signal": {
          "type": "string"
        },
        "expr": {
          "$ref": "#/definitions/exprString"
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "initonly": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        }
      },
      "required": [
        "type",
        "expr",
        "as"
      ],
      "additionalProperties": false
    },
    "imputeTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "impute"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "keyvals": {
          "oneOf": [
            {
              "type": "array",
              "items": {}
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "method": {
          "anyOf": [
            {
              "enum": [
                "value",
                "mean",
                "median",
                "max",
                "min"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "value"
        },
        "value": {}
      },
      "required": [
        "type",
        "field",
        "key"
      ],
      "additionalProperties": false
    },
    "joinaggregateTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "joinaggregate"
          ]
        },
        "signal": {
          "type": "string"
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "ops": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "enum": [
                      "values",
                      "count",
                      "missing",
                      "valid",
                      "sum",
                      "product",
                      "mean",
                      "average",
                      "variance",
                      "variancep",
                      "stdev",
                      "stdevp",
                      "stderr",
                      "distinct",
                      "ci0",
                      "ci1",
                      "median",
                      "q1",
                      "q3",
                      "min",
                      "max",
                      "argmin",
                      "argmax",
                      "exponential",
                      "exponentialb"
                    ]
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "kdeTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "kde"
          ]
        },
        "signal": {
          "type": "string"
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "cumulative": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "counts": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "bandwidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "resolve": {
          "anyOf": [
            {
              "enum": [
                "shared",
                "independent"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "independent"
        },
        "steps": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "minsteps": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 25
        },
        "maxsteps": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 200
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "value",
            "density"
          ]
        }
      },
      "required": [
        "type",
        "field"
      ],
      "additionalProperties": false
    },
    "lookupTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "lookup"
          ]
        },
        "signal": {
          "type": "string"
        },
        "from": {
          "type": "string"
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "values": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "default": {}
      },
      "required": [
        "type",
        "from",
        "key",
        "fields"
      ],
      "additionalProperties": false
    },
    "pivotTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "pivot"
          ]
        },
        "signal": {
          "type": "string"
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "value": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "op": {
          "anyOf": [
            {
              "enum": [
                "values",
                "count",
                "missing",
                "valid",
                "sum",
                "product",
                "mean",
                "average",
                "variance",
                "variancep",
                "stdev",
                "stdevp",
                "stderr",
                "distinct",
                "ci0",
                "ci1",
                "median",
                "q1",
                "q3",
                "min",
                "max",
                "argmin",
                "argmax",
                "exponential",
                "exponentialb"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "sum"
        },
        "limit": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        }
      },
      "required": [
        "type",
        "field",
        "value"
      ],
      "additionalProperties": false
    },
    "projectTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "project"
          ]
        },
        "signal": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "quantileTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "quantile"
          ]
        },
        "signal": {
          "type": "string"
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "probs": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "step": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 0.01
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "prob",
            "value"
          ]
        }
      },
      "required": [
        "type",
        "field"
      ],
      "additionalProperties": false
    },
    "sampleTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "sample"
          ]
        },
        "signal": {
          "type": "string"
        },
        "size": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 1000
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "sequenceTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "sequence"
          ]
        },
        "signal": {
          "type": "string"
        },
        "start": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "stop": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "step": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 1
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "data"
        }
      },
      "required": [
        "type",
        "start",
        "stop"
      ],
      "additionalProperties": false
    },
    "timeunitTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "timeunit"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "interval": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": true
        },
        "units": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "enum": [
                      "year",
                      "quarter",
                      "month",
                      "week",
                      "date",
                      "day",
                      "dayofyear",
                      "hours",
                      "minutes",
                      "seconds",
                      "milliseconds"
                    ]
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "step": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 1
        },
        "maxbins": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": 40
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "timezone": {
          "anyOf": [
            {
              "enum": [
                "local",
                "utc"
              ]
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "local"
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "unit0",
            "unit1"
          ]
        }
      },
      "required": [
        "type",
        "field"
      ],
      "additionalProperties": false
    },
    "windowTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "window"
          ]
        },
        "signal": {
          "type": "string"
        },
        "sort": {
          "$ref": "#/definitions/compare"
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "ops": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "enum": [
                      "row_number",
                      "rank",
                      "dense_rank",
                      "percent_rank",
                      "cume_dist",
                      "ntile",
                      "lag",
                      "lead",
                      "first_value",
                      "last_value",
                      "nth_value",
                      "prev_value",
                      "next_value",
                      "values",
                      "count",
                      "missing",
                      "valid",
                      "sum",
                      "product",
                      "mean",
                      "average",
                      "variance",
                      "variancep",
                      "stdev",
                      "stdevp",
                      "stderr",
                      "distinct",
                      "ci0",
                      "ci1",
                      "median",
                      "q1",
                      "q3",
                      "min",
                      "max",
                      "argmin",
                      "argmax",
                      "exponential",
                      "exponentialb"
                    ]
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "params": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "aggregate_params": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/scaleField"
                  },
                  {
                    "$ref": "#/definitions/paramField"
                  },
                  {
                    "$ref": "#/definitions/expr"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "frame": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            null,
            0
          ]
        },
        "ignorePeers": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "identifierTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "identifier"
          ]
        },
        "signal": {
          "type": "string"
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        }
      },
      "required": [
        "type",
        "as"
      ],
      "additionalProperties": false
    },
    "voronoiTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "voronoi"
          ]
        },
        "signal": {
          "type": "string"
        },
        "x": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "y": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {},
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            [
              -100000,
              -100000
            ],
            [
              100000,
              100000
            ]
          ]
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": "path"
        }
      },
      "required": [
        "type",
        "x",
        "y"
      ],
      "additionalProperties": false
    },
    "wordcloudTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "wordcloud"
          ]
        },
        "signal": {
          "type": "string"
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "font": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ],
          "default": "sans-serif"
        },
        "fontStyle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ],
          "default": "normal"
        },
        "fontWeight": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ],
          "default": "normal"
        },
        "fontSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ],
          "default": 14
        },
        "fontSizeRange": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              }
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "type": "null"
            }
          ],
          "default": [
            10,
            50
          ]
        },
        "rotate": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ]
        },
        "text": {
          "oneOf": [
            {
              "$ref": "#/definitions/scaleField"
            },
            {
              "$ref": "#/definitions/paramField"
            },
            {
              "$ref": "#/definitions/expr"
            }
          ]
        },
        "spiral": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ]
        },
        "padding": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/signalRef"
            },
            {
              "$ref": "#/definitions/expr"
            },
            {
              "$ref": "#/definitions/paramField"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/signalRef"
                  }
                ]
              },
              "maxItems": 7,
              "minItems": 7
            },
            {
              "$ref": "#/definitions/signalRef"
            }
          ],
          "default": [
            "x",
            "y",
            "font",
            "fontSize",
            "fontStyle",
            "fontWeight",
            "angle"
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    }
  },
  "type": "object",
  "allOf": [
    {
      "$ref": "#/definitions/scope"
    },
    {
      "properties": {
        "$schema": {
          "type": "string",
          "format": "uri"
        },
        "config": {
          "type": "object"
        },
        "description": {
          "type": "string"
        },
        "width": {
          "$ref": "#/definitions/numberOrSignal"
        },
        "height": {
          "$ref": "#/definitions/numberOrSignal"
        },
        "padding": {
          "$ref": "#/definitions/padding"
        },
        "autosize": {
          "$ref": "#/definitions/autosize"
        },
        "background": {
          "$ref": "#/definitions/background"
        },
        "style": {
          "$ref": "#/definitions/style"
        }
      }
    }
  ]
}